2.2. 安装模板概述
安装模板是用来生成安装工件集合的数据驱动的模板。这些模板采用 Golang 文本/模板格式,并使用来自 ClusterInstance 自定义资源的数据进行实例化。这可为每个具有类似配置但具有不同值的每个目标集群动态创建安装清单。
您还可以根据不同的安装方法或集群拓扑创建多个集合。SiteConfig operator 支持以下类型的安装模板:
- cluster_level
- 只能引用特定于集群的字段的模板。
- 节点级别
- 可引用特定于集群和特定于节点的字段的模板。
有关安装模板的更多信息,请参阅以下文档:
2.2.1. 模板功能 复制链接链接已复制到粘贴板!
您可以自定义模板字段。SiteConfig 操作器支持所有 sprig 库函数。
另外,ClusterInstance API 提供了在创建自定义清单时可以使用以下功能:
toYaml-
toYaml函数将项目编码为 YAML 字符串。如果项目无法转换为 YAML,则函数会返回空字符串。
请参阅以下 ClusterInstance.Spec.Proxy 字段中的 .toYaml 规格示例:
{{ if .Spec.Proxy }}
proxy:
{{ .Spec.Proxy | toYaml | indent 4 }}
{{ end }}
{{ if .Spec.Proxy }}
proxy:
{{ .Spec.Proxy | toYaml | indent 4 }}
{{ end }}
2.2.2. 默认模板集合 复制链接链接已复制到粘贴板!
SiteConfig operator 在安装 Operator 的同一命名空间中提供以下默认、验证和不可变模板集合:
| 安装方法 | 模板类型 | 文件名 | 模板内容 |
|---|---|---|---|
| 支持的安装程序 | 集群级别模板 |
|
|
| 节点级别模板 |
|
| |
| Image Based Install Operator | 集群级别模板 |
|
|
| 节点级别模板 |
|
|
有关ClusterInstance API 的更多信息,请参阅ClusterInstance API 。
2.2.3. 特殊模板变量 复制链接链接已复制到粘贴板!
SiteConfig operator 提供了一组可在模板中使用的特殊模板变量。请参见以下列表:
CurrentNode- SiteConfig operator 明确控制节点对象的迭代,并公开此变量来访问模板中处理的当前节点的所有内容。
installConfigOverrides-
包含合并的
networkType、cpuPartitioningMode和installConfigOverrides内容。 ControlPlaneAgents-
由 control plane 代理的数量组成,它会自动从
ClusterInstance节点对象衍生而来。 WorkerAgents-
由 worker 代理数量组成,它会自动从
ClusterInstance节点对象派生而来。
在文本模板中使用字段名称来创建自定义模板字段。
例如,ClusterInstance spec 字段使用 .Spec 前缀引用。但是,您必须使用 .SpecialVars 前缀引用特殊变量字段。
重要: 对于 spec.nodes 字段使用 .Spec.Nodes 前缀,您必须使用 .SpecialVars.CurrentNode 特殊模板变量引用它。
例如,如果要使用 CurrentNode 特殊模板变量为当前节点指定 名称和命名空间,请使用以下格式的字段名称:
name: "{{ .SpecialVars.CurrentNode.HostName }}"
namespace: "{{ .Spec.ClusterName }}"
name: "{{ .SpecialVars.CurrentNode.HostName }}"
namespace: "{{ .Spec.ClusterName }}"
2.2.4. 自定义清单顺序 复制链接链接已复制到粘贴板!
您可以使用 siteconfig.open-cluster-management.io/sync-wave 注解来控制创建、更新和删除清单的顺序。该注解使用一个整数作为值,该整数则作为 wave 组成。
您可以将一个或多个清单添加到单个 wave 中。如果没有指定值,注解将使用默认值 0。
SiteConfig operator 在创建或更新资源时以升序协调清单,并以降序删除资源。
在以下示例中,如果 SiteConfig operator 创建或更新清单,则 AgentClusterInstall 和 ClusterDeployment 自定义资源会在第一个 wave 中协调,而 KlusterletAddonConfig 和 ManagedCluster 自定义资源会在第三个 wave 中协调。
如果 SiteConfig operator 删除资源,KlusterletAddonConfig 和 ManagedCluster 自定义资源是第一个被删除,而 AgentClusterInstall 和 ClusterDeployment 自定义资源是最后一个。
2.2.5. 配置额外注解和标签 复制链接链接已复制到粘贴板!
您可以使用 ClusterInstance API 中的 extraAnnotations 和 extraLabels 字段为集群级别和节点级别的安装清单配置额外的注解和标签。SiteConfig Operator 将额外注解和标签应用到您在 ClusterInstance 资源中指定的清单。
在创建额外的注解和标签时,您必须指定清单类型,以允许 SiteConfig 操作器将它们应用到所有匹配的清单。但是,注解和标签是任意的,您可以设置对应用程序有意义的任何键值对。
注: 附加注解和标签只适用于通过引用模板呈现的资源。
查看以下 extraAnnotations 和 extraLabels 应用程序示例:
extraAnnotations 和 extraLabels的应用程序示例
- 1 2
- 此字段支持 SiteConfig operator 应用到
ManagedCluster和ClusterDeployment清单的集群级注解和标签。 - 3 4
- 此字段支持 SiteConfig operator 应用到
BareMetalHost清单的节点级别注解和标签。您可以运行以下命令来验证您的附加标签是否已应用:
oc get managedclusters example-sno -ojsonpath='{.metadata.labels}' | jqoc get managedclusters example-sno -ojsonpath='{.metadata.labels}' | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查看以下应用标签示例:
应用的标签示例
{ "common": "true", "group-du": "", ... }{ "common": "true", "group-du": "", ... }Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 您可以运行以下命令来验证您的附加注解是否已应用:
oc get bmh example-sno.example.redhat.com -n example-sno -ojsonpath='{.metadata.annotations}' | jqoc get bmh example-sno.example.redhat.com -n example-sno -ojsonpath='{.metadata.annotations}' | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查看以下应用的注解示例:
应用注解示例
{ "myNodeAnnotation": "success", ... }{ "myNodeAnnotation": "success", ... }Copy to Clipboard Copied! Toggle word wrap Toggle overflow