17.12. 更新 GitOps ZTP
您可以独立于 hub 集群、Red Hat Advanced Cluster Management (RHACM) 和受管 OpenShift Container Platform 集群更新 Gitops 零接触置备 (ZTP) 基础架构。
当新版本可用时,您可以更新 Red Hat OpenShift GitOps Operator。更新 GitOps ZTP 插件时,请查看参考配置中的更新文件,并确保更改满足您的要求。
17.12.1. GitOps ZTP 更新过程概述 复制链接链接已复制到粘贴板!
您可以为运行较早版本的 GitOps ZTP 集群更新 GitOps 零接触置备 (ZTP)。更新过程可避免对受管集群的影响。
对策略设置的任何更改(包括添加推荐内容)都会生成要应用到受管集群并协调的更新策略。
在高级别上,更新 GitOps ZTP 基础架构的策略如下:
-
使用
ztp-done标签标记所有现有集群。 - 停止 ArgoCD 应用程序。
- 安装新的 GitOps ZTP 工具。
- 更新 Git 存储库中的所需内容和可选更改。
- 更新并重启应用程序配置。
17.12.2. 准备升级 复制链接链接已复制到粘贴板!
使用以下步骤为 GitOps 零接触置备(ZTP)升级准备您的站点。
流程
- 获取具有用于配置 Red Hat OpenShift GitOps 的自定义资源 (CR) 的 GitOps ZTP 容器的最新版本,以用于 GitOps ZTP。
使用以下命令提取
argocd/deployment目录:mkdir -p ./update
$ mkdir -p ./updateCopy to Clipboard Copied! Toggle word wrap Toggle overflow podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.12 extract /home/ztp --tar | tar x -C ./update
$ podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.12 extract /home/ztp --tar | tar x -C ./updateCopy to Clipboard Copied! Toggle word wrap Toggle overflow /update目录包含以下子目录:-
update/extra-manifest: 包含SiteConfigCR 用来生成额外清单configMap的源 CR 文件。 -
update/source-crs:包含PolicyGenTemplateCR 用于生成 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/文件。
17.12.3. 标记现有集群 复制链接链接已复制到粘贴板!
为确保现有集群由工具更新保持不变,请使用 ztp-done 标签标记所有现有的受管集群。
此流程仅在更新没有使用 Topology Aware Lifecycle Manager (TALM) 置备的集群时应用。使用 TALM 置备的集群会使用 ztp-done 自动标记。
流程
找到列出使用零接触置备(ZTP)部署的受管集群的标签选择器,如
local-cluster!=true:oc get managedcluster -l 'local-cluster!=true'
$ oc get managedcluster -l 'local-cluster!=true'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保生成的列表中包含使用 ZTP 部署的所有受管集群,然后使用该选择器添加
ztp-done标签:oc label managedcluster -l 'local-cluster!=true' ztp-done=
$ oc label managedcluster -l 'local-cluster!=true' ztp-done=Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.12.4. 停止现有的 GitOps ZTP 应用程序 复制链接链接已复制到粘贴板!
删除现有的应用程序可确保在有新版本工具可用前,不会推出对 Git 存储库中现有内容的任何更改。
使用 deployment 目录中的应用文件。如果您为应用程序使用自定义名称,则首先更新这些文件中的名称。
流程
在
clusters应用程序上执行非级联删除以保留所有生成的资源:oc delete -f update/argocd/deployment/clusters-app.yaml
$ oc delete -f update/argocd/deployment/clusters-app.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
policies应用程序上执行级联删除以删除所有之前的策略:oc patch -f policies-app.yaml -p '{"metadata": {"finalizers": ["resources-finalizer.argocd.argoproj.io"]}}' --type merge$ oc patch -f policies-app.yaml -p '{"metadata": {"finalizers": ["resources-finalizer.argocd.argoproj.io"]}}' --type mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete -f update/argocd/deployment/policies-app.yaml
$ oc delete -f update/argocd/deployment/policies-app.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
17.12.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和PolicyGenTemplateCR 必须包含在其各自目录树下的kustomization.yaml文件中。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意generator部分中列出的文件只能包含 siteConfig或PolicyGenTemplateCR。如果现有 YAML 文件包含其他 CR,如Namespace,则这些其他 CR 必须拉取到单独的文件中,并在resources部分列出。PolicyGenTemplatekustomization 文件必须包括generator部分中的所有PolicyGenTemplateYAML 文件,以及resources部分中的NamespaceCR。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow SiteConfigkustomization 文件必须包括generator部分中的所有SiteConfigYAML 文件,以及资源中的任何其他 CR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
pre-sync.yaml和post-sync.yaml文件。在 OpenShift Container Platform 4.10 及更新的版本中,不再需要
pre-sync.yaml和post-sync.yaml文件。update/deployment/kustomization.yamlCR 管理 hub 集群上的策略部署。注意在
SiteConfig和PolicyGenTemplate树下都有一组pre-sync.yaml和post-sync.yaml文件。检查并纳入推荐的更改
每个发行版本可能会包括对应用到已部署集群的配置进行额外的推荐更改。通常,这些更改由 OpenShift 平台、额外功能或改进对平台的调整带来较低的 CPU 使用。
查看适用于您网络中的集群类型的参考
SiteConfig和PolicyGenTemplateCR。这些示例可在从 GitOps ZTP 容器中提取的argocd/example目录中找到。
17.12.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
$ oc patch argocd openshift-gitops \ -n openshift-gitops --type=merge \ --patch-file update/argocd/deployment/argocd-openshift-gitops-patch.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要应用
argocd/deployment目录的内容,请输入以下命令:oc apply -k update/argocd/deployment
$ oc apply -k update/argocd/deploymentCopy to Clipboard Copied! Toggle word wrap Toggle overflow
17.12.7. 推出 GitOps ZTP 配置更改 复制链接链接已复制到粘贴板!
如果因为实现推荐的更改而在升级过程中包括任何配置更改,升级过程会在 hub 集群上生成 Non-Compliant 状态的一组策略 CR。使用 ZTP GitOps v4.10 及之后的版本 ztp-site-generate 容器,这些策略被设置为 inform 模式,且不会为用户在没有额外步骤的情况下推送到受管集群。这样可保证在进行更改时可以管理对集群的破坏性更改,例如在维护窗口期间以及同时更新多少个集群。
要推出更改,请创建一个或多个 ClusterGroupUpgrade CR,如 TALM 文档所述。CR 必须包含您要推送到受管集群的 Non-Compliant 策略列表,以及应包含在更新中的集群的列表或选择器。