Unable to deploy docker image on Kind cluster using helm chart

113 Views Asked by At

I created a local registry localhost:5001 and created a docker image localhost:5001/example and pushed to the local registry. I was deploying the docker image onto KinD cluster using helm chart. snapshots of values.yml:

image:
  repository: localhost:5001/example
  pullPolicy: Always
  tag: "latest" 

service:
  type: NodePort
  port: 31236
  targetPort: 8087

helm install emp2 emp2-ch gives this error on the cluster

Failed to pull image "localhost:5001/example:latest": rpc error: code = Unknown desc = failed to pull and unpack image "localhost:5001/example:latest": failed to resolve reference "localhost:5001/example:latest": unexpected status from HEAD request to http://kind-registry:5000/v2/example/manifests/latest?ns=localhost%3A5001: 504 Unknown Host

I created the cluster and registry using this script:

#!/bin/sh
set -o errexit
 
# create registry container unless it already exists
reg_name='kind-registry'
reg_port='5001'
if [ "$(docker inspect -f '{{.State.Running}}' "${reg_name}" 2>/dev/null || true)" != 'true' ]; then
  docker run \
    -d --restart=always -p "127.0.0.1:${reg_port}:5000" --name "${reg_name}" \
    registry:2
fi
 
# create a cluster with the local registry enabled in containerd
cat <<EOF | kind create cluster --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: example
networking:
  ipFamily: dual
nodes:
- role: control-plane
  extraPortMappings:
  - containerPort: 30001
    hostPort: 30001
    listenAddress: "0.0.0.0"
    protocol: tcp
- role: worker
- role: worker
containerdConfigPatches:
- |-
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."localhost:${reg_port}"]
    endpoint = ["http://${reg_name}:5000"]
EOF
 
# connect the registry to the cluster network if not already connected
if [ "$(docker inspect -f='{{json .NetworkSettings.Networks.kind}}' "${reg_name}")" = 'null' ]; then
  docker network connect "kind" "${reg_name}"
fi
 
# Document the local registry
# https://github.com/kubernetes/enhancements/tree/master/keps/sig-cluster-lifecycle/generic/1755-communicating-a-local-registry
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
  name: local-registry-hosting
  namespace: kube-public
data:
  localRegistryHosting.v1: |
    host: "localhost:${reg_port}"
    help: "https://kind.sigs.k8s.io/docs/user/local-registry/"
EOF
1

There are 1 best solutions below

0
iamwillbin On

This could be due to the registry not being accessible from the KinD cluster. You can use docker inspect to check the network settings of the registry container and verify that it is connected to the kind network cluster.

Check also if the registry's hostname is resolvable from the kind cluster due to 504 error suggesting a network configuration issue.