DEV Community

Julian Cantillo
Julian Cantillo

Posted on • Originally published at cantillo.dev on

Kubernetes setup Dockerhub secret

When a Kubernete's pod or deployment pull the container image, the easiest way is to host the image in Dockerhub. However, sometimes you need to host the image in a private registry, therefore, you need to create a secret in Kubernetes to store the credentials and enable the pod to pull the image from the private registry.

Step 1: Create a secret

Using the kubectl command, create a secret as follows:

kubectl create secret generic dockerhub \ --from-file=.dockerconfigjson=~/.docker/config.json \ --type=kubernetes.io/dockerconfigjson 
Enter fullscreen mode Exit fullscreen mode

The create secret command creates a secret with the name dockerhub and the type kubernetes.io/dockerconfigjson. The --from-file flag specifies that the secret should be created from the file .dockerconfigjson in the home directory of the user, and, the kubernetes.io/dockerconfigjson type is used to specify that the secret is in the format of a Docker configuration file.

Step 2: Specify the secret in the Pod definition

In the spec section of the Pod definition, add the following lines:

imagePullSecrets: - name: dockerhub 
Enter fullscreen mode Exit fullscreen mode

The imagePullSecrets field specifies that the pod should use the secret to pull the image from the private registry. The name field specifies the name of the secret. A complete example of the Pod definition is shown below:

--- apiVersion: v1 kind: Pod metadata: name: my-app spec: containers: - name: my-app-container image: my-docker-hub-user/my-app-image imagePullSecrets: - name: dockerhub 
Enter fullscreen mode Exit fullscreen mode

Step 3: Deploy the Pod

The Pod is now ready to be deployed in the Kubernetes cluster using the private image.

kubectl apply -f my-app.yaml 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)