×

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

Telco RAN DU 4.17验证的软件组件

Red Hat telco RAN DU 4.17解决方案已使用以下Red Hat软件产品针对OpenShift Container Platform受管集群和中心集群进行了验证。

表1. Telco RAN DU受管集群验证的软件组件
组件 软件版本

受管集群版本

4.17

集群日志记录操作符

6.0

本地存储操作符

4.17

OpenShift API for Data Protection (OADP)

1.4.1

PTP操作符

4.17

SRIOV操作符

4.17

SRIOV-FEC操作符

2.9

生命周期代理

4.17

表2. 中心集群验证的软件组件
组件 软件版本

中心集群版本

4.17

Red Hat Advanced Cluster Management (RHACM)

2.11

GitOps ZTP插件

4.17

Red Hat OpenShift GitOps

1.13

拓扑感知生命周期管理器 (TALM)

4.17

GitOps ZTP推荐的中心集群规格和受管集群限制

使用GitOps零接触配置 (ZTP),您可以管理地理位置分散的区域和网络中的数千个集群。Red Hat性能和规模实验室已成功地从单个Red Hat Advanced Cluster Management (RHACM)中心集群在一个实验室环境中创建和管理3500个具有简化DU配置文件的虚拟单节点OpenShift集群。

在现实情况下,您可以管理的集群数量的扩展限制将根据影响中心集群的各种因素而有所不同,例如:

中心集群资源

可用的中心集群主机资源(CPU、内存、存储)是确定中心集群可以管理多少个集群的重要因素。分配给中心集群的资源越多,它可以容纳的受管集群就越多。

中心集群存储

中心集群主机存储IOPS等级以及中心集群主机是否使用NVMe存储会影响中心集群的性能及其可以管理的集群数量。

网络带宽和延迟

中心集群和受管集群之间的网络连接速度慢或延迟高会影响中心集群管理多个集群的方式。

受管集群的大小和复杂性

受管集群的大小和复杂性也会影响中心集群的容量。具有更多节点、命名空间和资源的较大受管集群需要额外的处理和管理资源。同样,具有复杂配置(例如RAN DU配置文件或各种工作负载)的集群可能需要中心集群提供更多资源。

受管策略的数量

中心集群管理的策略数量与绑定到这些策略的已管理集群数量之比,是决定可以管理多少集群的重要因素。

监控和管理工作负载

RHACM 持续监控和管理已管理集群。中心集群上运行的监控和管理工作负载的数量和复杂性会影响其容量。密集型监控或频繁的协调操作可能需要额外资源,从而可能限制可管理集群的数量。

RHACM 版本和配置

不同版本的 RHACM 可能具有不同的性能特征和资源需求。此外,RHACM 的配置设置(例如并发协调的数量或健康检查的频率)会影响中心集群的已管理集群容量。

使用以下代表性配置和网络规范来开发您自己的中心集群和网络规范。

以下指南仅基于内部实验室基准测试,并不代表完整的裸机主机规范。

表 3. 代表性的三节点中心集群机器规格
需求 描述

OpenShift Container Platform

4.13 版本

RHACM

2.7 版本

拓扑感知生命周期管理器 (TALM)

4.13 版本

服务器硬件

3 台 Dell PowerEdge R650 机架服务器

NVMe 硬盘

  • 50 GB 磁盘用于 /var/lib/etcd

  • 2.9 TB 磁盘用于 /var/lib/containers

SSD 硬盘

  • 1 个 SSD 分割成 15 个 200GB 稀疏置备的逻辑卷,作为 PV CR 置备

  • 1 个 SSD 用作额外的超大 PV 资源

应用的 DU 配置文件策略数量

5

以下网络规范代表典型的现实世界 RAN 网络,并在测试期间应用于规模实验室环境。

表 4. 模拟实验室环境网络规范
规格 描述

往返时间 (RTT) 延迟

50 毫秒

丢包率

0.02% 丢包率

网络带宽限制

20 Mbps

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

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

