我已经尝试过https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ yaml文件中的base 64编码解决方案(这最终是我需要做的)不会进行身份验证。 (显然,这是一个普遍的问题,如果有人拥有一个可以正常工作的yaml文件,或者我希望看到它,或者可以通过私有存储库进行安全部署的方法,那么我们就不会陷入xy问题中)
所以我尝试了以下操作:
kubectl create secret generic registrykey --from-file=.dockerconfigjson=/home/dbosh/.docker/config.json --type=kubernetes.io/dockerconfigjson
带有部署文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my_deployment
spec:
selector:
matchLabels:
app: my_deployment
tier: backend
track: stable
replicas: 7
template:
metadata:
labels:
app: my_deployment
tier: backend
track: stable
spec:
containers:
- name: my_deployment
image: "my_private_repo:image_name"
ports:
- name: http
containerPort: 8082
imagePullSecrets:
- name: registrykey
但是,无论何时我尝试进行部署,我都会不断得到“对于my_private_repo的拉式访问被拒绝,存储库不存在,或者可能需要'docker login'。
现在要创建docker登录文件,我确实已经登录,并在重新生成机密然后重新部署之前立即进行了登录测试,
请任何帮助表示感谢。
更新(感谢有用的评论):
登录后,我的config.json看起来像这样:
cat .docker/config.json
{
"auths": {
"https://index.docker.io/v1/": {}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/18.09.2 (linux)"
},
"credsStore": "secretservice"
这似乎不包含令牌。我是通过运行docker login
并提供凭据来生成的。有任何想法吗?
答案 0 :(得分:0)
config.json
文件中没有用于您的私人仓库的令牌,仅用于docker hub。
因此,您需要在私有存储库中重新进行身份验证:
docker logout <my_private_repo> && docker login <my_private_repo> -u <user> -p <pass> && cat ~/.docker/config.json
应该是这个:
"auths": {
"my_private_repo": {
"auth": "c3VraG92ZXJzsdfdsQXNocmV2b2h1czg4"
}