JFrog docker registry 没有在 Kubernetes 中拉取镜像

JFrog docker registry is not pulling images in Kubernetes

我正在使用 JFrog 作为 docker 注册表。

如果我尝试手动拉取一个图像,它会工作,但是当我尝试通过将其包含在 helm chart 和 helm install 命令中进行相同操作时,它会抛出错误:

Error: ImagePullBackOff  
pulling image registry_name/jfrogk8s:1.0 
Failed to pull image registry_name/jfrogk8s:1.0: rpc error: code = Unknown desc = Error response from daemon: Get https://dip-docker-dip.bintray.io/v2/jfrogk8s/manifests/1.0: unauthorized: Unauthorized"

我已将 docker 注册表包含在“/etc/docker/daemon.json”

它清楚地写着 - unauthorized: Unauthorized

即使您确实将 docker registry in "/etc/docker/daemon.json" 放入 kubernetes 环境中,在拉取内部映像时也不会调用 docker 注册表。因此,您需要创建一个 Docker Registry Secret 并稍后在 helm 安装中使用它来告诉 kubernetes 使用此秘密拉取内部图像:

kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>

where:

  • <your-registry-server> is your Private Docker Registry FQDN. (https://index.docker.io/v1/ for DockerHub)

  • <your-name> : is your Docker username.

  • <your-pword>: is your Docker password.
  • <your-email>: is your Docker email.

要验证 docker 注册表密码 regcred 是否已创建,请执行

kubectl get secret regcred --output=yaml

然后在您的 helm 图表中 value.yaml 添加以下行

imagePullSecret: regcred

如果您需要按照 Kuberentes 的方式进行操作,您的 deploy.yaml 将如下所示:

apiVersion: v1
kind: Pod
metadata:
  name: private-reg
spec:
  containers:
  - name: private-reg-container
    image: <your-private-image>
  imagePullSecrets:
  - name: regcred