×

您可以独立于中心集群、Red Hat Advanced Cluster Management (RHACM) 和受管理的 OpenShift Container Platform 集群更新 GitOps 零接触配置 (ZTP) 基础架构。

当新版本可用时,您可以更新 Red Hat OpenShift GitOps Operator。更新 GitOps ZTP 插件时,请查看参考配置中的更新文件,并确保更改符合您的要求。

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

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

GitOps ZTP 更新过程概述

您可以为运行早期版本 GitOps ZTP 基础架构的完全可操作的中心集群更新 GitOps 零接触配置 (ZTP)。更新过程不会影响受管理的集群。

对策略设置的任何更改(包括添加推荐内容)都会导致更新的策略,这些策略必须部署到受管理的集群并进行协调。

总的来说,更新 GitOps ZTP 基础架构的策略如下

  1. 使用 `ztp-done` 标签标记所有现有集群。

  2. 停止 ArgoCD 应用程序。

  3. 安装新的 GitOps ZTP 工具。

  4. 更新 Git 存储库中所需的内容和可选更改。

  5. 更新并重新启动应用程序配置。

升级准备

请使用以下步骤准备您的站点进行 GitOps 零接触配置 (ZTP) 升级。

步骤
  1. 获取最新版本的 GitOps ZTP 容器,该容器包含用于配置 Red Hat OpenShift GitOps 以与 GitOps ZTP 一起使用的自定义资源 (CR)。

  2. 使用以下命令解压argocd/deployment目录

    $ mkdir -p ./update
    $ podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.17 extract /home/ztp --tar | tar x -C ./update

    /update目录包含以下子目录:

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

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

    • update/argocd/deployment:包含应用于中心集群的补丁和 YAML 文件,用于此步骤的后续步骤。

    • update/argocd/example:包含代表推荐配置的示例SiteConfigPolicyGeneratorPolicyGentemplate 文件。

  3. 更新clusters-app.yamlpolicies-app.yaml文件以反映您的应用程序名称以及 Git 存储库的 URL、分支和路径。

    如果升级包含导致策略过时的更改,则应在执行升级之前删除过时的策略。

  4. 比较/update文件夹和您管理集群站点 CR 的 Git 存储库中配置和部署源 CR 之间的差异。将所需的更改应用并推送到您的站点存储库。

    将 GitOps ZTP 更新到最新版本时,必须将update/argocd/deployment目录中的更改应用到您的站点存储库。请勿使用旧版本的argocd/deployment/文件。

标记现有集群

为确保工具更新不会影响现有集群,请使用ztp-done标签标记所有现有的已管理集群。

此步骤仅适用于更新未通过拓扑感知生命周期管理器 (TALM) 配置的集群。使用 TALM 配置的集群会自动标记为ztp-done

步骤
  1. 查找列出使用 GitOps 零接触配置 (ZTP) 部署的已管理集群的标签选择器,例如local-cluster!=true

    $ oc get managedcluster -l 'local-cluster!=true'
  2. 确保结果列表包含所有使用 GitOps ZTP 部署的已管理集群,然后使用该选择器添加ztp-done标签。

    $ oc label managedcluster -l 'local-cluster!=true' ztp-done=

停止现有的 GitOps ZTP 应用程序

删除现有应用程序可确保在提供新版本的工具之前不会推出对 Git 存储库中现有内容的任何更改。

使用deployment目录中的应用程序文件。如果您为应用程序使用了自定义名称,请先更新这些文件中的名称。

步骤
  1. clusters应用程序执行非级联删除,以保留所有生成的资源。

    $ oc delete -f update/argocd/deployment/clusters-app.yaml
  2. policies应用程序执行级联删除以删除所有以前的策略。

    $ oc patch -f policies-app.yaml -p '{"metadata": {"finalizers": ["resources-finalizer.argocd.argoproj.io"]}}' --type merge
    $ oc delete -f update/argocd/deployment/policies-app.yaml

Git 存储库所需的更改

