在 vSphere 上部署脱机 Harbor 注册表

本主题介绍如何从下载的 OVA 文件安装专用 Harbor 映像注册表,以提供在脱机 vSphere 环境中部署 Tanzu Kubernetes Grid (TKG) 所需的映像。最终的 Harbor 注册表与 TKG 一起运行,并且与 TKG 分开运行,以存储和管理 TKG 使用的组件映像。

重要

  • 这种基于虚拟机的 Harbor 部署仅支持在 Internet 受限或气隙环境中托管 TKG 系统映像。要部署可扩展且高度可用的 Harbor 以在生产环境中管理托管应用的大量映像,请将 Harbor 软件包部署到 TKG 集群,如《使用 Tanzu CLI 创建和管理 TKG 2.4 工作负载集群》中的为服务注册表安装 Harbor 中所述

  • Harbor v2.6.0 发行说明中注释,Notary 和 Chartmuseum 已在 Harbor v2.6 中已被弃用,并计划在将来的版本中删除。切换到 Sigstore Cosign 以进行容器签名和验证。

必备条件

  • vSphere Client v7.0.2.00000
  • Harbor OVA 文件,从 Tanzu Kubernetes Grid 下载页面下载。
  • 自定义证书(可选):ca.crtserver.crtserver.key 文件

部署 Harbor

要从 OVA 文件部署 Harbor,请执行以下操作:

  1. 在 vCenter 中,右键单击 vSphere集群,然后选择部署 OVF 模板 (Deploy OVF Template)…

    Harbor 安装屏幕截图

  2. 此时将显示部署 OVF 模板 (Deploy OVF Template) 窗口。选择本地文件 (Local File),然后浏览到下载的 Harbor OVA 文件的位置。

  3. 单击右下角的下一步 (NEXT)。将显示一系列配置窗格。

  4. 源验证:单击是 (YES)

    Harbor 安装屏幕截图

  5. 虚拟机名称:输入为运行 Harbor 实例的虚拟机选择的名称。单击下一步 (NEXT)

    Harbor 安装屏幕截图

  6. 选择计算资源:保留默认选择,然后单击下一步 (NEXT)

    Harbor 安装屏幕截图

    此步骤可能需要几分钟时间,因为 vSphere 下载并呈现 OVF 模板。

  7. 查看详细信息:单击下一步 (NEXT)

    Harbor 安装屏幕截图

  8. 许可协议:请接受许可证,然后单击下一步 (NEXT)

    Harbor 安装屏幕截图

  9. 选择存储:选择 vsanDatastore,然后单击下一步 (NEXT)

    Harbor 安装屏幕截图

  10. 选择网络:选择默认VM 网络 (VM Network),然后单击 下一步 (NEXT)

    Harbor 安装屏幕截图

  11. 自定义模板 (Customize template) > VM 凭据 (VM Credentials)

    Harbor 安装屏幕截图

    1. Root 密码 (Root Password)(必填):虚拟机上 root 用户帐户的首选密码,长度必须为 8-128 个字符。

    2. 允许通过 Root 进行 SSH:保留默认值,启用状态,以允许 sshroot 用户身份访问虚拟机。

  12. 自定义模板 (Customize template) > Harbor 配置 (Harbor Configurations)

    Harbor 安装屏幕截图

    1. 主机名(可选):如果提供,则 Harbor 主机名为 FQDN,例如 yourdomain.com。不能是 IP 地址或 localhost

      如果指定主机名 (Hostname),SAN(主体备用名称)属性仅包含 DNS 信息;不会提供 IP 信息。

      如果未指定主机名 (Hostname),则 SAN 属性仅包含 IP 信息,不会提供 DNS 信息。

    2. 管理员密码 (Administrator Password)(必填):Harbor admin 用户的密码。供管理员用于访问 Harbor UI,以及由客户端容器用于提取和推送映像。长度必须至少为 8 至 128 个字符

    3. Harbor 数据库密码 (Harbor Database Password):Harbor 内部数据库的密码。如果提供,则长度必须为 8 到 128 个字符。

    4. 启用 Harbor 默认扫描仪 (Enable Harbor Default Scanner):启用此选项以安装 Trivy 扫描仪,并将其激活以在图像上载到 Harbor 时对其进行扫描。

    5. 对 Harbor 使用自签名证书 (Use Self-signed Certificate For Harbor)

      • 启用此选项以使用自签名证书,并将 CA 证书 (CA Certificate)服务器证书 (Server Certificate)服务器秘钥 (Server Key) 留空。

      • 否则,请停用为 Harbor 使用自签名证书 (Use Self-signed Certificate For Harbor) 并粘贴 CA 证书 (CA Certificate)服务器证书 (Server Certificate)服务器密钥 (Server Key) 的多行文件内容。将它们粘贴到表单中时,多行值将转换为以空格字符作为分隔符的单行字符串。

  13. 自定义模板 (Customize template) > 网络配置 (Networking Configurations)

    Harbor 安装屏幕截图

    1. IP Address (IP 地址)网络掩码 (Netmask)网关 (Gateway)eth0 的静态 IP 地址、网络掩码和网关(如果有)。

    2. DNSDNS 域 (DNS Domain):Harbor 虚拟机的 DNS 服务器和域。

  14. (可选)自定义模板 (Customize template) > Docker 配置 (Docker Configurations)

    Harbor 安装屏幕截图

    此配置是可选的,仅适用于具有 Harbor v2.8.x 或更高版本的 OVA。

    1. Docker 守护进程 BIP 值:用于配置 Docker 守护进程的 CIDR 格式值,例如:198.18.251.1/24

    2. 地址池 1 基本大小地址池 1 大小:地址池基本大小和地址池大小应成对配置(如果有)。我们最多允许三对地址池基本大小和地址池大小。此外,地址池库应采用 CIDR 格式,例如 198.18.252.0/22;和地址池大小应为介于 1 到 32 之间的整数。

  15. 即将完成 (Ready to complete):查看配置,然后单击完成 (FINISH)

    Harbor 安装屏幕截图

监视和调试部署

Docker 部署(可选)

对于使用 Harbor v2.8.x 或更高版本的 OVA,可以选择将 Docker 守护进程配置设置为在 OVA 上运行,如上文所述的 Docker 配置 (Docker Configurations) 选项卡下配置。

如果在 Docker 配置 (Docker Configurations) 下输入无效参数,firstboot systemd 服务和 Docker 都将失败。

要验证 Docker 安装,请在 Harbor 虚拟机中 ssh 并运行 systemctl status firstbootsystemctl status docker。如果 firstboot 服务状态列为 Active: failed,则表示部署失败;但如果它显示为 Active: inactive (dead)firstboot.service: Succeeded,则 docker 服务将列为 Active: active (running),部署成功。

要查看日志以了解更多详细信息,请运行 journalctl -u firstbootjournalctl -u docker

Harbor 部署

首次部署 Harbor OVA 时,Harbor 需要几分钟才能加载 Docker 映像。

要监视该过程并确认其正在进行中,请在虚拟机中 ssh 并运行:

watch docker ps

如果 5 分钟左右后 Harbor 未运行,请在虚拟机上检索日志文件以进行调试:

  1. cd /etc/goharbor/harbor && ./harbor-support.sh --include-private

  2. 找到并解压缩日志文件。其名称类似于 /storage/log/harbor_appliance_logs_2022-11-30T09-39-12Z.tar.gz

故障排除

错误: 无法检索清单或证书文件

  1. 如果看到Error: Unable to retrieve manifest or certificate file(如下所示),请再次尝试部署 Harbor OVA。

    Harbor 安装屏幕截图

不支持 Harbor 代理缓存

无法在 Internet 受限的环境中将 Harbor 的代理缓存功能用于运行 Tanzu Kubernetes Grid v2.4。您仍然可以使用 Harbor 代理缓存来代理以前版本的 Tanzu Kubernetes Grid 中的映像,以及应用程序映像等非 Tanzu 映像。

重置 Root 密码

如果丢失了 root 密码,请按照重置丢失的 Root 密码过程进行恢复。

扩展数据磁盘

从 OVA 部署的 Harbor 实例具有两个磁盘:

  • 数据磁盘:包含 Harbor 应用程序数据和证书文件;挂载为 /storage
  • 系统磁盘:包含虚拟机系统数据和 Harbor 引导程序映像,并运行引导映像。

如果需要增加 Harbor 的数据磁盘大小以容纳请求,则必须在更改设置时暂时关闭 Harbor 虚拟机的电源。如果虚拟机具有动态 IP 地址,则重新启动虚拟机需要执行如下所述的其他步骤。

要扩展 Harbor 实例的数据磁盘,请执行以下操作:

  1. 从 vSphere 主机和集群 (Hosts and Clusters) 视图中,右键单击 Harbor OVA 虚拟机,然后选择电源 (Power) > 关闭电源 (Power Off)

    Harbor 安装屏幕截图

  2. 再次右键单击 Harbor OVA 虚拟机,然后选择编辑设置 (Edit Settings)

    Harbor 安装屏幕截图

  3. 将出现编辑设置 (Edit Settings) 窗口。在虚拟硬件 (Virtual Hardware) 下,将硬盘 2 (Hard disk 2) 设置增加到首选容量。单击确定 (OK)

    Harbor 安装屏幕截图

  4. 再次右键单击 Harbor OVA 虚拟机,然后选择电源 (Power) > 打开电源 (Power On) 以重新启动虚拟机。

    Harbor 安装屏幕截图

  5. 由于已重新启动 Harbor 虚拟机,您可能需要根据虚拟机的主机地址配置执行其他步骤:

  6. 静态 IP 地址:无其他步骤。

  7. 动态 IP 地址:如果 Harbor 虚拟机的 IP 地址已更改:

    1. 按照 Harbor 存储库中的如何将现有的已过期 Harbor CA 证书更换为新的证书线程中所述,为新的 IP 地址生成证书。
    2. 将新证书应用于虚拟机,如下面的轮换证书中所述。
  8. FQDN:如果 Harbor 虚拟机的 IP 地址已更改,请在虚拟机的 /etc/hosts 文件或 DNS 记录中更新其地址。

轮换证书

Harbor 虚拟机的 IP 地址发生更改时,轮换其证书:

  1. 使用 ssh 登录虚拟机。

  2. 停止 Harbor 服务:

    systemctl stop harbor
    
  3. 通过移动或重命名旧证书的 server.crtserver.keyca.crt 文件,对其进行备份:

    • server.crt 位于 /storage/data/secret/cert/server.crt
    • server.key 位于 /storage/data/secret/cert/server.key
    • ca.crt 位于 /storage/data/ca_download/ca.crt
  4. 将新证书的 server.crtserver.keyca.crt 保存到上述位置,并将其文件所有权和权限设置为与旧文件相同的设置。

  5. 启动 Harbor 服务:

    systemctl start harbor
    

下一步操作

使用此 Harbor 注册表在 Internet 受限环境中部署管理集群后,可以通过以下两种方式之一启用 TKG 工作负载集群以使用 Harbor:

  • 使用外部 Harbor 注册表。如果此注册表使用受信任的 CA 证书,则工作负载集群与注册表之间的连接是安全的。如果中央注册表使用自签名证书,则可以停用 TKG_CUSTOM_IMAGE_REPOSITORY_SKIP_TLS_VERIFY 并指定 TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE 选项。设置此选项会自动将自签名证书注入工作负载集群。

  • 将第二个 Harbor 实例部署为 TKG 中的共享服务。VMware 建议将 Harbor 软件包部署为由 TKG 管理的共享服务。有关详细信息,请参见为服务注册表安装 Harbor

在具有负载均衡的基础架构上,VMware 建议将外部 DNS 打包服务与 Harbor 服务一起安装,如 Harbor 注册表和外部 DNS 中所述。

check-circle-line exclamation-circle-line close-line
Scroll to top icon