先决条件
  • 您已安装 OpenShift Container Platform CLI (oc)。

  • 您已以具有 cluster-admin 权限的用户身份登录。

  • 您已配置用于集群的断开连接镜像注册表。

    您创建的断开连接镜像注册表必须包含与中心集群中运行的 TALM 版本匹配的 TALM 备份和预缓存镜像版本。 spoke 集群必须能够在断开连接的镜像注册表中解析这些镜像。

步骤

将 RHCOS ISO 和 RootFS 镜像添加到断开连接的镜像主机

在使用 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)
      $ export ROOTFS_IMAGE_NAME=<rootfs_image_name> (2)
      $ export OCP_VERSION=<ocp_version> (3)
      1 ISO 镜像名称,例如 rhcos-4.17.1-x86_64-live.x86_64.iso
      2 RootFS 镜像名称,例如 rhcos-4.17.1-x86_64-live-rootfs.x86_64.img
      3 OpenShift Container Platform 版本,例如 4.17.1
    2. 下载所需的镜像

      $ sudo wget https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.17/${OCP_VERSION}/${ISO_IMAGE_NAME} -O /var/www/html/${ISO_IMAGE_NAME}
      $ sudo wget https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.17/${OCP_VERSION}/${ROOTFS_IMAGE_NAME} -O /var/www/html/${ROOTFS_IMAGE_NAME}
验证步骤
  • 验证已成功下载镜像并正在断开连接的镜像主机上提供服务,例如

    $ wget http://$(hostname)/${ISO_IMAGE_NAME}
    示例输出
    Saving to: rhcos-4.17.1-x86_64-live.x86_64.iso
    rhcos-4.17.1-x86_64-live.x86_64.iso-  11%[====>    ]  10.01M  4.71MB/s

启用辅助服务

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

先决条件
  • 您已安装 OpenShift CLI (oc)。

  • 您已以具有 cluster-admin 权限的用户身份登录中心集群。

  • 您已启用 MultiClusterHub 的 RHACM。

步骤
  1. 启用 Provisioning 资源以监视所有命名空间并为断开连接的环境配置镜像。有关更多信息,请参阅 启用中央基础设施管理服务

  2. 通过运行以下命令更新 AgentServiceConfig CR

    $ oc edit AgentServiceConfig
  3. 将以下条目添加到 CR 中的 items.spec.osImages 字段

    - cpuArchitecture: x86_64
        openshiftVersion: "4.17"
        rootFSUrl: https://<host>/<path>/rhcos-live-rootfs.x86_64.img
        url: https://<host>/<path>/rhcos-live.x86_64.iso

    其中

    <host>

    是目标镜像注册表 HTTP 服务器的完全限定域名 (FQDN)。

    <path>

    是目标镜像注册表上镜像的路径。

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

配置中心集群以使用断开连接的镜像注册表

您可以配置中心集群以对断开连接的环境使用断开连接的镜像注册表。

先决条件
  • 您已安装 Red Hat Advanced Cluster Management (RHACM) 2.11 的断开连接中心集群安装。

  • 您已在 HTTP 服务器上托管了 rootfsiso 镜像。有关镜像 OpenShift Container Platform 镜像库的指南,请参阅“其他资源”部分。

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

步骤
  1. 创建一个包含镜像注册表配置的 ConfigMap

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: assisted-installer-mirror-config
      namespace: multicluster-engine (1)
      labels:
        app: assisted-service
    data:
      ca-bundle.crt: | (2)
        -----BEGIN CERTIFICATE-----
        <certificate_contents>
        -----END CERTIFICATE-----
    
      registries.conf: | (3)
        unqualified-search-registries = ["registry.access.redhat.com", "docker.io"]
    
        [[registry]]
           prefix = ""
           location = "quay.io/example-repository" (4)
           mirror-by-digest-only = true
    
           [[registry.mirror]]
           location = "mirror1.registry.corp.com:5000/example-repository" (5)
    1 ConfigMap 命名空间必须设置为 multicluster-engine
    2 创建镜像注册表时使用的镜像注册表的证书。
    3 镜像注册表的配置文件。镜像注册表配置将镜像信息添加到发现镜像中的 /etc/containers/registries.conf 文件。当信息传递给安装程序时,镜像信息存储在 install-config.yaml 文件的 imageContentSources 部分中。在中心集群上运行的辅助服务 pod 从配置的镜像注册表获取容器镜像。
    4 镜像注册表的 URL。配置镜像注册表时,必须使用运行oc adm release mirror命令时从imageContentSources部分获取的 URL。有关更多信息,请参阅镜像 OpenShift Container Platform 镜像仓库部分。
    5 registries.conf文件中定义的注册表必须按仓库进行范围限定,而不是按注册表进行范围限定。在此示例中,quay.io/example-repositorymirror1.registry.corp.com:5000/example-repository仓库都由example-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> (3)
          url: <iso_url> (4)
    1 AgentServiceConfig命名空间设置为multicluster-engine,以匹配ConfigMap命名空间。
    2 mirrorRegistryRef.name设置为与相关ConfigMap CR 中指定的定义匹配。
    3 将 OpenShift Container Platform 版本设置为 x.y 或 x.y.z 格式。
    4 设置httpd服务器上托管的 ISO 的 URL。

