2.4.3. 手动公开安全 Registry
您可以通过首先保护 registry,然后使用路由公开它,而不是从 OpenShift Container Platform 集群内部登录到 OpenShift Container Platform registry。您可以使用路由地址从集群以外登陆到 registry,并使用路由主机进行镜像的 tag 和 push 操作。
以下每个先决条件步骤都会在典型的集群安装过程中默认执行。如果没有,请手动执行它们:
在初始集群安装过程中,默认为 registry 创建 passthrough 路由:
验证路由是否存在:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意也支持重新加密路由来公开安全 registry。
如果不存在,则通过
oc create route passthrough
命令创建路由,将 registry 指定为路由的服务。默认情况下,创建的路由的名称与服务名称相同:获取 docker-registry 服务详情:
oc get svc
$ oc get svc NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE docker-registry 172.30.69.167 <none> 5000/TCP docker-registry=default 4h kubernetes 172.30.0.1 <none> 443/TCP,53/UDP,53/TCP <none> 4h router 172.30.172.132 <none> 80/TCP router=router 4h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建路由:
oc create route passthrough \ --service=docker-registry \ --hostname=<host>
$ oc create route passthrough \ --service=docker-registry \
1 --hostname=<host> route "docker-registry" created
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
接下来,您必须信任主机系统上用于 registry 的证书,以允许主机推送和拉取镜像。引用的证书是在保护 registry 时创建的。
sudo mkdir -p /etc/docker/certs.d/<host> sudo cp <ca_certificate_file> /etc/docker/certs.d/<host> sudo systemctl restart docker
$ sudo mkdir -p /etc/docker/certs.d/<host> $ sudo cp <ca_certificate_file> /etc/docker/certs.d/<host> $ sudo systemctl restart docker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用保护 registry 的信息,登录到 registry。但是,这一次指向路由中使用的主机名,而不是您的服务 IP。登录到安全且公开的 registry 时,请确保在
docker login
命令中指定 registry:docker login -e user@company.com \ -u f83j5h6 \ -p Ju1PeM47R0B92Lk3AZp-bWJSck2F7aGCiZ66aFGZrs2 \ <host>
# docker login -e user@company.com \ -u f83j5h6 \ -p Ju1PeM47R0B92Lk3AZp-bWJSck2F7aGCiZ66aFGZrs2 \ <host>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,您可以使用路由主机标记和推送镜像。例如,要在名为
test
的项目中标记和推送busybox
镜像:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您的镜像流将具有 registry 服务的 IP 地址和端口,而不是路由名称和端口。详情请参阅
oc get imagestreams
。