10.2. 使用 PolicyGenTemplate CR 覆盖源 CR 内容
PolicyGenTemplate
自定义资源 (CR) 允许您覆盖与 ztp-site-generate
容器中提供的 GitOps 插件提供的基本源 CR 之上的额外配置详情。您可以将 PolicyGenTemplate
CR 视为基础 CR 的逻辑合并或补丁。使用 PolicyGenTemplate
CR 更新基本 CR 的单个字段,或覆盖基本 CR 的整个内容。您可以更新不在基本 CR 中的值和插入字段。
以下示例步骤描述了如何根据 group-du-sno-ranGen.yaml
文件中的 PolicyGenTemplate
CR 为参考配置更新生成的 PerformanceProfile
CR 中的字段。根据要求,使用流程修改 PolicyGenTemplate
的其他部分。
先决条件
- 创建一个 Git 存储库,在其中管理自定义站点配置数据。存储库必须可从 hub 集群访问,并定义为 Argo CD 的源存储库。
流程
查看基准源 CR 以查找现有内容。您可以通过从 GitOps Zero Touch Provisioning (ZTP) 容器中提取引用
PolicyGenTemplate
CR 中列出的源 CR。创建
/out
文件夹:$ mkdir -p ./out
提取源 CR:
$ podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.15.1 extract /home/ztp --tar | tar x -C ./out
查看
./out/source-crs/PerformanceProfile.yaml
中的基线PerformanceProfile
CR:apiVersion: performance.openshift.io/v2 kind: PerformanceProfile metadata: name: $name annotations: ran.openshift.io/ztp-deploy-wave: "10" spec: additionalKernelArgs: - "idle=poll" - "rcupdate.rcu_normal_after_boot=0" cpu: isolated: $isolated reserved: $reserved hugepages: defaultHugepagesSize: $defaultHugepagesSize pages: - size: $size count: $count node: $node machineConfigPoolSelector: pools.operator.machineconfiguration.openshift.io/$mcp: "" net: userLevelNetworking: true nodeSelector: node-role.kubernetes.io/$mcp: '' numa: topologyPolicy: "restricted" realTimeKernel: enabled: true
注意如果
PolicyGenTemplate
CR 中未提供,则包含$…
的任何字段都会从生成的 CR 中删除。在
group-du-sno-ranGen.yaml
参考文件中为PerformanceProfile
更新PolicyGenTemplate
条目。以下示例PolicyGenTemplate
CR 小节提供了适当的 CPU 规格,设置hugepages
配置,并添加一个新的字段,将globallyDisableIrqLoadBalancing
设置为 false。- fileName: PerformanceProfile.yaml policyName: "config-policy" metadata: name: openshift-node-performance-profile spec: cpu: # These must be tailored for the specific hardware platform isolated: "2-19,22-39" reserved: "0-1,20-21" hugepages: defaultHugepagesSize: 1G pages: - size: 1G count: 10 globallyDisableIrqLoadBalancing: false
-
提交 Git 中的
PolicyGenTemplate
更改,然后推送到由 GitOps ZTP argo CD 应用程序监控的 Git 存储库。
输出示例
GitOps ZTP 应用程序生成包含生成的 PerformanceProfile
CR 的 RHACM 策略。该 CR 的内容通过将 PolicyGenTemplate
中的 PerformanceProfile
条目的 metadata
和 spec
内容合并到源 CR 中。生成的 CR 包含以下内容:
--- apiVersion: performance.openshift.io/v2 kind: PerformanceProfile metadata: name: openshift-node-performance-profile spec: additionalKernelArgs: - idle=poll - rcupdate.rcu_normal_after_boot=0 cpu: isolated: 2-19,22-39 reserved: 0-1,20-21 globallyDisableIrqLoadBalancing: false hugepages: defaultHugepagesSize: 1G pages: - count: 10 size: 1G machineConfigPoolSelector: pools.operator.machineconfiguration.openshift.io/master: "" net: userLevelNetworking: true nodeSelector: node-role.kubernetes.io/master: "" numa: topologyPolicy: restricted realTimeKernel: enabled: true
在从 ztp-site-generate
容器中提取的 /source-crs
文件夹中,$
语法用于模板替换。相反,如果 policyGen
工具看到字符串的 $
前缀,并且您不会在相关 PolicyGenTemplate
CR 中为该字段指定值,则会完全从输出 CR 省略该字段。
一个例外是 /source-crs
YAML 文件中的 $mcp
变量,该文件被替换为来自 PolicyGenTemplate
CR 的 mcp
的指定的值。例如,在 example/policygentemplates/group-du-standard-ranGen.yaml
中,mcp
的值为 worker
:
spec: bindingRules: group-du-standard: "" mcp: "worker"
policyGen
工具将输出 CR 中的 $mcp
实例替换为 worker
。