6.5. 执行高级参考配置自定义
对于您要从参考设计中临时开发的情况,您可以应用更高级的自定义。
这些自定义覆盖 cluster-compare
插件在比较过程中使用的默认匹配过程。在应用这些高级自定义时请小心,因为它可能会导致意外的结果,如从集群比较中排除后续信息。
用于动态自定义参考配置的一些高级任务包括:
- 手动匹配 :配置用户配置文件,以手动将自定义资源从集群与参考配置中的模板匹配。
-
Patching the reference:在
cluster-compare
命令中使用 patch 选项对一个参考进行补丁来配置参考配置。
6.5.1. 配置 CR 和模板之间的手动匹配 复制链接链接已复制到粘贴板!
在某些情况下,cluster-compare
插件的默认匹配可能无法按预期工作。您可以使用用户配置文件手动定义自定义资源(CR)如何映射到模板。
默认情况下,插件会根据 apiversion
、kind
、name
和 namespace
字段将 CR 映射到模板。但是,多个模板可能与一个 CR 匹配。例如,在以下情况下可能会发生这种情况:
-
有多个模板有相同的
apiversion
、kind
、name
和namespace
字段。 -
模板将任何带有特定
apiversion
和kind
的 CR 匹配,无论其namespace
或name
。
当一个 CR 匹配多个模板时,插件会使用一个 tie-breaking 机制来选择一个差异最小的模板。要明确控制插件选择的模板,您可以创建一个定义手动匹配规则的用户配置 YAML 文件。您可以将此配置文件传递给 cluster-compare
命令,以强制执行所需的模板选择。
流程
创建用户配置文件以定义手动匹配标准:
user-config.yaml
文件示例correlationSettings: manualCorrelation: correlationPairs: ptp.openshift.io/v1_PtpConfig_openshift-ptp_grandmaster: optional/ptp-config/PtpOperatorConfig.yaml ptp.openshift.io/v1_PtpOperatorConfig_openshift-ptp_default: optional/ptp-config/PtpOperatorConfig.yaml
correlationSettings:
1 manualCorrelation:
2 correlationPairs:
3 ptp.openshift.io/v1_PtpConfig_openshift-ptp_grandmaster: optional/ptp-config/PtpOperatorConfig.yaml
4 ptp.openshift.io/v1_PtpOperatorConfig_openshift-ptp_default: optional/ptp-config/PtpOperatorConfig.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,在
cluster-compare
命令中引用用户配置文件:oc cluster-compare -r <path_to_reference_config>/metadata.yaml -c <path_to_user_config>/user-config.yaml
$ oc cluster-compare -r <path_to_reference_config>/metadata.yaml -c <path_to_user_config>/user-config.yaml
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 使用
-c
选项指定user-config.yaml
文件。
6.5.2. 修补参考配置 复制链接链接已复制到粘贴板!
在某些情况下,您可能需要修补参考配置来处理集群配置中的预期偏差。该插件在比较过程中应用补丁,修改补丁文件中定义的指定资源字段。
例如,您可能需要临时修补模板,因为集群使用了最新的参考配置已弃用的字段。在比较输出概述中报告补丁文件。
您可以通过两种方式创建补丁文件:
-
使用
cluster-compare
插件生成补丁 YAML 文件。 - 创建您自己的补丁文件。
6.5.2.1. 使用 cluster-compare 插件生成补丁 复制链接链接已复制到粘贴板!
您可以使用 cluster-compare
插件为特定模板文件生成补丁。该插件调整模板,以确保它与集群自定义资源(CR)匹配。补丁模板中的任何有效差异都不会报告。该插件在输出中突出显示补丁文件。
流程
运行以下命令,为模板生成补丁:
oc cluster-compare -r <path_to_reference_config>/metadata.yaml -o 'generate-patches' --override-reason "A valid reason for the override" --generate-override-for "<template1_path>" --generate-override-for "<template2_path>" > <path_to_patches_file>
$ oc cluster-compare -r <path_to_reference_config>/metadata.yaml -o 'generate-patches' --override-reason "A valid reason for the override" --generate-override-for "<template1_path>" --generate-override-for "<template2_path>" > <path_to_patches_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
-r
指定仓库配置的 metadata.yaml 文件的路径。 -
-o
指定输出格式。要生成补丁输出,您必须使用generate-patches
值。 -
--override-reason
描述了补丁的原因。 --generate-override-for
指定需要补丁的模板的路径。注意您必须使用相对于
metadata.yaml
文件的目标模板的文件路径。例如,如果metadata.yaml
文件的文件路径是./compare/metadata.yaml
,则模板的相对文件路径可能是optional/my-template.yaml
。-
<path_to_patches_file>
指定补丁的文件名和路径。
-
可选:在应用到引用配置前查看补丁文件:
patch-config
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将补丁应用到引用配置:
oc cluster-compare -r <referenceConfigurationDirectory> -p <path_to_patches_file>
$ oc cluster-compare -r <referenceConfigurationDirectory> -p <path_to_patches_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
-r
指定仓库配置的 metadata.yaml 文件的路径。 -p
指定补丁文件的路径。输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
6.5.2.2. 手动创建补丁文件 复制链接链接已复制到粘贴板!
您可以编写补丁文件来处理集群配置中的预期偏差。
对于 type
字段,补丁有三个可能的值:
-
mergepatch
- 将 JSON 合并到目标模板中。未指定的字段保持不变。 -
rfc6902
- 使用add
,remove
,replace
,move
, 和copy
操作在目标模板中合并 JSON。每个操作都以特定路径为目标。 -
go-template
- 定义 Golang 模板。该插件使用集群自定义资源(CR)作为输入呈现模板,并为目标模板生成mergepatch
或rfc6902
补丁。
以下示例显示了使用所有三个不同格式相同的补丁。
流程
创建一个补丁文件来与您的用例匹配。使用以下结构作为示例:
patch-config
示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 补丁使用
kind
,apiVersion
,name
, andnamespace
字段来将补丁与正确的集群 CR 匹配。
运行以下命令,将补丁应用到参考配置:
oc cluster-compare -r <referenceConfigurationDirectory> -p <path_to_patches_file>
$ oc cluster-compare -r <referenceConfigurationDirectory> -p <path_to_patches_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
-r
指定仓库配置的 metadata.yaml 文件的路径。 p
指定补丁文件的路径。输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-