1.7. 管理设备团队
技术预览: Red Hat Edge Manager 通过 设备群 简化了大量设备和工作负载的管理。fleet 是一个资源,它定义由通用设备模板和管理策略管理的一组设备。
当您更改设备模板时,当 Red Hat Edge Manager 代理检测到新目标规格时,团队中的所有设备都会接收更改。
团队中的设备监控也已被简化,因为您可以检查整个团队的状态概述。
群级管理具有以下优点:
- 扩展操作,因为您只需要为每个团队执行一次操作,而不是对每个设备执行一次操作。
- 尽可能减少配置错误和配置偏移的风险。
- 当您将设备添加到团队中的团队或替换设备时,会自动应用目标配置。
fleet 规格由以下功能组成:
- 标签选择器
- 确定哪个设备是该团队的一部分。
- 设备模板
- 定义 Red Hat Edge Manager 在团队中的设备强制执行的配置。
- 策略(policy)
- 监管如何管理设备,例如,如何将对设备模板的更改应用到设备。
您可以同时单独管理和管理的设备。当将设备选为团队时,Red Hat Edge Manager 根据设备模板为新设备创建设备规格。如果您更新一个团队或新设备的设备模板,Red Hat Edge Manager 会在团队中强制实施新规格。
如果没有选择设备到任何群,则该设备被视为用户管理或非受管设备。对于用户管理的设备,您必须手动或通过外部自动化更新设备规格。
重要: 设备不能是同时多个团队的成员。
如需更多信息,请参阅 标签和标签选择器。
1.7.1. 设备选择为一个团队 复制链接链接已复制到粘贴板!
默认情况下,设备不会被分配给一个机。相反,每个团队都使用一个选择器来定义必须将设备添加到团队中的标签。
要了解如何在一个团队中使用标签,请参阅以下示例:
以下列表显示了销售终端设备及其标签点:
| 设备 | 标签 |
| A |
|
| B |
|
| C |
|
| D |
|
如果所有销售点终端都使用相同的配置,并由同一运维团队管理,您可以使用 type=pos-terminal 标签选择器定义一个名为 pos-terminals 的团队。然后,团队包含设备 A、B、C 和 D。
但是,您可能希望为不同机构为开发或生产创建单独的团队。您可以使用 type=pos-terminal、stage=development 标签选择器(选择设备 C 和 D)定义开发团队。然后,您可以使用 type=pos-terminal, stage=production 标签选择器为 production 定义另一个团队。通过使用正确的标签选择器,您可以独立管理这两个团队。
重要 : 您必须以两个团队定义选择器,它们不会选择同一设备。例如,如果一个 fleet 选择 region=east,另一个 fleet 选择 stage=production,则两个团队都尝试选择设备 A。如果两个团队试图选择同一设备,Red Hat Edge Manager 会在当前分配的 fleet 中保留设备(如果有),并在受影响的 fleet 上将 OverlappingSelectors 条件设置为 true。
1.7.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 时,您可以将标签与
站点键一起使用。
设备模板中的以下字段支持占位符:
| 字段 | 支持的占位符 |
| 操作系统镜像 | 仓库名称、镜像名称、镜像标签 |
| Git 配置提供程序 | 目标修订,path |
| HTTP 配置提供程序 | URL 后缀、路径 |
| 内联配置提供程序 | 内容,路径 |
1.7.3. 使用 CLI 选择设备到团队中 复制链接链接已复制到粘贴板!
技术预览: 定义标签选择器,将设备添加到团队中。
完成以下任务:
运行以下命令,以验证标签选择器是否返回您要添加到团队中的设备:
flightctl get devices -l type=pos-terminal -l stage=development
flightctl get devices -l type=pos-terminal -l stage=developmentCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果运行命令返回预期的设备列表,您可以使用以下 YAML 文件定义一个选择设备的 fleet :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用更改:
flightctl apply -f my_fleet.yaml
flightctl apply -f my_fleet.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查与其他团队选择器的重叠:
flightctl get fleets/my_fleet -o json | jq -r '.status.conditions[] | select(.type=="OverlappingSelectors").status'
flightctl get fleets/my_fleet -o json | jq -r '.status.conditions[] | select(.type=="OverlappingSelectors").status'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请参见以下示例输出:
False
FalseCopy to Clipboard Copied! Toggle word wrap Toggle overflow