集群安装期间需要有效的 NTP 服务器。确保合适的 NTP 服务器可用,并且可以通过断开连接的网络从已安装的集群访问。

配置中心集群以使用未经身份验证的注册表

您可以配置中心集群以使用未经身份验证的注册表。未经身份验证的注册表不需要身份验证即可访问和下载镜像。

先决条件
  • 您已安装并配置了中心集群,并在中心集群上安装了 Red Hat Advanced Cluster Management (RHACM)。

  • 您已安装 OpenShift Container Platform 命令行界面 (oc)。

  • 您已以具有 cluster-admin 权限的用户身份登录。

  • 您已配置了一个未经身份验证的注册表,用于与中心集群一起使用。

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

    $ oc edit AgentServiceConfig agent
  2. 在 CR 中添加unauthenticatedRegistries字段

    apiVersion: agent-install.openshift.io/v1beta1
    kind: AgentServiceConfig
    metadata:
      name: agent
    spec:
      unauthenticatedRegistries:
      - example.registry.com
      - example.registry2.com
      ...

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

镜像注册表会自动添加到忽略列表中,无需在spec.unauthenticatedRegistries下添加。在ConfigMap中指定PUBLIC_CONTAINER_REGISTRIES环境变量会使用指定的值覆盖默认值。PUBLIC_CONTAINER_REGISTRIES的默认值为quay.ioregistry.svc.ci.openshift.org

验证

通过运行以下命令,验证您可以从中心集群访问新添加的注册表

  1. 打开中心集群的调试 shell 提示符

    $ oc debug node/<node_name>
  2. 通过运行以下命令测试对未经身份验证的注册表的访问

    sh-4.4# podman login -u kubeadmin -p $(oc whoami -t) <unauthenticated_registry>

    其中

    <unauthenticated_registry>

    例如,新的注册表是unauthenticated-image-registry.openshift-image-registry.svc:5000

    示例输出
    Login Succeeded!

使用 ArgoCD 配置中心集群

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

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

先决条件
  • 您拥有一个安装了 Red Hat Advanced Cluster Management (RHACM) 和 Red Hat OpenShift GitOps 的 OpenShift Container Platform 中心集群。

  • 您已从 GitOps ZTP 插件容器中提取了参考部署,如“准备 GitOps ZTP 站点配置仓库”部分所述。提取参考部署会创建以下过程中引用的out/argocd/deployment目录。

