7.2. 管理容器 registry 证书
OpenShift Container Platform 内部 registry 创建为 pod。但是,如果需要,可以从外部 Registry 中拉取容器。默认情况下,registry 侦听 TCP 端口 5000。registry 提供通过 TLS 保护公开镜像的选项,或运行 registry而不加密流量。
Docker 会将 .crt
文件解释为 CA 证书,.cert
文件作为客户端证书。任何 CA 的扩展都必须是 .crt
。
7.2.1. 为外部 registry 安装证书颁发机构证书
要将 OpenShift Container Platform 与外部 registry 搭配使用,registry 证书颁发机构(CA)证书必须信任从 registry 中拉取镜像的所有节点。
根据 Docker 版本,信任容器镜像 registry 的进程会有所不同。Docker 根证书颁发机构的最新版本与系统默认值合并。在 docker
版本 1.13 之前,只有在没有其他自定义 root 证书时才使用系统默认证书。
流程
将 CA 证书复制到
/etc/pki/ca-trust/source/anchors/
中:$ sudo cp myregistry.example.com.crt /etc/pki/ca-trust/source/anchors/
提取 CA 证书并将其添加到可信证书颁发机构列表中:
$ sudo update-ca-trust extract
使用
openssl
命令验证 SSL 证书:$ openssl verify myregistry.example.com.crt myregistry.example.com.crt: OK
证书被放置并信任被更新后,重启
docker
服务以确保正确设置新证书:$ sudo systemctl restart docker.service
对于 1.13 之前的 Docker 版本,需要执行以下额外步骤以信任颁发机构的证书:
在每个节点上在
/etc/docker/certs.d
中创建一个新目录,其中目录的名称是容器镜像 registry 的主机名:$ sudo mkdir -p /etc/docker/certs.d/myregistry.example.com
注意除非容器镜像 registry 在无需端口号的情况下无法访问容器镜像 registry,否则不需要端口号。将端口寻址到原始 Docker registry,如下所示:
myregistry.example.com:port
通过 IP 地址访问容器镜像 registry 需要在
/etc/docker/certs.d
中创建新目录,其中目录的名称为容器镜像 registry 的 IP:$ sudo mkdir -p /etc/docker/certs.d/10.10.10.10
将 CA 证书复制到前面步骤中新创建的 Docker 目录中:
$ sudo cp myregistry.example.com.crt \ /etc/docker/certs.d/myregistry.example.com/ca.crt $ sudo cp myregistry.example.com.crt /etc/docker/certs.d/10.10.10.10/ca.crt
复制证书后,重启
docker
服务以确保使用新证书:$ sudo systemctl restart docker.service