8.2. 设备模板
团队的设备模板包含一个设备规格,在模板更新时应用于该团队中的所有设备。
例如,您可以在团队中的所有设备模板中指定,必须运行 quay.io/flightctl/rhel:9.5
操作系统镜像。
然后,Red Hat Edge Manager 服务将目标规格部署到团队中的所有设备,Red Hat Edge Manager 代理会更新每个设备。
您可以更改设备模板中的其他规格项目,Red Hat Edge Manager 会以同样的方式应用更改。
但是,有时不是该团队中的所有设备都需要有完全相同的规格。Red Hat Edge Manager 允许模板包含基于设备名称或标签值填充的占位符。
占位符的语法与 Go 模板 的语法匹配。但是,您只能使用简单的文本和操作。
不支持在占位符中使用条件或循环。
您可以从设备的元数据引用任何内容,如 {{ .metadata.labels.key }}
或 {{ .metadata.name }}
。
您还可以在占位符中使用以下功能:
-
大写
的功能会将值更改为大写。例如,函数是{{ upper .metadata.name }}
。 -
较低
函数将值改为小写。例如,函数为{{ lower .metadata.labels.key }}
。 -
replace
函数将所有子字符串出现的所有替换为另一个字符串。例如,函数是{{ replace "old" "new" .metadata.labels.key }}
。 -
如果访问缺少的标签,
getOrDefault
函数会返回一个默认值。例如,函数是{{ getOrDefault .metadata.labels "key" "default" }}
。您可以组合管道中的功能,例如: combined 函数为{{ getOrDefault .metadata.labels "key" "default" | upper | replace " "-" }}
。
确保您使用正确的 Go 模板语法。例如,{{ .metadata.labels.target-revision }}
无效,因为连字符。相反,您必须将字段指代为 {{ index .metadata.labels "target-revision" }}
。
您可以使用以下方法在设备模板中使用占位符:
-
您可以按部署阶段标记设备,例如: stage 标签是
stage: testing
和stage: production
。然后,您可以在引用要使用的操作系统镜像时将标签与stage
键用作占位符,例如,使用quay.io/myorg/myimage:latest-{{ .metadata.labels.stage }}
,或在引用 Git 存储库中的配置文件夹时。 -
您可以通过部署站点标记设备,例如部署站点为
site: factory-berlin
和site: factory-madrid
。 然后,当使用 Kubernetes 中的网络访问凭证引用 secret 时,您可以将标签与
站点
键一起使用。设备模板中的以下字段支持占位符:Expand 字段
支持的占位符
操作系统镜像
仓库名称、镜像名称、镜像标签
Git 配置提供程序
目标修订,path
HTTP 配置提供程序
URL 后缀、路径
内联配置提供程序
内容,路径