0

我的笔记本电脑上安装了 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 创建失败并出现上述错误?

4

2 回答 2

0

您可以从 secret.yml 文件中的凭据中删除这些双引号,然后再次尝试旋转 pod 吗?

于 2017-06-13T12:24:10.463 回答
0

您需要创建一个分隔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>

参考:链接

希望能帮助到你!

于 2017-06-14T06:02:35.650 回答