按照以下说明在运行适用于 vSphere 8.x 的 TKr 的 TKG 服务 集群上安装 Harbor 容器注册表。
必备条件
请遵循以下必备条件。
创建 Harbor 数据值
准备通过创建数据值文件来安装 Harbor。
- 获取存储库的最新 Harbor 软件包版本。
tanzu package available get harbor.tanzu.vmware.com -n tkg-system
或者,使用 kubectl。
kubectl -n tkg-system get packages | grep harbor
注: 通常,应该使用最新版本,除非要求不同。 - 生成
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 是要生成的数据值文件的名称和路径
- 编辑
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 注册表。
- 为 Harbor 创建命名空间。
kubectl create ns tanzu-system-registry
- 安装 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
- 验证 Harbor 安装。
tanzu package installed get harbor --namespace tanzu-system-registry
使用 LoadBalancer 类型的 Envoy 服务为 Harbor 配置 DNS
如果通过 LoadBalancer 公开必备 Contour with Envoy 服务,请获取负载均衡器的外部 IP 地址,并为 Harbor FQDN 创建 DNS 记录。
- 获取 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]}'
- 要验证 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
- 要验证 Harbor 扩展的安装,请登录到 Harbor。
- 在 DNS 服务器上创建两个 CNAME 记录,以将 Envoy 服务负载均衡器
External-IP
地址映射到 Harbor FQDN 和 Notary FQDN。 - 安装外部 DNS 扩展。
使用 NodePort 类型的 Envoy 服务为 Harbor 配置 DNS
如果通过 NodePort 公开必备 Contour > Envoy 服务,请获取工作节点的虚拟机 IP 地址,并为 Harbor FQDN 创建 DNS 记录。
注: 要使用 NodePort,必须在
harbor-data-values.yaml
文件中指定正确的
port.https
值。
- 将上下文切换到置备了集群的 vSphere 命名空间。
kubectl config use-context VSPHERE-NAMESPACE
- 列出集群中的节点。
kubectl get virtualmachines
- 选择其中一个工作节点,然后使用以下命令对其进行描述。
kubectl describe virtualmachines tkg2-cluster-X-workers-9twdr-59bc54dc97-kt4cm
- 找到虚拟机的 IP 地址,例如
Vm Ip: 10.115.22.43
。 - 要验证 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
- 要验证 Harbor 扩展的安装,请登录到 Harbor。
- 在 DNS 服务器上创建两个 CNAME 记录,以将工作节点 IP 地址映射到 Harbor FQDN 和 Notary FQDN。
- 安装外部 DNS 扩展。
登录到 Harbor Web 界面
安装并配置 Harbor 后,请登录并开始使用。
- 访问 Harbor 注册表 Web 界面 (
https://core.harbor.domain
) 或您使用的主机名。 - 使用用户名 admin 和生成的密码(放在
harbor-data-values.yaml
文件中)登录到 Harbor。 - 验证您是否可以访问 Harbor 用户界面。
- 获取 Harbor CA 证书。
在 Harbor 界面中,选择新项目。
,或者创建单击注册表证书并下载 Harbor CA 证书 (ca.crt)。
- 将 Harbor CA 证书添加到 Docker 客户端的信任库中,以便可以将容器映像推送到 Harbor 注册表以及从 Harbor 注册表中提取容器映像。请参见对 TKG 服务 集群使用专用注册表。
- 有关使用 Harbor 的详细信息,请参阅 Harbor 文档。