Docker-for-desktop kubernetes 从私有仓库拉取镜像

Docker-for-desktop kubernetes pull image from private repository

我是 kubernetes 和 GCP 的新手。我正在尝试在本地部署。我有一张图片,它位于 Google 注册表的私人存储库中。

我能够在 GCP 集群中进行部署,但是当我尝试应用部署时在本地出现 ErrImagePull

我尝试了以下步骤

  1. 创建了角色 ViewerService Account 并下载了 json 文件

  2. 我用下面的命令对文件进行了编码openssl base64 -in file.json -out encodedfile.json

  3. 我删除了编码文件中的return个字符(使编码内容在一行中)

  4. 我用 yaml 创建了一个秘密,以便能够访问 docker 注册表,并将编码文件的内容粘贴到 .dockerconfigjson

    api版本:v1 种类:秘密 元数据: 名称:gcr-json-key 命名空间:发展 数据: .docker配置json: xxxxx 类型:kubernetes.io/dockerconfigjson

  5. 在我添加的部署中

    imagePullSecrets:

    • 名称:gcr-json-key

我遇到了同样的错误,它无法从私有 google 注册表中拉入我的本地机器


更新 1

我用这个命令编码了 json 文件

base64 -i myorg-8b8eea93246a.json -o encoded-myorg-8b8eea93246a.json

然后我检查了这个编码文件是否有效

cat encoded-myorg-8b8eea93246a.json | docker login -u _json_key_base64 --password-stdin \
https://us-docker.pkg.dev

成功了

Login Succeeded

这是我用来创建秘密的 yaml 文件

apiVersion: v1
kind: Secret
metadata:
  name: gcr-json-key
  namespace: development
data:
  .dockerconfigjson: <XXXX content of encoded myorg-8b8eea93246a.json file XXXX>
type: kubernetes.io/dockerconfigjson

在部署中我有

...
spec:
  ...
  imagePullSecrets:
  - name: gcr-json-key
...

已创建部署但未拉取映像。在 kubectl get all 我可以看到状态 ImagePullBackOff

当我对 pod 进行描述时

Failed to pull image "gcr.io/xxx/yyy": rpc error: code = Unknown desc = Error response from daemon: unauthorized: You don't have the needed permissions to perform this operation, and you may have invalid credentials.

你走在正确的道路上。您需要为注册表登录创建密码。这对我有用:

kubectl create secret docker-registry <secret_name> --docker-server=<your.registry.domain.name> --docker-username=<user> --docker-password=<password> --docker-email=<your_email>

然后我使用这个秘密进行部署:

spec:
  replicas: 1
  strategy: 
    type: Recreate
  template:
    metadata:
      creationTimestamp: null
      labels:
        io.kompose.service: server
    spec:
      imagePullSecrets:
        - name: <secret_name>