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 }}
Copy to Clipboard Toggle word wrap

2.2.2. 默认模板集合

SiteConfig operator 在安装 Operator 的同一命名空间中提供以下默认、验证和不可变模板集合:

Expand
安装方法模板类型文件名模板内容

支持的安装程序

集群级别模板

ai-cluster-templates-v1.yaml

AgentClusterInstall
ClusterDeployment
InfraEnv
KlusterletAddonConfig
ManagedCluster

节点级别模板

ai-node-templates-v1.yaml

BareMetalHost
NMStateConfig

Image Based Install Operator

集群级别模板

ibi-cluster-templates-v1.yaml

ClusterDeployment
KlusterletAddonConfig
ManagedCluster

节点级别模板

ibi-node-templates-v1.yaml

BareMetalHost
ImageClusterInstall
NetworkSecret

有关ClusterInstance API 的更多信息,请参阅ClusterInstance API

2.2.3. 特殊模板变量

SiteConfig operator 提供了一组可在模板中使用的特殊模板变量。请参见以下列表:

CurrentNode
SiteConfig operator 明确控制节点对象的迭代,并公开此变量来访问模板中处理的当前节点的所有内容。
installConfigOverrides
包含合并的 networkTypecpuPartitioningModeinstallConfigOverrides 内容。
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 }}"
Copy to Clipboard Toggle word wrap

2.2.4. 自定义清单顺序

您可以使用 siteconfig.open-cluster-management.io/sync-wave 注解来控制创建、更新和删除清单的顺序。该注解使用一个整数作为值,该整数则作为 wave 组成。

您可以将一个或多个清单添加到单个 wave 中。如果没有指定值,注解将使用默认值 0。

SiteConfig operator 在创建或更新资源时以升序协调清单,并以降序删除资源。

在以下示例中,如果 SiteConfig operator 创建或更新清单,则 AgentClusterInstallClusterDeployment 自定义资源会在第一个 wave 中协调,而 KlusterletAddonConfigManagedCluster 自定义资源会在第三个 wave 中协调。

apiVersion: v1
data:
  AgentClusterInstall: |-
    ...
        siteconfig.open-cluster-management.io/sync-wave: "1"
    ...
  ClusterDeployment: |-
    ...
        siteconfig.open-cluster-management.io/sync-wave: "1"
    ...
  InfraEnv: |-
    ...
        siteconfig.open-cluster-management.io/sync-wave: "2"
    ...
  KlusterletAddonConfig: |-
    ...
        siteconfig.open-cluster-management.io/sync-wave: "3"
    ...
  ManagedCluster: |-
    ...
        siteconfig.open-cluster-management.io/sync-wave: "3"
    ...
kind: ConfigMap
metadata:
  name: assisted-installer-templates
  namespace: example-namespace
Copy to Clipboard Toggle word wrap

如果 SiteConfig operator 删除资源,KlusterletAddonConfigManagedCluster 自定义资源是第一个被删除,而 AgentClusterInstallClusterDeployment 自定义资源是最后一个。

2.2.5. 配置额外注解和标签

您可以使用 ClusterInstance API 中的 extraAnnotationsextraLabels 字段为集群级别和节点级别的安装清单配置额外的注解和标签。SiteConfig Operator 将额外注解和标签应用到您在 ClusterInstance 资源中指定的清单。

在创建额外的注解和标签时,您必须指定清单类型,以允许 SiteConfig 操作器将它们应用到所有匹配的清单。但是,注解和标签是任意的,您可以设置对应用程序有意义的任何键值对。

注: 附加注解和标签只适用于通过引用模板呈现的资源。

查看以下 extraAnnotationsextraLabels 应用程序示例:

extraAnnotationsextraLabels的应用程序示例

apiVersion: siteconfig.open-cluster-management.io/v1alpha1
kind: ClusterInstance
metadata:
  name: "example-sno"
  namespace: "example-sno"
spec:
  [...]
  clusterName: "example-sno"
  extraAnnotations: 
1

    ClusterDeployment:
      myClusterAnnotation: success
  extraLabels: 
2

    ManagedCluster:
      common: "true"
      group-du: ""
  nodes:
    - hostName: "example-sno.example.redhat.com"
      role: "master"
      extraAnnotations: 
3

        BareMetalHost:
          myNodeAnnotation: success
      extraLabels: 
4

        BareMetalHost:
          "testExtraLabel": "success"
Copy to Clipboard Toggle word wrap

1 2
此字段支持 SiteConfig operator 应用到 ManagedClusterClusterDeployment 清单的集群级注解和标签。
3 4
此字段支持 SiteConfig operator 应用到 BareMetalHost 清单的节点级别注解和标签。
  • 您可以运行以下命令来验证您的附加标签是否已应用:

    oc get managedclusters example-sno -ojsonpath='{.metadata.labels}' | jq
    Copy to Clipboard Toggle word wrap

    查看以下应用标签示例:

    应用的标签示例

    {
      "common": "true",
      "group-du": "",
      ...
    }
    Copy to Clipboard Toggle word wrap

  • 您可以运行以下命令来验证您的附加注解是否已应用:
oc get bmh example-sno.example.redhat.com -n example-sno -ojsonpath='{.metadata.annotations}' | jq
Copy to Clipboard Toggle word wrap

查看以下应用的注解示例:

应用注解示例

{
  "myNodeAnnotation": "success",
  ...
}
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat