准备外部平台镜像 Registry

对于新的生产部署,你可以使用客户自行管理的外部镜像 Registry 作为 Core、受管集群和 Extensions 的中央镜像源。在启动安装程序之前,Registry 必须包含完整的目标版本负载。

安装前准备 Registry

当选择外部 Registry 时,安装程序不会部署平台内置 Registry,也不会将缺失的镜像或软件包复制到外部 Registry。在运行 setup.sh 之前,请完成本页上的两种上传模式。

了解 Registry 角色

以下 Registry 角色彼此独立:

角色用途生命周期所有者
平台内置 Registry当安装 global 集群并将其镜像仓库设置为 Platform Deployment 时,用于存储平台 Core 镜像和 Extension 工件。 部署该服务;平台管理员负责其容量和备份。
外部平台镜像 Registry替代平台内置 Registry,作为 Core、受管集群和 Extensions 的镜像源。由你提供并运行该 Registry,并上传所需的每个目标版本负载。

本页配置的是 组件和集群使用的平台镜像源。它不配置应用工作负载的镜像服务。

平台内置 Registry 仍然支持现有环境和非生产评估。本页不描述从内置 Registry 到外部 Registry 的在线迁移。

Registry 要求

必需能力和访问权限

在上传目标版本负载之前,请确认 Registry:

  • 支持 Core Package 工具执行的标准容器镜像 push 和 pull 操作。
  • 使用如下形式的地址:<host-or-IP>[:port],例如 registry.example.com:5000。在安装程序的 Registry 地址中不要包含 http://https://
  • 可通过安装节点以及每个拉取平台镜像的集群节点所需的防火墙、代理和网络路由访问。
  • 提供可创建或更新所需仓库路径并推送镜像的上传凭据。传递给 setup.sh 的凭据必须具有 pull 权限。上传和 pull 凭据可以属于不同的账户;在对 setup.sh 进行身份验证时,请同时提供其用户名和密码。
  • 具有足够的可用存储空间,以容纳你上传的目标版本 Core 和 Extension 负载。

生产环境建议

对于生产 Registry:

  • 使用 HTTPS,并确保其证书对于 Registry 地址有效。确保安装节点以及每个拉取平台镜像的集群节点都信任签发该证书的 CA。
  • 使用稳定的 DNS 名称,并确保安装节点和所有集群节点都能解析。
  • 为每一种所需 CPU 架构以及用于升级、回滚和节点恢复时保留的版本规划容量。
  • 根据你的环境提供可用性、监控、备份和恢复能力。当新 Pod 启动、节点被替换、创建或升级集群,以及安装或升级 Extensions 时,都需要 Registry 可用。
  • 配置保留策略时,不要删除仍被已安装的平台版本、集群或 Extensions 引用的 manifest 或 digest。
客户自行管理的服务

会使用外部 Registry,但不会安装、升级、备份、监控或修复它。对于这些操作,请遵循你的 Registry 供应商提供的管理文档。

准备目标版本负载

使用与你将要安装的 Distribution Version 和 CPU 架构完全匹配的 Core Package。不要重复使用其他版本或架构的负载。

  1. 完成 下载,解压 Core Package,并切换到其 installer/ 目录。

  2. 按照 安装 中的说明,将所需的 Aligned Extension 软件包复制到 plugins/ 中。all 上传模式会处理当前位于此目录中的软件包。

  3. 在当前 shell 中设置 Registry 地址和上传凭据。读取密码时不要将其写入 shell history:

    export REGISTRY_ADDRESS="registry.example.com"
    export REGISTRY_USERNAME="<registry-username>"
    read -rsp "Registry password: " REGISTRY_PASSWORD
    export REGISTRY_PASSWORD
    printf '\n'

    对于允许匿名 push 的 Registry,请将 REGISTRY_USERNAMEREGISTRY_PASSWORD 都设置为空值。

  4. 从解压后的 installer/ 目录运行两种上传模式。你可以按任意顺序执行这些命令,但两者都必须成功完成:

    bash res/upload.sh all \
      "$REGISTRY_ADDRESS" "$REGISTRY_USERNAME" "$REGISTRY_PASSWORD"
    
    bash res/upload.sh necessary \
      "$REGISTRY_ADDRESS" "$REGISTRY_USERNAME" "$REGISTRY_PASSWORD"

    这两种模式有重叠,但彼此都不会替代对方:

    • all 会上传产品镜像、cluster version operator 镜像,以及当前 plugins/ 中的每个 *.tgz 软件包。它不会上传安装程序工件。
    • necessary 会上传产品镜像、cluster version operator 镜像、安装程序工件,以及创建 global 集群所需的 bootstrap plugins。它不会上传 plugins/ 中的所有软件包。
  5. 在 Registry 管理界面或 API 中,确认新上传的仓库和 manifest 已存在,并且不会立即被清理。

故障排除

症状可能原因操作
x509: certificate signed by unknown authorityRegistry CA 或中间证书不受信任。在安装节点以及每个拉取镜像的集群节点上安装完整的 CA 链,然后重试。不要在生产环境中用不安全的 Registry 代替 HTTPS 作为变通方案。
Certificate name mismatchRegistry 地址与证书的 subject alternative names 不匹配。使用证书所覆盖的 Registry DNS 名称,或替换证书。
unauthorized or authentication required上传凭据不正确,或缺少 push 权限。验证 res/upload.sh 使用的账户,并确认其可以 push 到所需的仓库路径。
denied or repository creation fails上传账户无法创建或更新所需的仓库路径。为该账户授予所需的仓库权限,然后重新运行两种上传模式。
报告找不到必需的软件包Core Package 不完整、解压了错误的版本或架构,或者所需的 Extension 软件包没有复制到 plugins/ 中。在重试之前,请验证软件包校验和、版本、架构以及 plugins/ 内容。

下一步

在两种上传模式都成功完成且 Registry 中包含目标负载后,继续执行 安装