Registry v2:公开 Registry
默认情况下,请为集群内的 workload 使用内部 registry service。只有当开发人员机器、CI systems 或其他外部客户端必须 push 或 pull images 时,才公开 Registry v2。
前提条件
- Registry v2 已安装并可用。
- 您有权限更新
Config/cluster,并在image-registry-system中创建或引用 TLS Secrets。 - 集群具有可将流量路由到
image-registry-system的 Ingress controller。 - 对于自定义 host,请准备 DNS 记录和 TLS certificate,其 Subject Alternative Name 与 Registry hostname 匹配。
公开默认 Registry
在 Config/cluster 中启用默认 external endpoint:
Operator 会在 image-registry-system 中生成一个名为 default-route 的 Kubernetes Ingress。
验证生成的 Ingress 和 Registry 配置:
获取生成的 host:
预期结果:
Config/cluster.spec.defaultRoute为true。image-registry-system中存在default-routeIngress。REGISTRY_HOST包含分配给默认路由的 hostname。
如果 Ingress certificate 由私有 CA 签名,请在登录之前将 CA certificate 添加到 external client 和 OCI client 的信任存储中。请从 external client 验证 TLS chain:
为生成的 host 写入凭据:
公开自定义安全 Registry Host
在 image-registry-system 中创建或提供 TLS Secret,然后配置 Config.spec.routes[]。
当设置了 secretName 时,TLS Secret 必须存在于 image-registry-system 中。
生成的 Ingress 使用 registry service 作为后端,并将后端协议设置为 HTTPS。
使用自定义路由修补 Config/cluster。请使用 merge patch,以免删除其他 Config/cluster.spec 字段,例如 storage 和 pull-secret 设置。此 patch 中的 routes 数组会替换当前的 routes 数组,因此请包含所有必须保留配置的自定义路由:
验证配置和生成的 Ingress:
预期结果:
Config/cluster.spec.routes[]包含public-registry。public-registryIngress 使用registry.example.com。- Ingress 引用了
registry-tlsSecret。
验证 TLS 信任并登录:
配置客户端信任
如果 Ingress certificate 由私有 CA 签名,请在登录以及 push 或 pull 操作之前,将 CA 添加到每个外部客户端的信任存储中。
对于使用 insecure registry 选项的测试客户端,请将不安全设置仅限定到 Registry host:
如果 OCI client 还连接到 HTTP endpoint 或不受信任的 certificate,请单独配置该 OCI client 的 trust 或 insecure-registry 设置。
验证外部访问
检查 Ingress:
从外部客户端写入凭据:
push 和 pull 一个测试 image: