$ mkdir -p ./update
您可以独立于中心集群、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 基础架构的策略如下
使用 `ztp-done` 标签标记所有现有集群。
停止 ArgoCD 应用程序。
安装新的 GitOps ZTP 工具。
更新 Git 存储库中所需的内容和可选更改。
更新并重新启动应用程序配置。
请使用以下步骤准备您的站点进行 GitOps 零接触配置 (ZTP) 升级。
获取最新版本的 GitOps ZTP 容器,该容器包含用于配置 Red Hat OpenShift GitOps 以与 GitOps ZTP 一起使用的自定义资源 (CR)。
使用以下命令解压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
:包含PolicyGenerator
或PolicyGentemplate
CR 用于生成 Red Hat Advanced Cluster Management (RHACM)策略的源 CR 文件。
update/argocd/deployment
:包含应用于中心集群的补丁和 YAML 文件,用于此步骤的后续步骤。
update/argocd/example
:包含代表推荐配置的示例SiteConfig
和PolicyGenerator
或PolicyGentemplate
文件。
更新clusters-app.yaml
和policies-app.yaml
文件以反映您的应用程序名称以及 Git 存储库的 URL、分支和路径。
如果升级包含导致策略过时的更改,则应在执行升级之前删除过时的策略。
比较/update
文件夹和您管理集群站点 CR 的 Git 存储库中配置和部署源 CR 之间的差异。将所需的更改应用并推送到您的站点存储库。
将 GitOps ZTP 更新到最新版本时,必须将 |
为确保工具更新不会影响现有集群,请使用ztp-done
标签标记所有现有的已管理集群。
此步骤仅适用于更新未通过拓扑感知生命周期管理器 (TALM) 配置的集群。使用 TALM 配置的集群会自动标记为 |
查找列出使用 GitOps 零接触配置 (ZTP) 部署的已管理集群的标签选择器,例如local-cluster!=true
$ oc get managedcluster -l 'local-cluster!=true'
确保结果列表包含所有使用 GitOps ZTP 部署的已管理集群,然后使用该选择器添加ztp-done
标签。
$ oc label managedcluster -l 'local-cluster!=true' ztp-done=
删除现有应用程序可确保在提供新版本的工具之前不会推出对 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
将ztp-site-generate
容器从 GitOps 零接触配置 (ZTP) 的早期版本升级到 4.10 或更高版本时,对 Git 存储库的内容有其他要求。必须更新存储库中的现有内容以反映这些更改。
以下步骤假设您使用 |
对PolicyGenerator
文件进行必要的更改
所有PolicyGenerator
文件都必须在以ztp
为前缀的Namespace
中创建。这可确保 GitOps ZTP 应用程序能够管理 GitOps ZTP 生成的策略 CR,而不会与 Red Hat Advanced Cluster Management (RHACM) 内部管理策略的方式冲突。
将kustomization.yaml
文件添加到存储库
所有SiteConfig
和PolicyGenerator
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
|
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.yaml
和post-sync.yaml
文件。
在 OpenShift Container Platform 4.10 及更高版本中,不再需要pre-sync.yaml
和post-sync.yaml
文件。update/deployment/kustomization.yaml
CR 管理中心集群上的策略部署。
|
查看并合并推荐的更改
每个版本都可能包含对应用于已部署集群的配置的额外推荐更改。通常,这些更改会导致 OpenShift 平台的 CPU 使用率降低、增加功能或改进平台的调整。
查看适用于网络中集群类型的参考SiteConfig
和PolicyGenerator
CR。这些示例可以在从 GitOps ZTP 容器解压的argocd/example
目录中找到。
使用解压的argocd/deployment
目录,并在确保应用程序指向您的站点 Git 存储库后,应用部署目录的全部内容。应用目录的全部内容可确保正确配置应用程序的所有必要资源。
要安装 GitOps ZTP 插件,请使用相关的多集群引擎 (MCE) 订阅镜像来修补中心集群中的 ArgoCD 实例。为您的环境自定义您之前解压到out/argocd/deployment/
目录中的补丁文件。
选择与您的 RHACM 版本匹配的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 |
|
4.14, 4.15, 4.16 |
2.10 |
2.10 |
RHEL 9 |
|
|
将以下配置添加到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 替换为您环境中断开连接的注册表等效项。 |
修补 ArgoCD 实例。运行以下命令:
$ oc patch argocd openshift-gitops \
-n openshift-gitops --type=merge \
--patch-file out/argocd/deployment/argocd-openshift-gitops-patch.json
在 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
通过运行以下命令将管道配置应用于您的中心集群:
$ oc apply -k out/argocd/deployment
如果升级中包含任何配置更改(例如实施推荐更改),则升级过程会在 hub 集群中生成一组状态为Non-Compliant
的策略 CR。 使用 GitOps Zero Touch Provisioning (ZTP) 4.10 及更高版本的 ztp-site-generate
容器,这些策略将设置为inform
模式,并且不会在用户执行额外步骤的情况下推送到受管集群。 这确保了可以管理对集群的潜在破坏性更改的时间(例如,在维护窗口期间)和并发更新的集群数量。
要部署这些更改,请根据 TALM 文档中所述创建⼀个或多个ClusterGroupUpgrade
CR。CR 必须包含要推送到受管集群的Non-Compliant
策略列表,以及应包含在更新中的集群列表或选择器。
有关拓扑感知生命周期管理器 (TALM) 的信息,请参阅 关于拓扑感知生命周期管理器配置。
有关创建ClusterGroupUpgrade
CR 的信息,请参阅 关于 GitOps ZTP 自动创建的 ClusterGroupUpgrade CR。