按照以下说明在运行适用于 vSphere 8.x 的 TKr 的 TKG 服务 集群上安装 Harbor 容器注册表。

必备条件

创建 Harbor 数据值

准备通过创建数据值文件来安装 Harbor。

  1. 获取存储库的最新 Harbor 软件包版本。
    tanzu package available get harbor.tanzu.vmware.com -n tkg-system

    或者,使用 kubectl。

    kubectl -n tkg-system get packages | grep harbor
    注: 通常,应该使用最新版本,除非要求不同。
  2. 生成 harbor-data-values.yaml 文件。
    tanzu package available get harbor.tanzu.vmware.com/2.9.1+vmware.1-tkg.1 --default-values-file-output harbor-data-values.yaml
    其中:
    • 2.9.1+vmware.1-tkg.1 是目标软件包版本
    • harbor-data-values.yaml 是要生成的数据值文件的名称和路径
  3. 编辑 harbor-data-values.yaml 文件并更新以下参数的值。

    根据需要配置其他参数。请参见Harbor 软件包参考

    字段 描述
    hostname 用于访问 Harbor 管理控制台和注册表服务的 FQDN。将“yourdomain.com”替换为唯一主机名。
    harborAdminPassword 将密码更改为独特的强密码(也可以安装后在 UI 中进行更改)。
    persistence.persistentVolumeClaim.database.storageClass: 输入vSphere命名空间的vSphere存储策略的名称。
    persistence.persistentVolumeClaim.jobservice.storageClass: 输入vSphere命名空间的vSphere存储策略的名称。
    persistence.persistentVolumeClaim.redis.storageClass: 输入vSphere命名空间的vSphere存储策略的名称。
    persistence.persistentVolumeClaim.registry.storageClass: 输入vSphere命名空间的vSphere存储策略的名称。
    persistence.persistentVolumeClaim.trivy.storageClass: 输入vSphere命名空间的vSphere存储策略的名称。
    tlsCertificate.tlsSecretLabels: {"managed-by": "vmware-vRegistry"}

安装 Harbor

完成以下步骤,安装 Harbor 注册表。
  1. 为 Harbor 创建命名空间。
    kubectl create ns tanzu-system-registry
  2. 安装 Harbor。
    tanzu package install harbor --package harbor.tanzu.vmware.com --version 2.9.1+vmware.1-tkg.1 --values-file harbor-data-values.yaml --namespace tanzu-system-registry
  3. 验证 Harbor 安装。
    tanzu package installed get harbor --namespace tanzu-system-registry

使用 LoadBalancer 类型的 Envoy 服务为 Harbor 配置 DNS

如果通过 LoadBalancer 公开必备 Contour with Envoy 服务,请获取负载均衡器的外部 IP 地址,并为 Harbor FQDN 创建 DNS 记录。
  1. 获取 LoadBalancer 类型的 Envoy 服务的 External-IP 地址。
    kubectl get service envoy -n tanzu-system-ingress
    您应该会看到返回的 External-IP 地址,例如:
    NAME    TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGE
    envoy   LoadBalancer   10.99.25.220   10.195.141.17   80:30437/TCP,443:30589/TCP   3h27m
    或者,也可以使用以下命令获取 External-IP 地址。
    kubectl get svc envoy -n tanzu-system-ingress -o jsonpath='{.status.loadBalancer.ingress[0]}'
  2. 要验证 Harbor 扩展的安装,请使用映射到负载均衡器的 External-IP 地址的 Harbor 和 Notary FQDN 更新本地 /etc/hosts 文件,例如:
    127.0.0.1 localhost
    127.0.1.1 ubuntu
    #TKG Harbor with Envoy Load Balancer IP
    10.195.141.17 core.harbor.domain
    10.195.141.17 core.notary.harbor.domain
    
  3. 要验证 Harbor 扩展的安装,请登录到 Harbor。
  4. 在 DNS 服务器上创建两个 CNAME 记录,以将 Envoy 服务负载均衡器 External-IP 地址映射到 Harbor FQDN 和 Notary FQDN。
  5. 安装外部 DNS 扩展。

使用 NodePort 类型的 Envoy 服务为 Harbor 配置 DNS

如果通过 NodePort 公开必备 Contour > Envoy 服务,请获取工作节点的虚拟机 IP 地址,并为 Harbor FQDN 创建 DNS 记录。
注: 要使用 NodePort,必须在 harbor-data-values.yaml 文件中指定正确的 port.https 值。
  1. 将上下文切换到置备了集群的 vSphere 命名空间
    kubectl config use-context VSPHERE-NAMESPACE
  2. 列出集群中的节点。
    kubectl get virtualmachines
  3. 选择其中一个工作节点,然后使用以下命令对其进行描述。
    kubectl describe virtualmachines tkg2-cluster-X-workers-9twdr-59bc54dc97-kt4cm
  4. 找到虚拟机的 IP 地址,例如 Vm Ip: 10.115.22.43
  5. 要验证 Harbor 扩展的安装,请使用映射到工作节点 IP 地址的 Harbor 和 Notary FQDN 更新本地 /etc/hosts 文件,例如:
    127.0.0.1 localhost
    127.0.1.1 ubuntu
    #TKG Harbor with Envoy NodePort
    10.115.22.43 core.harbor.domain
    10.115.22.43 core.notary.harbor.domain
    
  6. 要验证 Harbor 扩展的安装,请登录到 Harbor。
  7. 在 DNS 服务器上创建两个 CNAME 记录,以将工作节点 IP 地址映射到 Harbor FQDN 和 Notary FQDN。
  8. 安装外部 DNS 扩展。

登录到 Harbor Web 界面

安装并配置 Harbor 后,请登录并开始使用。
  1. 访问 Harbor 注册表 Web 界面 (https://core.harbor.domain) 或您使用的主机名。

    Harbor 注册表 Web 界面。

  2. 使用用户名 admin 和生成的密码(放在 harbor-data-values.yaml 文件中)登录到 Harbor。

    Harbor 登录页面,带有用户名 admin 和生成的密码。

  3. 验证您是否可以访问 Harbor 用户界面。

    登录后,将显示 Harbor 用户界面的“项目”选项卡。

  4. 获取 Harbor CA 证书。

    在 Harbor 界面中,选择项目 > ,或者创建新项目

    单击注册表证书并下载 Harbor CA 证书 (ca.crt)。

  5. 将 Harbor CA 证书添加到 Docker 客户端的信任库中,以便可以将容器映像推送到 Harbor 注册表以及从 Harbor 注册表中提取容器映像。请参见对 TKG 服务 集群使用专用注册表
  6. 有关使用 Harbor 的详细信息,请参阅 Harbor 文档