2.4.3. 手动公开安全 Registry


您可以通过首先保护 registry,然后使用路由公开它,而不是从 OpenShift Container Platform 集群内部登录到 OpenShift Container Platform registry。您可以使用路由地址从集群以外登陆到 registry,并使用路由主机进行镜像的 tag 和 push 操作。

  1. 以下每个先决条件步骤都会在典型的集群安装过程中默认执行。如果没有,请手动执行它们:

  2. 在初始集群安装过程中,默认为 registry 创建 passthrough 路由:

    1. 验证路由是否存在:

      $ oc get route/docker-registry -o yaml
      apiVersion: v1
      kind: Route
      metadata:
        name: docker-registry
      spec:
        host: <host> 
      1
      
        to:
          kind: Service
          name: docker-registry 
      2
      
        tls:
          termination: passthrough 
      3
      Copy to Clipboard Toggle word wrap
      1
      路由的主机。您必须能够通过 DNS 外部将此名称解析到路由器的 IP 地址。
      2
      registry 的服务名称。
      3
      将此路由指定为 passthrough 路由。
      注意

      也支持重新加密路由来公开安全 registry。

    2. 如果不存在,则通过 oc create route passthrough 命令创建路由,将 registry 指定为路由的服务。默认情况下,创建的路由的名称与服务名称相同:

      1. 获取 docker-registry 服务详情:

        $ 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 Toggle word wrap
      2. 创建路由:

        $ oc create route passthrough    \
            --service=docker-registry    \
        1
        
            --hostname=<host>
        route "docker-registry" created     
        2
        Copy to Clipboard Toggle word wrap
        1
        将 registry 指定为路由的服务。
        2
        路由名称与服务名称相同。
  3. 接下来,您必须信任主机系统上用于 registry 的证书,以允许主机推送和拉取镜像。引用的证书是在保护 registry 时创建的。

    $ 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 Toggle word wrap
  4. 使用保护 registry 的信息,登录到 registry。但是,这一次指向路由中使用的主机名,而不是您的服务 IP。登录到安全且公开的 registry 时,请确保在 docker login 命令中指定 registry:

    # docker login -e user@company.com \
        -u f83j5h6 \
        -p Ju1PeM47R0B92Lk3AZp-bWJSck2F7aGCiZ66aFGZrs2 \
        <host>
    Copy to Clipboard Toggle word wrap
  5. 现在,您可以使用路由主机标记和推送镜像。例如,要在名为 test 的项目中标记和推送 busybox 镜像:

    $ oc get imagestreams -n test
    NAME      DOCKER REPO   TAGS      UPDATED
    
    $ docker pull busybox
    $ docker tag busybox <host>/test/busybox
    $ docker push <host>/test/busybox
    The push refers to a repository [<host>/test/busybox] (len: 1)
    8c2e06607696: Image already exists
    6ce2e90b0bc7: Image successfully pushed
    cf2616975b4a: Image successfully pushed
    Digest: sha256:6c7e676d76921031532d7d9c0394d0da7c2906f4cb4c049904c4031147d8ca31
    
    $ docker pull <host>/test/busybox
    latest: Pulling from <host>/test/busybox
    cf2616975b4a: Already exists
    6ce2e90b0bc7: Already exists
    8c2e06607696: Already exists
    Digest: sha256:6c7e676d76921031532d7d9c0394d0da7c2906f4cb4c049904c4031147d8ca31
    Status: Image is up to date for <host>/test/busybox:latest
    
    $ oc get imagestreams -n test
    NAME      DOCKER REPO                       TAGS      UPDATED
    busybox   172.30.11.215:5000/test/busybox   latest    2 seconds ago
    Copy to Clipboard Toggle word wrap
    注意

    您的镜像流将具有 registry 服务的 IP 地址和端口,而不是路由名称和端口。详情请参阅 oc get imagestreams

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat