第 6 章 开放registry
默认情况下,OpenShift Container Platform registry在集群安装期间是加密的,它需要使用TLS进行访问。与早期版本的OpenShift Container Platform不同,安装时registry不会向集群外部公开。
6.1. 手动公开受保护的registry
通过使用路由可以开放从外部访问OpenShift Container Platform registry的通道,用户不再需要从集群内部登录到OpenShift Container Platform registry。您可以使用路由地址从集群以外登陆到 registry,并使用路由主机进行镜像的 tag 和 push 操作。
先决条件
以下的先决条件会被自动执行:
- 部署 Registry Operator。
- 部署 Ingress Operator。
流程
您可以使用configs.imageregistry.operator.openshift.io
资源中的DefaultRoute
参数或使用自定义路由来公开路由。
使用DefaultRoute
公开registry:
将
DefaultRoute
设置为True
:$ oc patch configs.imageregistry.operator.openshift.io/cluster --patch '{"spec":{"defaultRoute":true}}' --type=merge
使用Podman登录:
$ HOST=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}') $ podman login -u $(oc whoami) -p $(oc whoami -t) --tls-verify=false $HOST 1
- 1
- 如果集群的默认路由证书不受信任,则需要
--tls-verify=false
。您可以将一个自定义的可信证书设置为 Ingress Operator 的默认证书。
使用自定义路由公开registry:
使用路由的 TLS 密钥创建一个 secret:
$ oc create secret tls public-route-tls \ -n image-registry \ --cert=</path/to/tls.crt> \ --key=</path/to/tls.key>
此步骤是可选的。如果不创建一个secret,则路由将使用Ingress Operator的默认TLS配置。
在 Registry Operator 中:
spec: routes: - name: public-routes hostname: myregistry.mycorp.organization secretName: public-route-tls ...
如果为registry的路由提供了一个自定义的 TLS 配置,则仅需设置
secretName
。