Note: I will be using an Amazon EKS cluster on AWS and using Amazon ECR for storing images. There will be minor differences for handling other repositories.
In the earlier post we learnt on how to to build a docker image using kubernete plugin in Jenkins on Kuberenetes using kaniko. In this post we will look at how to build a docker image using Img. We will follow the same steps as the earlier post but will have a different pipeline script.
Img can help make your life easier when it comes to building container images.
We will build a Jenkins pipeline that will be responsible for pulling code, building image and pushing image to Amazon ECR.
If you don’t already have Jenkins installed then follow the steps in this post
We will follow the below steps:
- Create a configmap for docker configuration that will use ECR credential helper
- Build a Jenkins pipeline
Step 1: Create a configmap for docker configuration that will use ECR credential helper
Amazon ECR uses AWS IAM authentication to get docker credentials for pushing the images. ECR crdenetial helper makes getting the credentials for pushing images easier. Setting up ECR crdenetial helper for Docker/Kaniko needs a configuration file. Let’s go ahead and create a configuration file.
Create a configmap docker-config.yaml
Replace 123456789498 with your AWS account number.
Run the below command to create the configmap. You must install the configmap in the same namespace where jenkins is installed.
kubectl -n jenkins apply -f docker-config.yaml
Step 2: Create a Jenkins pipeline to build and push the container image
Once you are logged in to Jenkins it’s time to create a new Jenkins pipeline. Follow the steps:
1. Create a New Item
2. Create a new Pipeline
3. Place the pipeline script in the job
Now place the below script in the pipeline script section:
We are using a sample microservice for which we will build an image and push it to ECR. You must also have the 123456789498.dkr.ecr.us-west-2.amazonaws.com/sample-microservice ECR repository created before running this pipeline.
Pay close attention from line 35 to 38 where we are downloading Amazon ECR credential helper and placing it in the container. We did not have to do this with kaniko, as its docker image comes bundled with ecr (and gcr) credential helpers.
Now save the pipeline. You are all set up. Next you can click Build Now link to start the build.
Once the build completes your screen should look like below
and you should have a docker image in your repository:
You are all set !!!
You would want to use img instead of kaniko as jenkins kubernetes plugin is compatible with latest version of img docker image. The best part of img is that it does not need root privileges to build images.
Happy building images!!!