ztp-site-generate容器从 GitOps 零接触配置 (ZTP) 的早期版本升级到 4.10 或更高版本时,对 Git 存储库的内容有其他要求。必须更新存储库中的现有内容以反映这些更改。

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

  • PolicyGenerator文件进行必要的更改

    所有PolicyGenerator文件都必须在以ztp为前缀的Namespace中创建。这可确保 GitOps ZTP 应用程序能够管理 GitOps ZTP 生成的策略 CR,而不会与 Red Hat Advanced Cluster Management (RHACM) 内部管理策略的方式冲突。

  • kustomization.yaml文件添加到存储库

    所有SiteConfigPolicyGenerator CR 都必须包含在其各自的目录树下的kustomization.yaml文件中。例如:

    ├── acmpolicygenerator
    │   ├── site1-ns.yaml
    │   ├── site1.yaml
    │   ├── site2-ns.yaml
    │   ├── site2.yaml
    │   ├── common-ns.yaml
    │   ├── common-ranGen.yaml
    │   ├── group-du-sno-ranGen-ns.yaml
    │   ├── group-du-sno-ranGen.yaml
    │   └── kustomization.yaml
    └── siteconfig
        ├── site1.yaml
        ├── site2.yaml
        └── kustomization.yaml

    generator部分中列出的文件必须仅包含SiteConfig{policy-gen-cr} CR。如果您的现有 YAML 文件包含其他 CR(例如Namespace),则必须将这些其他 CR 分离到单独的文件中,并在resources部分中列出。

    PolicyGenerator kustomization 文件必须在generator部分包含所有PolicyGenerator YAML 文件,在resources部分包含Namespace CR。例如:

    apiVersion: kustomize.config.k8s.io/v1beta1
    kind: Kustomization
    
    generators:
    - acm-common-ranGen.yaml
    - acm-group-du-sno-ranGen.yaml
    - site1.yaml
    - site2.yaml
    
    resources:
    - common-ns.yaml
    - acm-group-du-sno-ranGen-ns.yaml
    - site1-ns.yaml
    - site2-ns.yaml

    SiteConfig kustomization 文件必须在generator部分包含所有SiteConfig YAML 文件,以及resources中的任何其他 CR。

    apiVersion: kustomize.config.k8s.io/v1beta1
    kind: Kustomization
    
    generators:
    - site1.yaml
    - site2.yaml
  • 删除pre-sync.yamlpost-sync.yaml文件。

    在 OpenShift Container Platform 4.10 及更高版本中,不再需要pre-sync.yamlpost-sync.yaml文件。update/deployment/kustomization.yaml CR 管理中心集群上的策略部署。

    SiteConfig{policy-gen-cr}树下都有一组pre-sync.yamlpost-sync.yaml文件。

  • 查看并合并推荐的更改

    每个版本都可能包含对应用于已部署集群的配置的额外推荐更改。通常,这些更改会导致 OpenShift 平台的 CPU 使用率降低、增加功能或改进平台的调整。

    查看适用于网络中集群类型的参考SiteConfigPolicyGenerator CR。这些示例可以在从 GitOps ZTP 容器解压的argocd/example目录中找到。

安装新的 GitOps ZTP 应用程序

使用解压的argocd/deployment目录,并在确保应用程序指向您的站点 Git 存储库后,应用部署目录的全部内容。应用目录的全部内容可确保正确配置应用程序的所有必要资源。

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

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

      表 1. 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

部署 GitOps ZTP 配置更改

如果升级中包含任何配置更改(例如实施推荐更改),则升级过程会在 hub 集群中生成一组状态为Non-Compliant 的策略 CR。 使用 GitOps Zero Touch Provisioning (ZTP) 4.10 及更高版本的 ztp-site-generate 容器,这些策略将设置为inform 模式,并且不会在用户执行额外步骤的情况下推送到受管集群。 这确保了可以管理对集群的潜在破坏性更改的时间(例如,在维护窗口期间)和并发更新的集群数量。

要部署这些更改,请根据 TALM 文档中所述创建⼀个或多个ClusterGroupUpgrade CR。CR 必须包含要推送到受管集群的Non-Compliant策略列表,以及应包含在更新中的集群列表或选择器。

其他资源