17.2. 为 ZTP 准备 hub 集群


要在断开连接的环境中使用 RHACM,请创建一个镜像 registry,镜像 OpenShift Container Platform 发行镜像和包含所需 Operator 镜像的 Operator Lifecycle Manager (OLM) 目录。OLM 在集群中管理、安装和升级 Operator 及其依赖项。您还可以使用断开连接的镜像主机来提供用于置备裸机主机的 RHCOS ISO 和 RootFS 磁盘镜像。

17.2.1. 满足 Telco RAN 4.12 的解决方案软件版本

Red Hat Telco Radio Access Network (RAN) 版本 4.12 解决方案已使用以下红帽软件产品进行验证。

Expand
表 17.2. Telco RAN 4.12 验证的解决方案软件
产品软件版本

hub 集群 OpenShift Container Platform 版本

4.12

GitOps ZTP 插件

4.10、4.11 或 4.12

Red Hat Advanced Cluster Management (RHACM)

2.6, 2.7

Red Hat OpenShift GitOps

1.9, 1.10

Topology Aware Lifecycle Manager (TALM)

4.10、4.11 或 4.12

17.2.2. 在断开连接的环境中安装 GitOps ZTP

在断开连接的环境中,使用 Red Hat Advanced Cluster Management (RHACM)、Red Hat OpenShift GitOps 和 Topology Aware Lifecycle Manager (TALM) 来管理多个受管集群的部署。

先决条件

  • 已安装 OpenShift Container Platform CLI (oc)。
  • 您已以具有 cluster-admin 权限的用户身份登录。
  • 您已配置了断开连接的镜像 registry 以在集群中使用。

    注意

    您创建的断开连接的镜像 registry 必须包含 TALM backup 和 pre-cache 镜像的版本,该镜像与 hub 集群中运行的 TALM 版本匹配。spoke 集群必须能够在断开连接的镜像 registry 中解析这些镜像。

流程

在使用 Red Hat Advanced Cluster Management (RHACM) 在断开连接的环境中安装集群前,您必须首先托管 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像供其使用。使用断开连接的镜像来托管 RHCOS 镜像。

先决条件

  • 部署和配置 HTTP 服务器以托管网络上的 RHCOS 镜像资源。您必须能够从计算机以及您创建的机器访问 HTTP 服务器。
重要

RHCOS 镜像可能不会随着 OpenShift Container Platform 的每个发行版本而改变。您必须下载最高版本的镜像,其版本号应小于或等于您安装的版本。如果可用,请使用与 OpenShift Container Platform 版本匹配的镜像版本。您需要 ISO 和 RootFS 镜像在主机上安装 RHCOS。此安装类型不支持 RHCOS QCOW2 镜像。

流程

  1. 登录到镜像主机。
  2. mirror.openshift.com 获取 RHCOS ISO 和 RootFS 镜像,例如:

    1. 将所需的镜像名称和 OpenShift Container Platform 版本导出为环境变量:

      $ export ISO_IMAGE_NAME=<iso_image_name> 
      1
      Copy to Clipboard Toggle word wrap
      $ export ROOTFS_IMAGE_NAME=<rootfs_image_name> 
      1
      Copy to Clipboard Toggle word wrap
      $ export OCP_VERSION=<ocp_version> 
      1
      Copy to Clipboard Toggle word wrap
      1
      ISO 镜像名称,如 rhcos-4.12.1-x86_64-live.x86_64.iso
      1
      rootfs 镜像名称,如 rhcos-4.12.1-x86_64-live-rootfs.x86_64.img
      1
      OpenShift Container Platform 版本,如 4.12.1
    2. 下载所需的镜像:

      $ sudo wget https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.12/${OCP_VERSION}/${ISO_IMAGE_NAME} -O /var/www/html/${ISO_IMAGE_NAME}
      Copy to Clipboard Toggle word wrap
      $ sudo wget https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.12/${OCP_VERSION}/${ROOTFS_IMAGE_NAME} -O /var/www/html/${ROOTFS_IMAGE_NAME}
      Copy to Clipboard Toggle word wrap

验证步骤

  • 验证下载的镜像是否成功,并在断开连接的镜像主机上提供,例如:

    $ wget http://$(hostname)/${ISO_IMAGE_NAME}
    Copy to Clipboard Toggle word wrap

    输出示例

    Saving to: rhcos-4.12.1-x86_64-live.x86_64.iso
    rhcos-4.12.1-x86_64-live.x86_64.iso-  11%[====>    ]  10.01M  4.71MB/s
    Copy to Clipboard Toggle word wrap

17.2.4. 启用辅助服务

