Add credential helper and docs for pushing to Amazon ECR
This commit is contained in:
		
							parent
							
								
									c2516b4dcf
								
							
						
					
					
						commit
						8d3731a984
					
				
							
								
								
									
										52
									
								
								README.md
								
								
								
								
							
							
						
						
									
										52
									
								
								README.md
								
								
								
								
							|  | @ -142,8 +142,58 @@ To run kaniko in Docker, run the following command: | |||
| 
 | ||||
| kaniko uses Docker credential helpers to push images to a registry. | ||||
| 
 | ||||
| kaniko comes with support for GCR, but configuring another credential helper should allow pushing to a different registry. | ||||
| kaniko comes with support for GCR and Amazon ECR, but configuring another credential helper should allow pushing to a different registry. | ||||
| 
 | ||||
| #### Pushing to Amazon ECR | ||||
| The Amazon ECR [credential helper](https://github.com/awslabs/amazon-ecr-credential-helper) is built in to the kaniko executor image. | ||||
| To configure credentials, you will need to do the following: | ||||
| 1. Update the `credHelpers` section of [config.json](https://github.com/GoogleContainerTools/kaniko/blob/master/files/config.json) with the specific URI of your ECR registry: | ||||
| ```json | ||||
| { | ||||
| 	"credHelpers": { | ||||
| 		"aws_account_id.dkr.ecr.region.amazonaws.com": "ecr-login" | ||||
| 	} | ||||
| } | ||||
| ``` | ||||
| You can mount in the new config as a configMap: | ||||
| ```shell | ||||
| kubectl create configmap docker-config --from-file=<path to config.json> | ||||
| ``` | ||||
| 2. Create a Kubernetes secret for your `~/.aws/credentials` file so that credentials can be accessed within the cluster. | ||||
| To create the secret, run: | ||||
| 
 | ||||
| ```shell | ||||
| kubectl create secret generic aws-secret --from-file=<path to .aws/credentials> | ||||
| ``` | ||||
| 
 | ||||
| The Kubernetes Pod spec should look similar to this, with the args parameters filled in: | ||||
| 
 | ||||
| ```yaml | ||||
| apiVersion: v1 | ||||
| kind: Pod | ||||
| metadata: | ||||
|   name: kaniko | ||||
| spec: | ||||
|   containers: | ||||
|   - name: kaniko | ||||
|     image: gcr.io/kaniko-project/executor:latest | ||||
|     args: ["--dockerfile=<path to Dockerfile>", | ||||
|             "--context=<path to build context>", | ||||
|             "--destination=<aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:my-tag>"] | ||||
|     volumeMounts: | ||||
|       - name: aws-secret | ||||
|         mountPath: /root/.aws/ | ||||
|       - name: docker-config | ||||
|         mountPath: /root/.docker/ | ||||
|   restartPolicy: Never | ||||
|   volumes: | ||||
|     - name: aws-secret | ||||
|       secret: | ||||
|         secretName: aws-secret | ||||
|     - name: docker-config | ||||
|       configMap: | ||||
|         name: docker-config | ||||
| ``` | ||||
| ### Debug Image | ||||
| 
 | ||||
| We provide `gcr.io/kaniko-project/executor:debug` as a a version of the executor image based off a Debian image.  | ||||
|  |  | |||
|  | @ -21,10 +21,15 @@ RUN make | |||
| WORKDIR /usr/local/bin | ||||
| ADD https://github.com/GoogleCloudPlatform/docker-credential-gcr/releases/download/v1.4.3-static/docker-credential-gcr_linux_amd64-1.4.3.tar.gz . | ||||
| RUN tar -xvzf /usr/local/bin/docker-credential-gcr_linux_amd64-1.4.3.tar.gz | ||||
| # Get Amazon ECR credential helper | ||||
| RUN go get -u github.com/awslabs/amazon-ecr-credential-helper/ecr-login/cli/docker-credential-ecr-login | ||||
| WORKDIR /go/src/github.com/awslabs/amazon-ecr-credential-helper | ||||
| RUN make linux-amd64 | ||||
| 
 | ||||
| FROM scratch | ||||
| COPY --from=0 /go/src/github.com/GoogleContainerTools/kaniko/out/executor /kaniko/executor | ||||
| COPY --from=0 /usr/local/bin/docker-credential-gcr /usr/local/bin/docker-credential-gcr | ||||
| COPY --from=0 /go/src/github.com/awslabs/amazon-ecr-credential-helper/bin/linux-amd64/ /usr/local/bin/ | ||||
| COPY files/ca-certificates.crt /kaniko/ssl/certs/ | ||||
| COPY files/config.json /root/.docker/ | ||||
| RUN ["docker-credential-gcr", "config", "--token-source=env"] | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue