我的笔记本电脑上安装了 ubuntu。
我启动了一个私有 docker 注册表(启用了 ssl + htpasswd 安全)并将其添加到覆盖网络(因此可以从其他主机/虚拟机访问它)
这是代码(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:
所以我的注册表在以下链接中运行(使用 dns,我可以在浏览器中验证它):https://home-thinkpad-t420s:5000/v2/_catalog
现在我在笔记本电脑上安装了“Minikube”。&& 通过“minikube ssh”对其进行 ssh。
我在 minikube vm 上创建了一个文件夹“/etc/docker/certs.d”并按照说明添加了证书:
https://docs.docker.com/engine/security/certificates/#understanding-the-configuration
我还修改了 /etc/hosts && 在 /etc/ssl/certs/ca-certificates.crt 上附加了 ca.cert。
并通过以下方式在 minikube vm 上重新启动 docker 服务: sudo systemctl restart docker.service
在此之后,我可以通过上面的“docker login & docker pull”和“curl with (cacert + username/password)”来拉取 minikube vm 上的图像工作得很好,这意味着我可以成功访问/拉取私有注册表图像在 minikube vm 里面。
然后我尝试创建一个秘密(在我的笔记本电脑上使用 kubectl create -f ),定义如下:
apiVersion: "v1"
kind: "Secret"
metadata:
name: "ssl-proxy-secret"
namespace: "default"
data:
proxycert: "LS0..."
proxykey: "LS0t..."
htpasswd: "YWRt..."
并创建了一个 pod(在我的笔记本电脑上使用 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
但是当我尝试运行这个 pod 时,它会抛出错误:
无法拉取图像“home-thinkpad-t420s:5000/my-jenkins”:rpc 错误:代码 = 2 desc = 错误:找不到图像 my-jenkins 同步 pod 时出错,跳过:“private-jenkins”的“StartContainer”失败-container”和 ErrImagePull:“rpc 错误:代码 = 2 desc = 错误:找不到图像 my-jenkins”
如果我能够通过 curl & docker login/pull 成功地在 minikube vm 中提取图像......那么为什么 pod 创建失败并出现上述错误?