步骤
  1. 准备 ArgoCD 管道配置

    1. 创建一个具有类似于示例目录的目录结构的 Git 仓库。有关更多信息,请参阅“准备 GitOps ZTP 站点配置仓库”。

    2. 使用 ArgoCD UI 配置对仓库的访问。在**设置**下配置以下内容

      • **仓库** - 添加连接信息。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分别指定SiteConfigPolicyGeneratorPolicyGentemplate CR 的路径。

  1. 要安装 GitOps ZTP 插件,请使用相关的多集群引擎 (MCE) 订阅镜像修补中心集群中的 ArgoCD 实例。为您的环境自定义您之前提取到out/argocd/deployment/目录中的修补文件。

    1. 选择与您的 RHACM 版本匹配的multicluster-operators-subscription镜像。

      表 5. multicluster-operators-subscription镜像版本
      OpenShift Container Platform 版本 RHACM 版本 MCE 版本 MCE RHEL 版本 MCE 镜像

      4.14, 4.15, 4.16

      2.8, 2.9

      2.8, 2.9

      RHEL 8

      registry.redhat.io/rhacm2/multicluster-operators-subscription-rhel8:v2.8

      registry.redhat.io/rhacm2/multicluster-operators-subscription-rhel8:v2.9

      4.14, 4.15, 4.16

      2.10

      2.10

      RHEL 9

      registry.redhat.io/rhacm2/multicluster-operators-subscription-rhel9:v2.10

      multicluster-operators-subscription镜像的版本应与 RHACM 版本匹配。从 MCE 2.10 版本开始,RHEL 9 是multicluster-operators-subscription镜像的基础镜像。

    2. 将以下配置添加到out/argocd/deployment/argocd-openshift-gitops-patch.json文件中

      {
        "args": [
          "-c",
          "mkdir -p /.config/kustomize/plugin/policy.open-cluster-management.io/v1/policygenerator && cp /policy-generator/PolicyGenerator-not-fips-compliant /.config/kustomize/plugin/policy.open-cluster-management.io/v1/policygenerator/PolicyGenerator" (1)
        ],
        "command": [
          "/bin/bash"
        ],
        "image": "registry.redhat.io/rhacm2/multicluster-operators-subscription-rhel9:v2.10",  (2) (3)
        "name": "policy-generator-install",
        "imagePullPolicy": "Always",
        "volumeMounts": [
          {
            "mountPath": "/.config",
            "name": "kustomize"
          }
        ]
      }
      1 可选:对于 RHEL 9 镜像,请将/policy-generator/PolicyGenerator-not-fips-compliant文件夹中所需的通用可执行文件复制到 ArgoCD 版本中。
      2 multicluster-operators-subscription镜像与 RHACM 版本匹配。
      3 在断开连接的环境中,将multicluster-operators-subscription镜像的 URL 替换为您环境中断开连接的注册表等效项。
    3. 修补 ArgoCD 实例。运行以下命令

      $ oc patch argocd openshift-gitops \
      -n openshift-gitops --type=merge \
      --patch-file out/argocd/deployment/argocd-openshift-gitops-patch.json
  2. 在 RHACM 2.7 及更高版本中,多集群引擎默认启用cluster-proxy-addon功能。应用以下补丁以禁用cluster-proxy-addon功能并删除负责此附加组件的相关中心集群和托管 Pod。运行以下命令

    $ oc patch multiclusterengines.multicluster.openshift.io multiclusterengine --type=merge --patch-file out/argocd/deployment/disable-cluster-proxy-addon.json
  3. 通过运行以下命令将管道配置应用于您的中心集群

    $ oc apply -k out/argocd/deployment
  4. 可选:如果您有现有的 ArgoCD 应用程序,请通过运行以下命令验证PrunePropagationPolicy=background策略是否已在Application资源中设置

    $ oc -n openshift-gitops get applications.argoproj.io  \
    clusters -o jsonpath='{.spec.syncPolicy.syncOptions}' |jq
    现有策略的示例输出
    [
      "CreateNamespace=true",
      "PrunePropagationPolicy=background",
      "RespectIgnoreDifferences=true"
    ]
    1. 如果spec.syncPolicy.syncOption字段不包含PrunePropagationPolicy参数或PrunePropagationPolicy设置为foreground值,请在Application资源中将策略设置为background。请参见以下示例

      kind: Application
      spec:
        syncPolicy:
          syncOptions:
          - PrunePropagationPolicy=background

    设置background删除策略可确保删除ManagedCluster CR 及其所有关联资源。

准备 GitOps ZTP 站点配置仓库

在您可以使用 GitOps 零接触配置 (ZTP) 管道之前,您需要准备 Git 仓库以托管站点配置数据。

先决条件
  • 您已配置中心集群 GitOps 应用程序以生成所需的安装和策略自定义资源 (CR)。

  • 您已使用 GitOps ZTP 部署了托管集群。

