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目录中。
- 在 - SiteConfigCR 中,在- extraManifests.searchPaths字段中输入目录名称,例如:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 
							保存 SiteConfig、/extra-manifest和/custom-manifestCR,并将它们推送到站点配置存储库。
					在集群置备过程中,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.yamlCR 文件,请在- SiteConfigCR 中应用以下 YAML:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - GitOps ZTP 管道在安装过程中跳过 - 03-sctp-machine-config-worker.yamlCR。应用- /source-crs/extra-manifest中的所有其他 CR。
- 保存 - SiteConfigCR,并将更改推送到站点配置存储库。- GitOps ZTP 管道监控并调整根据 - SiteConfig过滤器指令所应用的 CR。
- 可选: 要防止 GitOps ZTP 管道在集群中应用所有 - /source-crs/extra-manifestCR,请在- SiteConfigCR 中应用以下 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-manifestRAN CR,并在安装过程中包括自定义 CR 文件,编辑自定义- SiteConfigCR 来设置自定义清单文件夹和- 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 应用程序的源存储库。
流程
- 更新 - SiteConfigCR,使其包含- 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 
- 通过更新 - SiteConfigCR 使其包含- crSuppression.BareMetalHost注解来抑制- BareMetalHost CR的生成:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 
							将更改推送到 Git 存储库并等待取消置备启动。BareMetalHostCR 的状态应更改为deprovisioning。等待BareMetalHost完成取消置备,并完全删除。
验证
- 运行以下命令,验证 worker 节点的 - BareMetalHost和- AgentCR 已从 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,并触发重新安装节点。