本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

标签模板概述

Elemental允许在`spec.machineInventoryLabels`和`spec.machineInventoryAnnotations`部分指定_标签模板_,这些部分属于机器注册资源。

它们的格式是Kubernetes标签和注释中使用的规范`key`:value

这些标签模板会被转换为实际的标签和注释,附加到在机器入驻阶段创建的每个机器清单资源上。

生成的标签和注释具有与标签模板相同的`key`。

相关的`value`被生成:

Elemental模板功能还涵盖了机器注册的`spec.machineName`字段,该字段定义了注册机器的结果主机名以及相关机器清单资源的`name`。

有关更多详细信息,请参见机器名称部分。

标签模板的变量

Elemental标签模板包括一组预定义变量,可在机器注册中指定的`value`的_标签模板_内部使用。

用于指定标签模板变量的语法是:

${ VARFAMILY \/ VARPATH }

其中_VARFAMILY_定义了一组(家族)支持的变量,而_VARPATH_定义了属于该家族组的实际变量名称。

Elemental当前支持以下_模板变量家族_:

  • BIOS${ BIOS \/ VARPATH }

  • BaseBoard${ BaseBoard \/ VARPATH }

  • CPU${ CPU \/ VARPATH }

  • 机箱${ Chassis \/ VARPATH }

  • GPU${ GPU \/ VARPATH }

  • 内存: ${ Memory \/ VARPATH }

  • 网络: ${ Network \/ VARPATH }

  • 产品: ${ Product \/ VARPATH }

  • 运行时: ${ 运行时 \/ VARPATH }

  • 存储: ${ Storage \/ VARPATH }

所有的 模板变量家族(但 `Random`)仅在 机器注册elemental.registration.no-smbios 字段设置为 false(默认)时启用。

elemental.registration.no-smbios 字段设置为 true 时,注册的机器不会发送任何渲染模板变量所需的数据,因此不会有变量可用,但 随机 变量是唯一的显著例外。

随机 变量始终可用,因为它们是在操作员端内置的。它们也很特别,因为它们只计算一次:有关更多详细信息,请参见 随机模板变量 部分。

模板变量可以与静态文本混合,以形成分配给 (机器清单) 的实际标签。

渲染示例
  • 标签模板跟踪注册主机的 CPU 内核数量(假设主机有 4 个内核):

    • 原始标签: cpu: ${CPU\/TotalCores}-内核

    • 渲染标签: cpu:4-内核

  • 标签模板跟踪注册主机的 SMBIOS UUID:

    • 原始标签: sbios-UUID: ${Product\/UUID}

    • 渲染标签: sbios-UUID: fd95324a-c26b-4e28-8727-1dcec293a0ec

清理

一旦标签模板值根据包含的 标签模板变量 渲染,结果值为 sanitized,然后分配给结果标签。

sanitization 强制标签值仅包含字母(无论大小写)、数字以及连字符 (-)、点 (.) 和下划线 (_) 字符:

所有未包含的字符都将被替换为连字符。

标签值的开头和结尾必须是字母或数字。如果不是,则会被删除。

两个连续的连字符将被替换为一个。

渲染示例
  • 带有禁止字符清理的标签模板:

    • 原始标签: sanitized: this:needs—​sanitizing!

    • 渲染标签: sanitized: this-needs-sanitizing

标签模板的使用

标签模板允许在每次主机注册到元素操作员时,自动附加和更新每个主机的 机器清单 的标签和注释。

注册不仅发生在 入驻阶段:每个主机每30分钟重新注册一次(以及每次重启时)。在重新注册期间,关联的 机器注册 中的标签模板会被重新评估,并在 机器清单 中添加/更新。

基本上有三种主要情况,标签模板可以派上用场:

  • 将硬件数据附加到元素目录。

  • 添加选择器以选择主机进行集群配置。

  • 为机器名称定义自定义模板。

元素目录的硬件数据

标签模板的变量可用于将硬件数据附加到每个 机器清单 资源(构成元素目录)。

在这种情况下,注释可能是更好的选择,因为它们的值不会被清理。

集群配置选择器

Label Templates 可用于生成标签,以识别和选择具有特殊硬件属性的机器,从而形成新的 Kubernetes 集群。

附加到每个 机器清单 的标签可以用于 选择器,以便于 机器库存选择器模板 资源(有关更多详细信息,请参见 Kubernetes 集群配置 部分)。

自定义机器名称

可以使用 机器注册 spec.machineName 字段指定入驻机器的主机名。

spec.machineName 值经过与 Label Templates' variablessanitization 字段相同的处理,专用于 spec.machineInventoryLabels 字段。

机器注册 spec.machineNamespec.machineInventorylabels 字段之间有一个显著的区别:在 清理 过程中,底线 (_) 被替换为其他禁止字符(即,它被替换为连字符:-)。这是必需的,因为在 Linux 主机名中不允许使用底线。

有关如何为 Elemental 主机定义主机名的更多信息,请参见 如何/自定义主机名 部分。

渲染示例
  • 定义一个主机名模板,如 SLE-Micro-[random string of 6 hexadecimal values]

    • 机器注册规范: 机器名称:SLE-Micro-${Random\/Hex\/6}

    • 机器清单名称:SLE-Micro-32ad41

标签模板示例

带有标签模板变量的注册示例
Unresolved include directive in modules/zh/pages/label-templates/label-templates.adoc - include::example$quickstart/registration-hardware-dhcphostname.yaml[]