Red Hat Advanced Cluster Management (RHACM)使用辅助服务来部署 OpenShift Container Platform 集群。当您在 Red Hat Advanced Cluster Management (RHACM)上启用 MultiClusterHub Operator 时,辅助服务会自动部署。之后,您需要配置 Provisioning 资源以监视所有命名空间,并更新 AgentServiceConfig 自定义资源(CR)以引用托管在镜像 registry HTTP 服务器上的 ISO 和 RootFS 镜像。

先决条件

  • 已安装 OpenShift CLI(oc)。
  • 已以具有 cluster-admin 权限的用户身份登录到 hub 集群。
  • 启用了 MultiClusterHub 的 RHACM。

流程

  1. 启用 Provisioning 资源,以监视所有命名空间并为断开连接的环境配置镜像。如需更多信息,请参阅启用中央基础架构管理服务
  2. 运行以下命令来更新 AgentServiceConfig CR:

    $ oc edit AgentServiceConfig
    Copy to Clipboard Toggle word wrap
  3. 在 CR 的 items.spec.osImages 字段中添加以下条目:

    - cpuArchitecture: x86_64
        openshiftVersion: "4.12"
        rootFSUrl: https://<host>/<path>/rhcos-live-rootfs.x86_64.img
        url: https://<mirror-registry>/<path>/rhcos-live.x86_64.iso
    Copy to Clipboard Toggle word wrap

    其中:

    <host>
    是目标镜像 registry HTTP 服务器的完全限定域名 (FQDN)。
    <path>
    是目标镜像 registry 上镜像的路径。

    保存并退出编辑器以应用更改。

您可以将 hub 集群配置为使用断开连接的镜像 registry 作为断开连接的环境。

先决条件

  • 已安装 Red Hat Advanced Cluster Management (RHACM) 2.7 的断开连接的 hub 集群安装。
  • 您已在 HTTP 服务器中托管 rootfsiso 镜像。有关 Mirroring the OpenShift Container Platform image repository 的信息,请参阅附加资源部分
警告

如果为 HTTP 服务器启用 TLS,您必须确认 root 证书由客户端信任的颁发机构签名,并验证 OpenShift Container Platform hub 和受管集群和 HTTP 服务器之间的可信证书链。使用配置了不受信任的证书的服务器可防止将镜像下载到创建镜像中。不支持使用不受信任的 HTTPS 服务器。

流程

  1. 创建包含镜像 registry 配置的 ConfigMap

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: assisted-installer-mirror-config
      namespace: multicluster-engine 
    1
    
      labels:
        app: assisted-service
    data:
      ca-bundle.crt: <certificate> 
    2
    
      registries.conf: | 
    3
    
        unqualified-search-registries = ["registry.access.redhat.com", "docker.io"]
    
        [[registry]]
          location = <mirror_registry_url> 
    4
    
          insecure = false
          mirror-by-digest-only = true
    Copy to Clipboard Toggle word wrap
    1
    ConfigMap 命名空间必须设置为 multicluster-engine
    2
    创建镜像 registry 时使用的镜像 registry 证书。
    3
    镜像 registry 的配置文件。镜像 registry 配置将镜像信息添加到 Discovery 镜像中的 /etc/containers/registries.conf 中。在传递给安装程序时,镜像信息存储在 install-config.yaml 文件的 imageContentSources 部分中。在 HUB 集群中运行的 Assisted Service pod 从配置的镜像 registry 中获取容器镜像。
    4
    镜像 registry 的 URL。在配置镜像 registry 时,您必须运行 oc adm release mirror 命令使用 imageContentSources 部分中的 URL。如需更多信息,请参阅 Mirroring the OpenShift Container Platform image repository 部分。

    这会更新 AgentServiceConfig 自定义资源中的 mirrorRegistryRef,如下所示:

    输出示例

    apiVersion: agent-install.openshift.io/v1beta1
    kind: AgentServiceConfig
    metadata:
      name: agent
      namespace: multicluster-engine 
    1
    
    spec:
      databaseStorage:
        volumeName: <db_pv_name>
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: <db_storage_size>
      filesystemStorage:
        volumeName: <fs_pv_name>
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: <fs_storage_size>
      mirrorRegistryRef:
        name: assisted-installer-mirror-config 
    2
    
      osImages:
        - openshiftVersion: <ocp_version>
          url: <iso_url> 
    3
    Copy to Clipboard Toggle word wrap

    1
    AgentServiceConfig 命名空间设置为 multicluster-engine,以匹配 ConfigMap 命名空间
    2
    mirrorRegistryRef.name 设置为与相关 ConfigMap CR 中指定的定义匹配
    3
    设置在 httpd 服务器上托管的 ISO 的 URL
重要

集群安装过程中需要一个有效的 NTP 服务器。确保有合适的 NTP 服务器可用,并可通过断开连接的网络从安装的系统访问。

您可以将 hub 集群配置为使用未经身份验证的 registry。未经身份验证的 registry 不需要进行身份验证才能访问和下载镜像。

先决条件

  • 您已在 hub 集群上安装并配置了 hub 集群,并安装了 Red Hat Advanced Cluster Management (RHACM)。
  • 已安装 OpenShift Container Platform CLI (oc)。
  • 您已以具有 cluster-admin 权限的用户身份登录。
  • 已配置了一个未经身份验证的 registry 以用于 hub 集群。

流程

  1. 运行以下命令来更新 AgentServiceConfig 自定义资源 (CR):

    $ oc edit AgentServiceConfig agent
    Copy to Clipboard Toggle word wrap
  2. 在 CR 中添加 unauthenticatedRegistries 字段:

    apiVersion: agent-install.openshift.io/v1beta1
    kind: AgentServiceConfig
    metadata:
      name: agent
    spec:
      unauthenticatedRegistries:
      - example.registry.com
      - example.registry2.com
      ...
    Copy to Clipboard Toggle word wrap

    未经身份验证的 registry 在 AgentServiceConfig 资源的 spec.unauthenticatedRegistries 下列出。任何此列表中的 registry 都不需要在用于 spoke 集群安装的 pull secret 中有一个条目。assisted-service 通过确保包含用于安装的每个镜像 registry 的身份验证信息来验证 pull secret。

注意

镜像 registry 会自动添加到 ignore 列表中,不需要在 spec.unauthenticatedRegistries 下添加。在 ConfigMap 中指定 PUBLIC_CONTAINER_REGISTRIES 环境变量会用指定的值覆盖默认值。PUBLIC_CONTAINER_REGISTRIES 默认值是 quay.ioregistry.svc.ci.openshift.org

验证

运行以下命令,验证您可以从 hub 集群访问新添加的 registry:

  1. 在 hub 集群中打开一个 debug shell 提示符:

    $ oc debug node/<node_name>
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令测试对未经身份验证的 registry 的访问:

    sh-4.4# podman login -u kubeadmin -p $(oc whoami -t) <unauthenticated_registry>
    Copy to Clipboard Toggle word wrap

    其中:

    <unauthenticated_registry>
    新的 registry,如 unauthenticated-image-registry.openshift-image-registry.svc:5000

    输出示例

    Login Succeeded!
    Copy to Clipboard Toggle word wrap

17.2.7. 使用 ArgoCD 配置 hub 集群

您可以使用一组 ArgoCD 应用程序来配置 hub 集群,每个站点使用 GitOps 零接触置备 (ZTP) 生成所需的安装和策略自定义资源(CR)。

注意

Red Hat Advanced Cluster Management (RHACM) 使用 SiteConfig CR 为 ArgoCD 生成第 1 天受管集群安装 CR。每个 ArgoCD 应用程序都可以管理最多 300 个 SiteConfig CR。

先决条件

  • 已安装 Red Hat Advanced Cluster Management (RHACM) 和 Red Hat OpenShift GitOps 的 OpenShift Container Platform hub 集群。
  • 您已从 ZTP GitOps 插件容器中提取了引用部署,如 "Preparing the GitOps ZTP site configuration repository" 部分所述。提取引用部署会创建以下流程中引用的 out/argocd/deployment 目录。

流程

  1. 准备 ArgoCD 管道配置:

    1. 创建 Git 存储库,其目录结构类似于 example 目录。如需更多信息,请参阅"准备 GitOps ZTP 站点配置存储库"。
    2. 使用 ArgoCD UI 配置对存储库的访问。在 Settings 下配置以下内容:

      • Repositories - 添加连接信息。URL 必须以 .git 结尾,例如 https://repo.example.com/repo.git 和凭证。
      • 证书 - 如果需要,为存储库添加公共证书。
    3. 根据您的 Git 仓库修改两个 ArgoCD 应用程序, out/argocd/deployment/clusters-app.yamlout/argocd/deployment/policies-app.yaml

      • 更新 URL 以指向 Git 存储库。URL 以 .git 结尾,例如 https://repo.example.com/repo.git
      • targetRevision 表示要监控的 Git 存储库分支。
      • path 指定到 SiteConfigPolicyGenTemplate CR 的路径。
  2. 要安装 ZTP GitOps 插件,您必须使用之前提取到 out/argocd/deployment/ 目录中的补丁文件来修补 hub 集群中的 ArgoCD 实例。运行以下命令:

    $ oc patch argocd openshift-gitops \
    -n openshift-gitops --type=merge \
    --patch-file out/argocd/deployment/argocd-openshift-gitops-patch.json
    Copy to Clipboard Toggle word wrap
    注意

    对于断开连接的环境,使用本地 registry 中镜像的 ztp-site-generate 镜像,修改 out/argocd/deployment/argocd-openshift-gitops-patch.json 文件。运行以下命令:

    $ oc patch argocd openshift-gitops -n openshift-gitops --type='json' \
    -p='[{"op": "replace", "path": "/spec/repo/initContainers/0/image", \
    "value": "<local_registry>/<ztp_site_generate_image_ref>"}]'
    Copy to Clipboard Toggle word wrap

    其中:

    <local_registry>
    是断开连接的 registry 的 URL,例如 my.local.registry:5000
    <ztp-site-generate-image-ref>
    是本地 registry 中镜像 ztp-site-generate 镜像的路径,如 openshift4-ztp-site-generate:custom
  3. 在 RHACM 2.7 及更高版本中,多集群引擎默认启用 cluster-proxy-addon 功能。要禁用此功能,请应用以下补丁来禁用并删除负责此附加组件的相关 hub 集群和受管集群 pod。

    $ oc patch multiclusterengines.multicluster.openshift.io multiclusterengine --type=merge --patch-file out/argocd/deployment/disable-cluster-proxy-addon.json
    Copy to Clipboard Toggle word wrap
  4. 使用以下命令将管道配置应用到 hub 集群:

    $ oc apply -k out/argocd/deployment
    Copy to Clipboard Toggle word wrap

17.2.8. 准备 GitOps ZTP 站点配置存储库

在使用 ZTP GitOps 管道前,您需要准备 Git 存储库来托管站点配置数据。

先决条件

  • 已配置了 hub 集群 GitOps 应用程序来生成所需的安装和策略自定义资源 (CR)。
  • 您已使用 ZTP 部署受管集群。

流程

  1. 使用 SiteConfigPolicyGenTemplate CR 的单独路径创建一个目录结构。
  2. 使用以下命令,从 ztp-site-generate 容器镜像导出 argocd 目录:

    $ podman pull registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.12
    Copy to Clipboard Toggle word wrap
    $ mkdir -p ./out
    Copy to Clipboard Toggle word wrap
    $ podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.12 extract /home/ztp --tar | tar x -C ./out
    Copy to Clipboard Toggle word wrap
  3. 检查 out 目录是否包含以下子目录:

    • out/extra-manifest 包含 SiteConfig 用来生成额外清单 configMap 的源 CR 文件。
    • out/source-crs 包含 PolicyGenTemplate 用来生成 Red Hat Advanced Cluster Management(RHACM)策略的源 CR 文件。
    • out/argocd/deployment 包含补丁和 YAML 文件,可在 hub 集群中应用,以便在此过程的下一步中使用。
    • out/argocd/example 包含代表推荐的配置的 siteConfigPolicyGenTemplate 文件的示例。

out/argocd/example 下的目录结构充当 Git 存储库结构和内容的参考。示例包括用于单节点、三节点和标准集群的 SiteConfigPolicyGenTemplate 引用 CR。删除您对未使用集群类型的引用。以下示例描述了单节点集群网络的一组 CR:

example
├── policygentemplates
│   ├── common-ranGen.yaml
│   ├── example-sno-site.yaml
│   ├── group-du-sno-ranGen.yaml
│   ├── group-du-sno-validator-ranGen.yaml
│   ├── kustomization.yaml
│   └── ns.yaml
└── siteconfig
    ├── example-sno.yaml
    ├── KlusterletAddonConfigOverride.yaml
    └── kustomization.yaml
Copy to Clipboard Toggle word wrap

在单独的目录中,保持 SiteConfigPolicyGenTemplate CR。SiteConfigPolicyGenTemplate 目录必须包含一个 kustomization.yaml 文件,该文件明确包含该目录中的文件。

此目录结构以及 kustomization.yaml 文件必须提交并推送到 Git 存储库。初始推送到 Git 的推送应包含 kustomization.yaml 文件。在部署站点时,可以忽略 SiteConfig (example-sno.yaml) 和 PolicyGenTemplate (common-ranGen.yaml, group-du-sno*.yaml, and example-sno-site.yaml) 文件,并在以后需要时在推送它们。

只有在提交并推送到 Git 的一个或多个 SiteConfig CR 时,才需要 KlusterletAddonConfigOverride.yaml 文件。如需有关如何使用的示例,请参阅 example-sno.yaml

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat