22.9. 带有 SiteConfig 资源的高级受管集群配置
您可以使用 SiteConfig
自定义资源 (CR) 在安装时在受管集群中部署自定义功能和配置。
22.9.1. 在 GitOps ZTP 管道中自定义额外的安装清单 复制链接链接已复制到粘贴板!
您可以定义一组额外的清单,以包含在 GitOps Zero Touch Provisioning (ZTP) 管道的安装阶段。这些清单链接到 siteConfig
自定义资源(CR),并在安装过程中应用到集群。在安装时包括 MachineConfig
CR 可提高安装过程的效率。
先决条件
- 创建一个 Git 存储库,在其中管理自定义站点配置数据。该存储库必须可从 hub 集群访问,并定义为 Argo CD 应用程序的源仓库。
流程
- 创建 GitOps ZTP 管道用于自定义集群安装的一组额外清单 CR。
在自定义
/siteconfig
目录中,为您的额外清单创建一个子目录/custom-manifest
。以下示例演示了一个带有/custom-manifest
文件夹的/siteconfig
示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意整个使用的子目录名称
/custom-manifest
和/extra-manifest
只是示例名称。不需要使用这些名称,并且对如何命名这些子目录没有限制。在本例中,/extra-manifest
是指从ztp-site-generate
容器存储/extra-manifest
的内容的 Git 子目录。-
将自定义额外清单 CR 添加到
siteconfig/custom-manifest
目录中。 在
SiteConfig
CR 中,在extraManifests.searchPaths
字段中输入目录名称,例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
保存
SiteConfig
、/extra-manifest
和/custom-manifest
CR,并将它们推送到站点配置存储库。
在集群置备过程中,GitOps ZTP 管道会将 /custom-manifest
目录中的 CR 附加到存储在 extra-manifest/
中的默认额外清单集合中。
从版本 4.14 extraManifestPath
开始,会受弃用警告。
虽然 extraManifestPath
仍然被支持,但我们建议您使用 extraManifests.searchPaths
。如果您在 SiteConfig
文件中定义 extraManifests.searchPaths
,GitOps ZTP 管道不会在站点安装过程中从 ztp-site-generate
容器获取清单。
如果您在 Siteconfig
CR 中定义 extraManifestPath
和 extraManifests.searchPaths
,则为 extraManifests.searchPaths
定义的设置具有优先权。
强烈建议您从 ztp-site-generate
容器中提取 /extra-manifest
的内容,并将它推送到 GIT 存储库。
22.9.2. 使用 siteConfig 过滤器过滤自定义资源 复制链接链接已复制到粘贴板!
通过使用过滤器,您可以轻松地自定义 SiteConfig
自定义资源 (CR),使其包含或排除其他 CR,以便在 GitOps Zero Touch Provisioning (ZTP) 管道的安装阶段使用。
您可以为 SiteConfig
CR 指定一个 inclusionDefault
值(include
或 exclude
),以及您要包含或排除的特定 extraManifest
RAN CR 列表。将 inclusionDefault
设置为 include
可使 GitOps ZTP 管道在安装过程中应用 /source-crs/extra-manifest
中的所有文件。将 includeDefault
设置为 exclude
的作用相反。
您可以从 /source-crs/extra-manifest
文件夹中排除默认会被包括的 CR。以下示例配置了自定义单节点 OpenShift SiteConfig
CR,以在安装时排除 /source-crs/extra-manifest/03-sctp-machine-config-worker.yaml
CR。
另外还介绍了一些额外的可选过滤场景。
先决条件
- 配置了 hub 集群来生成所需的安装和策略 CR。
- 您创建了 Git 存储库,用于管理自定义站点配置数据。该存储库必须可从 hub 集群访问,并定义为 Argo CD 应用程序的源仓库。
流程
要防止 GitOps ZTP 管道应用
03-sctp-machine-config-worker.yaml
CR 文件,请在SiteConfig
CR 中应用以下 YAML:Copy to Clipboard Copied! Toggle word wrap Toggle overflow GitOps ZTP 管道在安装过程中跳过
03-sctp-machine-config-worker.yaml
CR。应用/source-crs/extra-manifest
中的所有其他 CR。保存
SiteConfig
CR,并将更改推送到站点配置存储库。GitOps ZTP 管道监控并调整根据
SiteConfig
过滤器指令所应用的 CR。可选: 要防止 GitOps ZTP 管道在集群中应用所有
/source-crs/extra-manifest
CR,请在SiteConfig
CR 中应用以下 YAML:- clusterName: "site1-sno-du" extraManifests: filter: inclusionDefault: exclude
- clusterName: "site1-sno-du" extraManifests: filter: inclusionDefault: exclude
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 要排除所有
/source-crs/extra-manifest
RAN CR,并在安装过程中包括自定义 CR 文件,编辑自定义SiteConfig
CR 来设置自定义清单文件夹和include
文件,例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例演示了自定义文件夹结构:
siteconfig ├── site1-sno-du.yaml └── user-custom-manifest └── custom-sctp-machine-config-worker.yaml
siteconfig ├── site1-sno-du.yaml └── user-custom-manifest └── custom-sctp-machine-config-worker.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
22.9.3. 使用 SiteConfig CR 删除节点 复制链接链接已复制到粘贴板!
通过使用 SiteConfig
自定义资源(CR),您可以删除并重新创建节点。这个方法比手动删除节点更高效。
先决条件
- 您已将 hub 集群配置为生成所需的安装和策略 CR。
- 您已创建了 Git 存储库,您可以在其中管理自定义站点配置数据。存储库必须可从 hub 集群访问,并定义为 Argo CD 应用程序的源存储库。
流程
更新
SiteConfig
CR,使其包含bmac.agent-install.openshift.io/remove-agent-and-node-on-delete=true
注解,并将更改推送到 Git 存储库:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证
BareMetalHost
对象是否已注解:oc get bmh -n <managed-cluster-namespace> <bmh-object> -ojsonpath='{.metadata}' | jq -r '.annotations["bmac.agent-install.openshift.io/remove-agent-and-node-on-delete"]'
oc get bmh -n <managed-cluster-namespace> <bmh-object> -ojsonpath='{.metadata}' | jq -r '.annotations["bmac.agent-install.openshift.io/remove-agent-and-node-on-delete"]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
true
true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过更新
SiteConfig
CR 使其包含crSuppression.BareMetalHost
注解来抑制BareMetalHost CR
的生成:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将更改推送到 Git 存储库并等待取消置备启动。
BareMetalHost
CR 的状态应更改为deprovisioning
。等待BareMetalHost
完成取消置备,并完全删除。
验证
运行以下命令,验证 worker 节点的
BareMetalHost
和Agent
CR 已从 hub 集群中删除:oc get bmh -n <cluster-ns>
$ oc get bmh -n <cluster-ns>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get agent -n <cluster-ns>
$ oc get agent -n <cluster-ns>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证节点记录是否已从 spoke 集群中删除:
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果使用 secret,删除 secret 太早可能会导致问题,因为 ArgoCD 需要 secret 在删除后完成重新同步。只有在当前 ArgoCD 同步完成后,仅在节点清理后删除 secret。
后续步骤
要重新置备节点,请删除之前添加到 SiteConfig
中的更改,将更改推送到 Git 存储库,并等待同步完成。这会重新生成 worker 节点的 BareMetalHost
CR,并触发重新安装节点。