Docker-for-desktop kubernetes 从私有仓库拉取镜像
Docker-for-desktop kubernetes pull image from private repository
我是 kubernetes 和 GCP 的新手。我正在尝试在本地部署。我有一张图片,它位于 Google 注册表的私人存储库中。
我能够在 GCP 集群中进行部署,但是当我尝试应用部署时在本地出现 ErrImagePull
。
我尝试了以下步骤
创建了角色 Viewer
的 Service Account
并下载了 json 文件
我用下面的命令对文件进行了编码openssl base64 -in file.json -out encodedfile.json
我删除了编码文件中的return个字符(使编码内容在一行中)
我用 yaml 创建了一个秘密,以便能够访问 docker 注册表,并将编码文件的内容粘贴到 .dockerconfigjson
api版本:v1
种类:秘密
元数据:
名称:gcr-json-key
命名空间:发展
数据:
.docker配置json: xxxxx
类型:kubernetes.io/dockerconfigjson
在我添加的部署中
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>
我是 kubernetes 和 GCP 的新手。我正在尝试在本地部署。我有一张图片,它位于 Google 注册表的私人存储库中。
我能够在 GCP 集群中进行部署,但是当我尝试应用部署时在本地出现 ErrImagePull
。
我尝试了以下步骤
创建了角色
Viewer
的Service Account
并下载了 json 文件我用下面的命令对文件进行了编码
openssl base64 -in file.json -out encodedfile.json
我删除了编码文件中的return个字符(使编码内容在一行中)
我用 yaml 创建了一个秘密,以便能够访问 docker 注册表,并将编码文件的内容粘贴到
.dockerconfigjson
api版本:v1 种类:秘密 元数据: 名称:gcr-json-key 命名空间:发展 数据: .docker配置json: xxxxx 类型:kubernetes.io/dockerconfigjson
在我添加的部署中
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>