19.11. 更新 GitOps ZTP
您可以独立于 hub 集群、Red Hat Advanced Cluster Management (RHACM) 和受管 OpenShift Container Platform 集群更新 Gitops 零接触置备 (ZTP) 基础架构。
当新版本可用时,您可以更新 Red Hat OpenShift GitOps Operator。更新 GitOps ZTP 插件时,请查看参考配置中的更新文件,并确保更改满足您的要求。
19.11.1. GitOps ZTP 更新过程概述
您可以为运行较早版本的 GitOps ZTP 集群更新 GitOps 零接触置备 (ZTP)。更新过程可避免对受管集群的影响。
对策略设置的任何更改(包括添加推荐内容)都会生成要应用到受管集群并协调的更新策略。
在高级别上,更新 GitOps ZTP 基础架构的策略如下:
-
使用
ztp-done
标签标记所有现有集群。 - 停止 ArgoCD 应用程序。
- 安装新的 GitOps ZTP 工具。
- 更新 Git 存储库中的所需内容和可选更改。
- 更新并重启应用程序配置。
19.11.2. 准备升级
使用以下步骤为 GitOps 零接触置备(ZTP)升级准备您的站点。
流程
- 获取具有用于配置 Red Hat OpenShift GitOps 的自定义资源 (CR) 的 GitOps ZTP 容器的最新版本,以用于 GitOps ZTP。
使用以下命令提取
argocd/deployment
目录:$ mkdir -p ./update
$ podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v{product-version} extract /home/ztp --tar | tar x -C ./update
/update
目录包含以下子目录:-
update/extra-manifest
: 包含SiteConfig
CR 用来生成额外清单configMap
的源 CR 文件。 -
update/source-crs
:包含PolicyGenTemplate
CR 用于生成 Red Hat Advanced Cluster Management(RHACM)策略的源 CR 文件。 -
update/argocd/deployment
: 包含要在 hub 集群上应用的补丁和 YAML 文件,以便在此过程的下一步中使用。 -
update/argocd/example
包含代表推荐的配置的siteConfig
和PolicyGenTemplate
文件的示例。
-
更新
cluster-app.yaml
和policies-app.yaml
文件,以反映应用程序的名称以及 Git 仓库的 URL、分支和路径。如果升级包含导致过时的策略的更改,则应该在执行升级前删除过时的策略。
在
/update
文件夹和 Git 仓库(您管理团队站点 CR)中的配置和部署源 CR 之间的更改进行 diff 操作。应用所需的更改并将其推送到您的站点存储库。重要当您将 GitOps ZTP 更新至最新版本时,您必须将
update/argocd/deployment
目录中的更改应用到您的站点存储库。不要使用旧版本的argocd/deployment/
文件。
19.11.3. 标记现有集群
为确保现有集群由工具更新保持不变,请使用 ztp-done
标签标记所有现有的受管集群。
此流程仅在更新没有使用 Topology Aware Lifecycle Manager (TALM) 置备的集群时应用。使用 TALM 置备的集群会使用 ztp-done
自动标记。
流程
找到列出使用零接触置备(ZTP)部署的受管集群的标签选择器,如
local-cluster!=true
:$ oc get managedcluster -l 'local-cluster!=true'
确保生成的列表中包含使用 ZTP 部署的所有受管集群,然后使用该选择器添加
ztp-done
标签:$ oc label managedcluster -l 'local-cluster!=true' ztp-done=
19.11.4. 停止现有的 GitOps ZTP 应用程序
删除现有的应用程序可确保在有新版本工具可用前,不会推出对 Git 存储库中现有内容的任何更改。
使用 deployment
目录中的应用文件。如果您为应用程序使用自定义名称,则首先更新这些文件中的名称。
流程
在
clusters
应用程序上执行非级联删除以保留所有生成的资源:$ oc delete -f update/argocd/deployment/clusters-app.yaml
在
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
19.11.5. 对 Git 存储库进行所需的更改
当将 ztp-site-generate
容器从较早版本的 GitOps ZTP 升级到 v4.10 或更高版本时,Git 仓库的内容需要额外的要求。存储库中的现有内容必须更新,以反映这些更改。
对
PolicyGenTemplate
文件进行必要的更改:所有
PolicyGenTemplate
文件都必须在带有ztp
前缀的命名空间
中创建。这样可确保 GitOps 零接触置备(ZTP)应用程序可以管理由 GitOps ZTP 生成的策略 CR,而不与 Red Hat Advanced Cluster Management(RHACM)在内部管理策略冲突。将
kustomization.yaml
文件添加到存储库中:所有
siteConfig
和PolicyGenTemplate
CR 必须包含在其各自目录树下的kustomization.yaml
文件中。例如:├── policygentemplates │ ├── 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
或PolicyGenTemplate
CR。如果现有 YAML 文件包含其他 CR,如Namespace
,则这些其他 CR 必须拉取到单独的文件中,并在resources
部分列出。PolicyGenTemplate
kustomization 文件必须包括generator
部分中的所有PolicyGenTemplate
YAML 文件,以及resources
部分中的Namespace
CR。例如:apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization generators: - common-ranGen.yaml - group-du-sno-ranGen.yaml - site1.yaml - site2.yaml resources: - common-ns.yaml - group-du-sno-ranGen-ns.yaml - site1-ns.yaml - site2-ns.yaml
SiteConfig
kustomization 文件必须包括generator
部分中的所有SiteConfig
YAML 文件,以及资源中的任何其他 CR:apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization generators: - site1.yaml - site2.yaml
删除
pre-sync.yaml
和post-sync.yaml
文件。在 OpenShift Container Platform 4.10 及更新的版本中,不再需要
pre-sync.yaml
和post-sync.yaml
文件。update/deployment/kustomization.yaml
CR 管理 hub 集群上的策略部署。注意在
SiteConfig
和PolicyGenTemplate
树下都有一组pre-sync.yaml
和post-sync.yaml
文件。检查并纳入推荐的更改
每个发行版本可能会包括对应用到已部署集群的配置进行额外的推荐更改。通常,这些更改由 OpenShift 平台、额外功能或改进对平台的调整带来较低的 CPU 使用。
查看适用于您网络中的集群类型的参考
SiteConfig
和PolicyGenTemplate
CR。这些示例可在从 GitOps ZTP 容器中提取的argocd/example
目录中找到。
19.11.6. 安装新的 GitOps ZTP 应用程序
使用提取的 argocd/deployment
目录,并在确保应用程序指向 Git 存储库后应用部署目录的所有内容。应用目录的内容可确保正确配置应用程序的所有必要资源。
流程
要使用之前提取到
update/argocd/deployment/
目录中的补丁文件来修补 hub 集群中的 ArgoCD 实例,请输入以下命令:$ oc patch argocd openshift-gitops \ -n openshift-gitops --type=merge \ --patch-file update/argocd/deployment/argocd-openshift-gitops-patch.json
要应用
argocd/deployment
目录的内容,请输入以下命令:$ oc apply -k update/argocd/deployment
19.11.7. 推出 GitOps ZTP 配置更改
如果因为实现推荐的更改而在升级过程中包括任何配置更改,升级过程会在 hub 集群上生成 Non-Compliant
状态的一组策略 CR。使用 ZTP GitOps v4.10 及之后的版本 ztp-site-generate
容器,这些策略被设置为 inform
模式,且不会为用户在没有额外步骤的情况下推送到受管集群。这样可保证在进行更改时可以管理对集群的破坏性更改,例如在维护窗口期间以及同时更新多少个集群。
要推出更改,请创建一个或多个 ClusterGroupUpgrade
CR,如 TALM 文档所述。CR 必须包含您要推送到受管集群的 Non-Compliant
策略列表,以及应包含在更新中的集群的列表或选择器。
其他资源
- 有关 Topology Aware Lifecycle Manager(TALM),请参阅关于 Topology Aware Lifecycle Manager 配置。
-
有关创建
ClusterGroupUpgrade
CR 的信息,请参阅关于为 ZTP 自动创建的 ClusterGroupUpgrade CR。