18.9. 带有 SiteConfig 资源的高级受管集群配置
您可以使用 SiteConfig
自定义资源 (CR) 在安装时在受管集群中部署自定义功能和配置。
18.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
示例:siteconfig ├── site1-sno-du.yaml ├── site2-standard-du.yaml ├── extra-manifest/ └── custom-manifest └── 01-example-machine-config.yaml
注意整个使用的子目录名称
/custom-manifest
和/extra-manifest
只是示例名称。不需要使用这些名称,并且对如何命名这些子目录没有限制。在本例中,/extra-manifest
是指从ztp-site-generate
容器存储/extra-manifest
的内容的 Git 子目录。-
将自定义额外清单 CR 添加到
siteconfig/custom-manifest
目录中。 在
SiteConfig
CR 中,在extraManifests.searchPaths
字段中输入目录名称,例如:clusters: - clusterName: "example-sno" networkType: "OVNKubernetes" extraManifests: searchPaths: - extra-manifest/ 1 - custom-manifest/ 2
-
保存
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 存储库。
18.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:apiVersion: ran.openshift.io/v1 kind: SiteConfig metadata: name: "site1-sno-du" namespace: "site1-sno-du" spec: baseDomain: "example.com" pullSecretRef: name: "assisted-deployment-pull-secret" clusterImageSetNameRef: "openshift-4.14" sshPublicKey: "<ssh_public_key>" clusters: - clusterName: "site1-sno-du" extraManifests: filter: exclude: - 03-sctp-machine-config-worker.yaml
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
可选: 要排除所有
/source-crs/extra-manifest
RAN CR,并在安装过程中包括自定义 CR 文件,编辑自定义SiteConfig
CR 来设置自定义清单文件夹和include
文件,例如:clusters: - clusterName: "site1-sno-du" extraManifestPath: "<custom_manifest_folder>" 1 extraManifests: filter: inclusionDefault: exclude 2 include: - custom-sctp-machine-config-worker.yaml
以下示例演示了自定义文件夹结构:
siteconfig ├── site1-sno-du.yaml └── user-custom-manifest └── custom-sctp-machine-config-worker.yaml
18.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 存储库:apiVersion: ran.openshift.io/v1 kind: SiteConfig metadata: name: "cnfdf20" namespace: "cnfdf20" spec: clusters: nodes: - hostname: node6 role: "worker" crAnnotations: add: BareMetalHost: bmac.agent-install.openshift.io/remove-agent-and-node-on-delete: true # ...
运行以下命令验证
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"]'
输出示例
true
通过更新
SiteConfig
CR 使其包含crSuppression.BareMetalHost
注解来抑制BareMetalHost CR
的生成:apiVersion: ran.openshift.io/v1 kind: SiteConfig metadata: name: "cnfdf20" namespace: "cnfdf20" spec: clusters: - nodes: - hostName: node6 role: "worker" crSuppression: - BareMetalHost # ...
-
将更改推送到 Git 存储库并等待取消置备启动。
BareMetalHost
CR 的状态应更改为deprovisioning
。等待BareMetalHost
完成取消置备,并完全删除。
验证
运行以下命令,验证 worker 节点的
BareMetalHost
和Agent
CR 已从 hub 集群中删除:$ oc get bmh -n <cluster-ns>
$ oc get agent -n <cluster-ns>
运行以下命令,验证节点记录是否已从 spoke 集群中删除:
$ oc get nodes
注意如果使用 secret,删除 secret 太早可能会导致问题,因为 ArgoCD 需要 secret 在删除后完成重新同步。只有在当前 ArgoCD 同步完成后,仅在节点清理后删除 secret。
后续步骤
要重新置备节点,请删除之前添加到 SiteConfig
中的更改,将更改推送到 Git 存储库,并等待同步完成。这会重新生成 worker 节点的 BareMetalHost
CR,并触发重新安装节点。