如果要将嵌入式 Harbor 注册表与 主管 结合使用,则可以将映像从嵌入式注册表迁移到作为 主管服务 安装的 Harbor 注册表。

前提条件

  • 确认已在 主管 上安装 Contour 和 Harbor 主管服务
  • 确认用于 主管 的 DNS 包含映射到 Envoy 服务输入 IP 的 Harbor FQDN 条目。
  • 确认已在 主管 和 Harbor 之间建立信任。如果在未运行 Harbor 的 主管 上运行的 Tanzu Kubernetes Grid 集群引用了映像,请确认这些 Tanzu Kubernetes Grid 集群与 Harbor 之间存在信任关系。

过程

  1. 以 vCenter Single-Sign-On 用户身份登录到 主管
  2. 设置到 Harbor 主管服务 的网络访问输出。
    1. 在 Harbor 的服务命名空间(例如,可命名为 svc-harbor-domain-c9)上创建名为 allow-all-egress-harbor-supervisor-service 的网络策略 CRD。
      apiVersion: networking.k8s.io/v1
      kind: NetworkPolicy
      metadata:
        name: allow-all-egress-harbor-supervisor-service
        namespace: svc-harbor-domain-c9
      spec:
        podSelector:
          matchLabels:
            app: harbor
        egress:
        - {}
  3. 访问嵌入式注册表的密钥,以便以后可以将注册表作为复制端点添加到 Harbor。
    1. 向嵌入式注册表命名空间(例如,可命名为 vmware-system-registry-437393318)上的管理 vCenter Single Sign-On 用户授予编辑权限。

      向管理员帐户添加编辑权限的对话框。
    2. 从嵌入式注册表命名空间访问密钥。
      # kubectl get secrets -n vmware-system-registry-437393318 harbor-437393318-controller-registry -o yaml
      apiVersion: v1
      data:
        harborAdminPassword: UDNSak4wQk5VbFlrY1VZeVprUmpKQT09
        harborAdminUsername: WVdSdGFXND0=
        harborPostgresPassword: TlRoS1ZHeEFLa1lrVkdjaGN6aGtXZz09
      kind: Secret
      ...
    3. 解码用户名和密码。
      # echo 'WVdSdGFXND0=' | base64 -d | base64 -d
      admin
       
      # echo 'UDNSak4wQk5VbFlrY1VZeVprUmpKQT09' | base64 -d | base64 -d
      ?tc7@MRV$qF2fDc$
  4. 将嵌入式注册表的复制端点和复制规则添加到 Harbor 主管服务
    1. 以 root 用户身份登录到 Harbor 主管服务 的 UI。
    2. 单击注册表,然后单击新建端点
      “新建注册表端点”窗口中填充了 vRegistry URL 和凭据的数据
    3. 选择复制选项卡,然后单击新建复制规则
      填写以下设置,将其余设置保留为默认值:
      • 名称 - 提供规则名称。
      • 复制模式 - 选择基于提取
      • 源注册表 - 选择已添加的注册表端点。

      将复制规则添加到 Harbor 并选择了必要设置的窗口。
    4. 单击保存
  5. 选择新创建的复制规则,然后单击复制

结果

嵌入式注册表的内容将复制到 Harbor 注册表。