- A AWS account with a IAM USER
- A AWS Storage account is required for Terraform backend to store the state files.
- A GitHub account
- The Terraform CLI installed locally and working
- A Slack account needs to created and inetgrated with Jenkins Server for sending the notifications.
- A Jenkins Server is ready and runing.
- Install AWS CLI on your Jenkins server
- Install helm on the Jenkins server which is used to deploy the container to the cluster.
- A Terraform tfvars file is required with name production.tfvars
- This is a simple end to end CI/CD project, where we are going to deploy a python application the EKS cluetr.
- The entier process is automated and it would require a couple of integrations.
- You have to configure couple of Jenkins secrets and plugins
- Initailly the jenkins will create a Docker image and push the same to the docker-hub. The repository can be modified
- Once the image pushed Jnekins will update the image tag on the charts values.yaml file and push the same back to the GitHub.
- Once the images has been pushed Jenkins will notify us on the slack
- Now Jenkins will create an EKS cluster on AWS. You need to pass the required parameters like Cluster name, region and so on in the production.tfvars file.
- Jenkins will download the EKS configuratio to locally by calling the tfvars file for the helm deployment.
- Once the deployment is completed and fine deployment on production will be continued after getting successfull approvals.
- Jenkins will notify us deployment status
- git
- slack notifications
- aws cli
- terraform
- SCM credentials (GitHub/SVN) with name "GitHub"
- Repositroy Credentials with name "docker-hub"
- AWS credentials "aws_access_key_id" and "aws_secret_access_key"
- Slack credentials "slacktoken"