K8s pull image from private Docker registry
Overview
This article will show you how various methods utilizing CloudTruth and KubeTruth to create a Kubernetes Secret type: kubernetes.io/dockerconfigjson that allows you to create pods that use this Secret to pull an image from a private docker registry or repository.
Resolution
Method 1: kubectl apply from a CloudTruth template
run
docker loginbase64 encode your existing dockerfile
base64 /home/$USER/.docker/config.json
Add the config.json base64 encoded string as a CloudTruth parameter
type:secretnamedconfigjsonin a CloudTruth project called K8s.Create a CloudTruth template
regcredand if required customize the yaml to your namespace.apiVersion: v1 kind: Secret metadata: name: myregistrykey data: .dockerconfigjson: {{configjson}} type: kubernetes.io/dockerconfigjson
Run
kubectl apply -f <(cloudtruth --project K8s template get regcred)You can now inspect the secret and use the created secret in pods.
kubectl get secret myregistrykey --output=yaml
Method 2: KubeTruth project mapping override with a base64 encoded Docker configfile
run
docker loginbase64 encode your existing dockerfile
base64 /home/$USER/.docker/config.json
Add the config.json base64 encoded string as a CloudTruth parameter
type:secretnamedconfigjsonin a CloudTruth project calledK8s.Create a KubeTruth override in the namespace where KubeTruth is operating that will automatically create the K8s
kubernetes.io/dockerconfigjsonSecret.You can now inspect the secret and use the created secret in pods.
kubectl get secret docker-reg-cred --output=yaml -n demokubetruth
Method 3: KubeTruth project mapping override with Docker login.
Create a dedicated CloudTruth project named
dockerconfigurethat contains the following docker login keys and values.Create the KubeTruth override below in the namespace where KubeTruth is operating. This will automatically base64 encode and create the K8s
kubernetes.io/dockerconfigjsonSecret based on your docker login and registry information in the CloudTruth project.You can now inspect the secret and use the created secret in pods.
kubectl get secret docker-reg-cred --output=yaml -n demokubetruth
Last updated
Was this helpful?