无法通过从外部私有registry中提取图像来启动minikube中的窗格
我的笔记本电脑上安装了一个ubuntu。
我开始了一个私人dockerregistry(ssl启用+ htpasswd安全),并将其添加到覆盖networking(所以它可以从其他主机/ vms访问)
这里是代码(docker-compose.yaml):
version: "3" services: registry: restart: always image: registry:2 ports: - 5000:5000 environment: REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt REGISTRY_HTTP_TLS_KEY: /certs/domain.key REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm volumes: - /certs:/certs - ~/caas_rd/workspace/ci_cd_pipeline/registry_setup:/auth networks: - overlaynetwork networks: overlaynetwork:
所以我的registry运行在以下链接(与DNS,我可以validation它在浏览器中): https:// home-thinkpad-t420s:5000 / v2 / _catalog
现在我在笔记本电脑上安装了“Minikube”。 &&ssh它由“minikube ssh”。
我在minikube vm上创build了一个文件夹“/etc/docker/certs.d”,按照说明添加了证书:
https://docs.docker.com/engine/security/certificates/#understanding-the-configuration
我还在/etc/ssl/certs/ca-certificates.crt上修改了/ etc / hosts && ca.cert。
并通过以下命令重启minikube vm上的docker服务:sudo systemctl restart docker.service
在这之后,我可以通过“docker login&docker pull”在“minikube vm”上拖动图像,并且通过上面的“curce with(cacert + username / password)”工作得非常好,意味着我可以成功访问/里面minikube vm。
然后我试图创build一个秘密(在我的笔记本电脑上用kubectl create -f)定义如下:
apiVersion: "v1" kind: "Secret" metadata: name: "ssl-proxy-secret" namespace: "default" data: proxycert: "LS0..." proxykey: "LS0t..." htpasswd: "YWRt..."
并创build了一个荚(在我的笔记本上用kubectl create -f)定义如下:
apiVersion: v1 kind: Pod metadata: name: private-jenkins spec: containers: - name: private-jenkins-container image: home-thinkpad-t420s:5000/my-jenkins volumeMounts: - name: secrets mountPath: /etc/secrets volumes: - name: secrets secret: secretName: ssl-proxy-secret
但是当我尝试运行这个吊舱时,会抛出错误:
无法拉图像“home-thinkpad-t420s:5000 / my-jenkins”:rpc错误:code = 2 desc =错误:图像my-jenkins未find错误同步pod,跳过:未能“StartContainer”为“private-jenkins “容器”ErrImagePull:“rpc错误:代码= 2 desc =错误:图像my-jenkins未find”
如果我能够通过curl和docker login / pull成功在minikube vm中拉取图像,那么为什么创buildpod时出现上述错误?
你可以从secret.yml文件中删除那些双引号escpecially,然后再试一下吗?
您需要创build一个分离的kubernetes registry secret
。 可以使用这个命令:
kubectl create secret docker-registry <secret-name> \ --docker-email=<your-email> --docker-username=<registry-user> \ --docker-password=<registry-password> --docker-server=<registry-server-domain>
之后,您可以更新pod configuration
,如下所示:
apiVersion: v1 kind: Pod metadata: name: private-jenkins spec: containers: - name: private-jenkins-container image: home-thinkpad-t420s:5000/my-jenkins imagePullSecrets: - name: <secret-name>
参考: 链接
希望能帮助到你!