步骤
  1. 创建一个目录结构,为SiteConfigPolicyGeneratorPolicyGentemplate CR 分别创建路径。

    SiteConfigPolicyGeneratorPolicyGentemplate CR 保存在单独的目录中。SiteConfigPolicyGeneratorPolicyGentemplate目录都必须包含一个kustomization.yaml文件,该文件显式包含该目录中的文件。

  2. 使用以下命令导出ztp-site-generate容器映像中的argocd目录

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

    • out/extra-manifest包含SiteConfig用于生成额外清单configMap的源 CR 文件。

    • out/source-crs包含PolicyGenerator用于生成 Red Hat Advanced Cluster Management (RHACM)策略的源 CR 文件。

    • out/argocd/deployment包含要应用于中心集群的补丁和 YAML 文件,以便在该过程的下一步中使用。

    • out/argocd/example包含SiteConfigPolicyGeneratorPolicyGentemplate文件的示例,这些文件代表推荐的配置。

  4. out/source-crs文件夹及其内容复制到PolicyGeneratorPolicyGentemplate目录。

  5. out/extra-manifests 目录包含 RAN DU 集群的参考清单。将out/extra-manifests目录复制到SiteConfig文件夹。此目录应仅包含来自ztp-site-generate容器的 CR。请勿在此处添加用户提供的 CR。如果要使用用户提供的 CR,则必须为该内容创建另一个目录,例如:

    example/
      ├── acmpolicygenerator
      │   ├── kustomization.yaml
      │   └── source-crs/
      ├── policygentemplates (1)
      │   ├── kustomization.yaml
      │   └── source-crs/
      └── siteconfig
            ├── extra-manifests
            └── kustomization.yaml
    1 使用PolicyGenTemplate CR 管理和部署策略以管理集群的功能将在未来的 OpenShift Container Platform 版本中弃用。可以使用 Red Hat Advanced Cluster Management (RHACM) 和PolicyGenerator CR 获得等效且改进的功能。
  6. 提交目录结构和kustomization.yaml文件并推送到您的 Git 存储库。对 Git 的初始推送应包含kustomization.yaml文件。

您可以使用out/argocd/example下的目录结构作为 Git 存储库的结构和内容的参考。该结构包括用于单节点、三节点和标准集群的SiteConfigPolicyGeneratorPolicyGentemplate参考 CR。删除您不使用的集群类型的引用。

对于所有集群类型,您必须:

  • source-crs子目录添加到acmpolicygeneratorpolicygentemplates目录。

  • extra-manifests目录添加到siteconfig目录。

以下示例描述了一组用于单节点集群网络的 CR。

example/
  ├── acmpolicygenerator
  │   ├── acm-common-ranGen.yaml
  │   ├── acm-example-sno-site.yaml
  │   ├── acm-group-du-sno-ranGen.yaml
  │   ├── group-du-sno-validator-ranGen.yaml
  │   ├── kustomization.yaml
  │   ├── source-crs/
  │   └── ns.yaml
  └── siteconfig
        ├── example-sno.yaml
        ├── extra-manifests/ (1)
        ├── custom-manifests/ (2)
        ├── KlusterletAddonConfigOverride.yaml
        └── kustomization.yaml
1 包含来自ztp-container的参考清单。
2 包含自定义清单。

使用PolicyGenTemplate CR 管理和部署策略以管理托管集群的功能将在即将发布的 OpenShift Container Platform 版本中弃用。可以使用 Red Hat Advanced Cluster Management (RHACM) 和PolicyGenerator CR 获得等效且改进的功能。

有关PolicyGenerator资源的更多信息,请参阅 RHACM 策略生成器文档。

准备与版本无关的 GitOps ZTP 站点配置存储库

您可以使用 GitOps ZTP 管理运行不同 OpenShift Container Platform 版本的托管集群的源自定义资源 (CR)。这意味着中心集群上运行的 OpenShift Container Platform 版本可以独立于托管集群上运行的版本。

以下过程假设您使用PolicyGenerator资源而不是PolicyGentemplate资源来管理集群策略。

先决条件
  • 您已安装 OpenShift CLI (oc)。

  • 您已以具有 cluster-admin 权限的用户身份登录。

