Pen*_*n74 7 docker gitlab-ci kubernetes
我一直在尝试创建 docker 映像到 Kubernetes 集群的部署,但没有成功,我的部署.yaml 如下所示:
apiVersion: v1
kind: Pod
metadata:
name: application-deployment
labels:
app: application
spec:
serviceAccountName: gitlab
automountServiceAccountToken: false
containers:
- name: application
image: example.org:port1/foo/bar:latest
ports:
- containerPort: port2
volumes:
- name: foo
secret:
secretName: regcred
Run Code Online (Sandbox Code Playgroud)
但它无法获取图像。
无法提取图像“example.org:port1/foo/bar:latest”:rpc 错误:代码 = 未知 desc = 来自守护程序的错误响应:获取https://example.org:port1/v2/foo/bar/manifests/最新:拒绝:访问被禁止
中使用的秘密deployment.yaml是这样创建的:
kubectl create secret docker-registry regcred --docker-server=${CI_REGISTRY} --docker-username=${CI_REGISTRY_USER} --docker-password=${CI_REGISTRY_PASSWORD} --docker-email=${GITLAB_USER_EMAIL}
Run Code Online (Sandbox Code Playgroud)
尝试#1:添加 imagePullSecrets
...
imagePullSecrets:
- name: regcred
Run Code Online (Sandbox Code Playgroud)
结果是:
无法提取图像“example.org:port1/foo/bar:latest”:rpc 错误:代码 = 未知 desc = 来自守护程序的错误响应:获取https://example.org:port1/v2/foo/bar/manifests/最新:未经授权:HTTP 基本:访问被拒绝
解决方案:
我已在“设置”>“存储库”>“部署令牌”>下创建了部署令牌(创建了一个具有 read_registry 范围的令牌)
并将给定值添加到环境变量中,适当的行现在看起来像:
kubectl create secret docker-registry regcred --docker-server=${CI_REGISTRY} --docker-username=${CI_DEPLOY_USER} --docker-password=${CI_DEPLOY_PASSWORD}
Run Code Online (Sandbox Code Playgroud)
我从教程和 Gitlab 文档中得到了有问题的行,他们在其中描述了部署令牌,但在示例中进一步使用了有问题的行。
我重现了您的问题,问题在于您在创建存储库的秘密时使用的密码。为 gitlab 存储库创建机密时,您必须使用在 gitlab 中创建的个人令牌而不是密码。
您可以通过转至创建令牌Settings -> Access Tokens。然后,您必须为令牌选择名称、到期日期和令牌范围。
然后像以前一样通过运行创建一个秘密
kubectl create secret docker-registry regcred --docker-server=$docker_server --docker-username=$docker_username --docker-password=$personal_token
Run Code Online (Sandbox Code Playgroud)
创建 pod 时,您必须包含
imagePullSecrets:
- name: regcred
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9847 次 |
| 最近记录: |