A five stage pipeline to provision AWS resources for an EKS cluster and deploy initial containers
- Setting up the Terraform backend to pull state from an S3 bucket. Python script was implemented to automate the copying of local state to S3
- Provisioning the infrastructure using terraform to create the Amazon EKS cluster and deploy worker nodes
- Creating an IAM Policy for the AWS Load Balancer Controller, creating an IAM role with the policy attached and annotate the Kubernetes service account for the AWS Load Balancer Controller
- Installing the AWS Load Balancer Controller using helm
- Deploying the application containers on the Kubernetes
Using GitHub Actions https://github.com/keresifon/pytera/tree/main/.github/workflows
Using Jenkins see Jenkinsfile in main https://github.com/keresifon/pytera
Using Circle CI https://github.com/keresifon/pytera/tree/main/.circleci
Using Gitlab CI https://gitlab.com/keresifon/pytera/-/tree/main
Files to update in prep to run pipeline
variables.tf
- s3_bucket: replace the default name
- db_name : replace the default name
state.txt
- bucket: replace same as s3 bucket name in variables.tf
- key : the file path you want to place the state files in the S3 bucket
- region: your region
- dynamodb_table: replace same as db_name in variables.tf
kubernetes/state.tf
- bucket: replace same as s3 bucket name in variables.tf
- key : the file path you want to place the state files in the S3 bucket (this should be different from what's in state.txt)
- region: your region
- dynamodb_table: replace same as db_name in variables.tf