如何使用Kubernetes Secret从docker hub中提取私人docker映像



我正试图在ubuntu20.4上使用minikube运行我的kuberntes应用程序,并应用了一个秘密从docker hub中提取一个私有docker映像,但它似乎无法正常工作。

未能提取图像";xxx/node graphql:latest":rpc错误:代码=未知desc=后台进程的错误响应:xxx/node graphql的拉取访问被拒绝,存储库不存在或可能需要"docker登录":拒绝:请求的对资源的访问被拒绝

这是生成的秘密

kubectl create secret generic regcred                      
--from-file=.dockerconfigjson=<pathtofile>.docker/config.json 
--type=kubernetes.io/dockerconfigjson

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

apiVersion: v1
data:
.dockerconfigjson: xxx9tRXpNakZCSTBBaFFRPT0iCgkJfQoJfQp9
kind: Secret
metadata:
name: node-graphql-secret
uid: xxx-2e18-44eb-9719-xxx
type: kubernetes.io/dockerconfigjson

有人试图使用秘密将一个私人docker镜像拉入Kubernetes吗?任何形式的帮助都将不胜感激。非常感谢。

我在以下步骤中添加了secrets配置。

首先,您需要使用登录到dockerhub

docker login

接下来,创建一个运行的k8s秘密:

kubectl create secret generic <your-secret-name>\n    --from-file=.dockerconfigjson=<pathtoyourdockerconfigfile>.docker/config.json \n    --type=kubernetes.io/dockerconfigjson

然后获得yaml格式的秘密

kubectl get secret -o yaml

它应该是这样的:

apiVersion: v1
items:
- apiVersion: v1
data:
.dockerconfigjson: xxxewoJImF1dGhzIjogewoJCSJodHRwczovL2luZGV4LmRvY2tl
kind: Secret
metadata:
creationTimestamp: "2022-10-27T23:06:01Z"
name: <your-secret-name>
namespace: default
resourceVersion: "513"
uid: xxxx-0f12-4beb-be41-xxx
type: kubernetes.io/dockerconfigjson
kind: List
metadata:
resourceVersion: ""

我已经复制了秘密yaml文件中的秘密内容:

apiVersion: v1
data:
.dockerconfigjson: xxxewoJImF1dGhzIjogewoJCSJodHRwczovL2luZGV4LmRvY2tlci
kind: Secret
metadata:
creationTimestamp: "2022-10-27T23:06:01Z"
name: <your-secret-name>
namespace: default
resourceVersion: "513"
uid: xxx-0f12-4beb-be41-xxx
type: kubernetes.io/dockerconfigjson

它有效!这是一种简单的方法,可以使用Secret来提取K8的私有docker映像。

附带说明一下,要应用机密,请运行kubectl apply -f secret.yml

希望它能帮助

最新更新