步骤
  1. 创建一个目录结构,为SiteConfigPolicyGenerator CR 分别创建路径。

  2. PolicyGenerator目录中,为要提供的每个 OpenShift Container Platform 版本创建一个目录。对于每个版本,创建以下资源:

    • 显式包含该目录中文件的kustomization.yaml文件

    • source-crs目录,用于包含来自ztp-site-generate容器的参考 CR 配置文件

      如果要使用用户提供的 CR,则必须为其创建一个单独的目录。

  3. /siteconfig目录中,为要提供的每个 OpenShift Container Platform 版本创建一个子目录。对于每个版本,至少创建一个目录来存放要从容器复制的参考 CR。对目录的命名或参考目录的数量没有限制。如果要使用自定义清单,则必须为其创建一个单独的目录。

    以下示例描述了一个使用用户提供的清单和针对不同 OpenShift Container Platform 版本的 CR 的结构。

    ├── acmpolicygenerator
    │   ├── kustomization.yaml (1)
    │   ├── version_4.13 (2)
    │   │   ├── common-ranGen.yaml
    │   │   ├── group-du-sno-ranGen.yaml
    │   │   ├── group-du-sno-validator-ranGen.yaml
    │   │   ├── helix56-v413.yaml
    │   │   ├── kustomization.yaml (3)
    │   │   ├── ns.yaml
    │   │   └── source-crs/ (4)
    │   │      └── reference-crs/ (5)
    │   │      └── custom-crs/ (6)
    │   └── version_4.14 (2)
    │       ├── common-ranGen.yaml
    │       ├── group-du-sno-ranGen.yaml
    │       ├── group-du-sno-validator-ranGen.yaml
    │       ├── helix56-v414.yaml
    │       ├── kustomization.yaml (3)
    │       ├── ns.yaml
    │       └── source-crs/ (4)
    │         └── reference-crs/ (5)
    │         └── custom-crs/ (6)
    └── siteconfig
        ├── kustomization.yaml
        ├── version_4.13
        │   ├── helix56-v413.yaml
        │   ├── kustomization.yaml
        │   ├── extra-manifest/ (7)
        │   └── custom-manifest/ (8)
        └── version_4.14
            ├── helix57-v414.yaml
            ├── kustomization.yaml
            ├── extra-manifest/ (7)
            └── custom-manifest/ (8)
    1 创建一个顶级kustomization YAML 文件。
    2 在自定义/acmpolicygenerator目录中创建特定于版本的目录。
    3 为每个版本创建一个kustomization.yaml文件。
    4 为每个版本创建一个source-crs目录,用于包含来自ztp-site-generate容器的参考 CR。
    5 创建reference-crs目录,用于存放从 ZTP 容器提取的策略 CR。
    6 可选:为用户提供的 CR 创建一个custom-crs目录。
    7 在自定义/siteconfig目录中创建一个目录,用于包含来自ztp-site-generate容器的额外清单。
    8 创建一个文件夹来保存用户提供的清单。

    在上例中,自定义/siteconfig目录中的每个版本子目录都包含另外两个子目录,一个包含从容器复制的参考清单,另一个包含您提供的自定义清单。分配给这些目录的名称只是示例。如果您使用用户提供的 CR,则SiteConfig CR 中extraManifests.searchPaths下列出的最后一个目录必须是包含用户提供的 CR 的目录。

  4. 编辑SiteConfig CR 以包含您已创建的任何目录的搜索路径。extraManifests.searchPaths下列出的第一个目录必须是包含参考清单的目录。请考虑列出目录的顺序。在目录包含同名文件的案例中,最终目录中的文件优先。

    SiteConfig CR 示例
    extraManifests:
        searchPaths:
        - extra-manifest/ (1)
        - custom-manifest/ (2)
    1 包含参考清单的目录必须在extraManifests.searchPaths下首先列出。
    2 如果您使用的是用户提供的 CR,则SiteConfig CR 中extraManifests.searchPaths下列出的最后一个目录必须是包含这些用户提供的 CR 的目录。
  5. 编辑顶层kustomization.yaml文件以控制哪些 OpenShift Container Platform 版本处于活动状态。以下是顶层kustomization.yaml文件的一个示例。

    resources:
    - version_4.13 (1)
    #- version_4.14 (2)
    1 激活 4.13 版本。
    2 使用注释停用版本。