1.5. 管理设备
技术预览: Red Hat Edge Manager 从注册管理设备生命周期以停用设备。设备生命周期还包括设备管理,如组织、监控和使用 Red Hat Edge Manager 更新设备。
您可以单独或管理设备。Red Hat Edge Manager 允许您作为单个对象管理整个设备,而不是单独管理多个设备。
您只需要指定所需的配置一次,然后 Red Hat Edge Manager 将配置应用到团队中的所有设备。
了解单个设备管理是管理团队中设备的基础。在以下情况下,您可能需要单独管理设备:
- 如果几个设备有很大不同的配置。
- 如果您使用外部自动化来更新设备。
需要的访问权限:集群管理员
以下文档侧重于管理独立设备:
要了解更多有关在团队中管理设备的信息,请参阅管理设备团队。
1.5.1. 注册设备 复制链接链接已复制到粘贴板!
技术预览: 要使用 Red Hat Edge Manager 管理设备,您必须将设备注册到 Red Hat Edge Manager 服务。
第一次在设备上运行 Red Hat Edge Manager 代理时,代理将通过生成加密密钥对来为注册过程准备注册过程。设备的加密密钥对由公钥和私钥组成。私钥不会离开设备,因此设备无法重复或模拟。密钥对在注册过程中注册到 Red Hat Edge Manager 服务,并在停用该设备时删除。
当设备尚未注册时,代理会执行服务发现来查找其 Red Hat Edge Manager 服务实例。然后,设备建立与服务的安全 mTLS 保护的网络连接。该设备使用其 X.509 注册设备在镜像构建或设备置备过程中获取的证书。该设备向服务提交注册请求,其中包括:
- 设备硬件和操作系统的描述
- X.509 证书签名请求,其中包含设备的加密身份,以获取初始管理证书
在授权用户批准或拒绝请求之前,该设备不被视为可信,并保持在设备 lobby 中轮转。
如需更多信息,请参阅以下部分:
1.5.1.1. 先决条件 复制链接链接已复制到粘贴板!
- 您必须安装 Red Hat Edge Manager CLI。请参阅安装 Red Hat Edge Manager CLI。
- 您必须登录到 Red Hat Edge Manager 服务。
1.5.1.2. 使用 CLI 注册设备 复制链接链接已复制到粘贴板!
您必须先将设备注册到 Red Hat Edge Manager 服务中,然后才能管理它们。完成以下步骤:
运行以下命令,列出当前等待批准的所有设备:
flightctl get enrollmentrequests --field-selector="status.approval.approved != true"
flightctl get enrollmentrequests --field-selector="status.approval.approved != true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请参见以下示例输出:
NAME APPROVAL APPROVER APPROVED LABELS <device_name> Pending <none> <none>
NAME APPROVAL APPROVER APPROVED LABELS <device_name> Pending <none> <none>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注: 唯一的设备名称由代理生成,且无法更改。代理选择其公钥的 base32 编码的哈希值作为设备名称。
通过指定注册请求的名称来批准注册请求。另外,您可以使用-
labelor-l标志向设备添加标签。请参见以下示例:flightctl approve -l region=eu-west-1 -l site=factory-berlin enrollmentrequest/54shovu028bvj6stkovjcvovjgo0r48618khdd5huhdjfn6raskg
flightctl approve -l region=eu-west-1 -l site=factory-berlin enrollmentrequest/54shovu028bvj6stkovjcvovjgo0r48618khdd5huhdjfn6raskgCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请参见以下示例输出:
NAME APPROVAL APPROVER APPROVED LABELS <device_name> Approved user region=eu-west-1,site=factory-berlin
NAME APPROVAL APPROVER APPROVED LABELS <device_name> Approved user region=eu-west-1,site=factory-berlinCopy to Clipboard Copied! Toggle word wrap Toggle overflow
批准注册请求后,服务会发出管理证书,并在清单中注册该设备。该设备现在可以管理。
1.5.2. 查看设备 复制链接链接已复制到粘贴板!
技术预览: 要获取有关清单中设备的更多信息,您可以使用 Red Hat Edge Manager CLI。
1.5.2.1. 先决条件 复制链接链接已复制到粘贴板!
- 您必须安装 Red Hat Edge Manager CLI。请参阅安装 Red Hat Edge Manager CLI。
- 您必须登录到 Red Hat Edge Manager 服务。
- 您必须至少注册一个设备。
1.5.2.2. 查看设备清单和设备详情 复制链接链接已复制到粘贴板!
查看设备清单中的设备。完成以下步骤:
运行以下命令,查看设备清单中的设备:
flightctl get devices
flightctl get devicesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请参见以下示例输出:
NAME ALIAS OWNER SYSTEM UPDATED APPLICATIONS LAST SEEN <device_name> <none> <none> Online Up-to-date <none> 3 seconds ago
NAME ALIAS OWNER SYSTEM UPDATED APPLICATIONS LAST SEEN <device_name> <none> <none> Online Up-to-date <none> 3 seconds agoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,以 YAML 格式查看该设备的详情:
flightctl get device/<device_name> -o yaml
flightctl get device/<device_name> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请参见以下示例输出:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.3. 标签和标签选择器 复制链接链接已复制到粘贴板!
技术预览: 您可以通过分配标签来组织资源,包括独立设备、团队和任何其他资源。例如,您可以使用标签记录位置、硬件类型或目的。Red Hat Edge Manager 标签遵循与 Kubernetes 标签和标签选择器相同的语法、原则和运算符。
您可以在查看设备清单或将操作应用到设备时选择带有标签的设备。
标签使用 key=value 格式,其中您要使用键对设备进行分组。例如,如果您的标签遵循 site=<location& gt; 命名约定,您可以根据站点对设备进行分组。
您还可以使用仅包含键的标签。
标签必须遵循以下规则才能有效:
- 键和值必须是 63 个字符或更少。
-
键和值可由字母数字字符组成(
a-z、A-Z、0-9)。 -
键和值也可以包含短划线(
-)、下划线(_)、句点(.),但不能包含第一个或最后一个字符。 - 值可以被省略。
您可以使用以下方法将标签应用到资源:
- 在镜像构建期间定义一组默认标签,在部署过程中自动应用到所有设备。
- 在注册期间分配初始标签。
- 在注册后分配标签。
标记资源时,您可以通过编写标签选择器来选择资源子集。标签选择器是一个以逗号分隔的标签列表,用于选择具有相同标签集的资源。
请参见以下示例:
| 标签选择器示例 | 选择的设备 |
|---|---|
|
|
具有 |
|
|
具有 |
|
|
具有 |
如需更多信息,请参阅 标签和选择器。
1.5.4. 使用标签 复制链接链接已复制到粘贴板!
技术预览: 您可以使用标签组织设备。
1.5.4.1. 使用 CLI 查看设备及其标签 复制链接链接已复制到粘贴板!
查看设备及其关联的标签。您可以使用标签来组织设备和设备群。
完成以下步骤:
使用
-o wide选项查看清单中的设备:flightctl get devices -o wide
flightctl get devices -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请参见以下示例输出:
NAME ALIAS OWNER SYSTEM UPDATED APPLICATIONS LAST SEEN LABELS <device1_name> <none> <none> Online Up-to-date <none> 3 seconds ago region=eu-west-1,site=factory-berlin <device2_name> <none> <none> Online Up-to-date <none> 1 minute ago region=eu-west-1,site=factory-madrid
NAME ALIAS OWNER SYSTEM UPDATED APPLICATIONS LAST SEEN LABELS <device1_name> <none> <none> Online Up-to-date <none> 3 seconds ago region=eu-west-1,site=factory-berlin <device2_name> <none> <none> Online Up-to-date <none> 1 minute ago region=eu-west-1,site=factory-madridCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
-l <key=value> 选项查看清单中的带有特定标签或一组标签的设备:flightctl get devices -l site=factory-berlin -o wide
flightctl get devices -l site=factory-berlin -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请参见以下示例输出:
NAME ALIAS OWNER SYSTEM UPDATED APPLICATIONS LAST SEEN LABELS <device1_name> <none> <none> Online Up-to-date <none> 3 seconds ago region=eu-west-1,site=factory-berlin
NAME ALIAS OWNER SYSTEM UPDATED APPLICATIONS LAST SEEN LABELS <device1_name> <none> <none> Online Up-to-date <none> 3 seconds ago region=eu-west-1,site=factory-berlinCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.4.2. 使用 CLI 更新标签 复制链接链接已复制到粘贴板!
使用 CLI 更新设备上的标签。完成以下步骤:
运行以下命令,将设备的当前定义导出到文件中:
flightctl get device/<device1_name> -o yaml > my_device.yaml
flightctl get device/<device1_name> -o yaml > my_device.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用您的首选编辑器编辑
my_device.yaml文件。请参见以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令保存文件并应用更新的设备定义:
flightctl apply -f my_device.yaml
flightctl apply -f my_device.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证更改是否已应用
NAME ALIAS OWNER SYSTEM UPDATED APPLICATIONS LAST SEEN LABELS <device1_name> <none> <none> Online Up-to-date <none> 3 minutes ago some_key=some_value,some_other_key=some_other_value <device2_name> <none> <none> Online Up-to-date <none> 4 minutes ago region=eu-west-1,site=factory-madrid
NAME ALIAS OWNER SYSTEM UPDATED APPLICATIONS LAST SEEN LABELS <device1_name> <none> <none> Online Up-to-date <none> 3 minutes ago some_key=some_value,some_other_key=some_other_value <device2_name> <none> <none> Online Up-to-date <none> 4 minutes ago region=eu-west-1,site=factory-madridCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.5. 字段选择器 复制链接链接已复制到粘贴板!
字段选择器根据特定的资源字段值过滤 Red Hat Edge Manager 资源列表,包括独立设备、团队和任何其他资源。
字段选择器遵循与 Kubernetes 字段相同的语法、原则和运算符,以及用于更高级的搜索用例,使用其他运算符的标签选择器。
1.5.5.1. 支持的字段 复制链接链接已复制到粘贴板!
Red Hat Edge Manager 资源提供了一组您可以选择的元数据字段。
每个资源支持以下元数据字段:
-
metadata.name -
metadata.owner -
metadata.creationTimestamp
注: 要查询标签,请使用标签选择器进行高级且灵活的标签过滤。
如需更多信息,请参阅 标签和标签选择器。
1.5.5.2. 其他支持的字段列表 复制链接链接已复制到粘贴板!
除了元数据字段外,每个资源都有自己的唯一字段集合,您可以根据特定于资源的属性对过滤和选择提供更大的灵活性。
下表列出了为每个资源类型过滤支持的字段:
| Kind | 字段 |
| 证书签名请求 |
|
| 设备 |
|
| 注册请求 |
|
| fleet |
|
| 软件仓库 |
|
| 资源同步 |
|
1.5.5.3. 字段发现 复制链接链接已复制到粘贴板!
有些 Red Hat Edge Manager 资源可能会公开额外的支持字段。您可以使用 flightctl 命令和-- field-selector 选项发现支持的字段。如果您尝试使用 unsupported 字段,错误消息列出了可用的支持字段。
请参见以下示例:
flightctl get device --field-selector='text'
flightctl get device --field-selector='text'
Error: listing devices: 400, message: unknown or unsupported selector: unable to resolve selector name "text". Supported selectors are: [metadata.alias metadata.creationTimestamp metadata.name metadata.nameoralias metadata.owner status.applicationsSummary.status status.lastSeen status.summary.status status.updated.status]
Error: listing devices: 400, message: unknown or unsupported selector: unable to resolve selector name "text". Supported selectors are: [metadata.alias metadata.creationTimestamp metadata.name metadata.nameoralias metadata.owner status.applicationsSummary.status status.lastSeen status.summary.status status.updated.status]
字段 文本 不是用于过滤的有效字段。错误消息提供了可用于 Device 资源的 with -field-selector 的受支持字段列表。
然后,您可以使用其中一个支持的字段:
flightctl get devices --field-selector 'metadata.alias contains cluster'
flightctl get devices --field-selector 'metadata.alias contains cluster'
metadata.alias 字段使用 包含 运算符进行检查,以查看它是否具有值 cluster。
1.5.5.3.1. 例子 复制链接链接已复制到粘贴板!
按名称排除特定设备
以下命令根据其名称过滤出特定设备:
flightctl get devices --field-selector 'metadata.name!=<device_name>'
flightctl get devices --field-selector 'metadata.name!=<device_name>'
根据所有者、标签并创建时间戳过滤
以下命令检索由 Fleet/pos-fleet 拥有的设备,位于 us 区域,并在 2024 中创建:
flightctl get devices --field-selector 'metadata.owner=Fleet/pos-fleet, metadata.creationTimestamp >= 2024-01-01T00:00:00Z, metadata.creationTimestamp < 2025-01-01T00:00:00Z' -l 'region=us'
flightctl get devices --field-selector 'metadata.owner=Fleet/pos-fleet, metadata.creationTimestamp >= 2024-01-01T00:00:00Z, metadata.creationTimestamp < 2025-01-01T00:00:00Z' -l 'region=us'
根据所有者、标签和设备状态过滤
以下命令检索由 Fleet/pos-fleet 拥有的设备,位于 us 区域,并且 status.updated.status 为 Unknown 或 OutOfDate :
flightctl get devices --field-selector 'metadata.owner=Fleet/pos-fleet, status.updated.status in (Unknown, OutOfDate)' -l 'region=us'
flightctl get devices --field-selector 'metadata.owner=Fleet/pos-fleet, status.updated.status in (Unknown, OutOfDate)' -l 'region=us'
1.5.5.4. 支持的 Operator 复制链接链接已复制到粘贴板!
| Operator | 符号 | 描述 |
| Exists |
|
检查是否存在字段。例如, |
| DoesNotExist |
| 检查字段是否不存在。 |
| 等于 |
| 检查字段是否等于一个值。 |
| DoubleEquals |
| 另一种形式的相等性检查。 |
| NotEquals |
| 检查字段是否不等于值。 |
| GreaterThan |
| 检查字段是否大于一个值。 |
| GreaterThanOrEquals |
| 检查字段是否大于或等于一个值。 |
| LessThan |
| 检查字段是否小于一个值。 |
| LessThanOrEquals |
| 检查字段是否小于或等于一个值。 |
| In |
| 检查字段是否位于值列表中。 |
| NotIn |
| 检查字段是否不在值列表中。 |
| contains |
| 检查字段是否具有值。 |
| NotContains |
| 检查字段是否包含值。 |
1.5.5.5. 根据字段类型的 Operator 使用 复制链接链接已复制到粘贴板!
每个字段类型支持特定的 Operator 子集:
| 字段类型 | 支持的 Operator | value |
| 字符串 |
| 文本字符串 |
| Timestamp |
| RFC 3339 格式 |
| Number |
less
| 数字格式 |
| 布尔值 |
|
布尔值格式( |
| Array |
| 数组元素 |
1.5.6. 更新操作系统 复制链接链接已复制到粘贴板!
技术预览: 您可以通过更新设备规格中的目标操作系统镜像名称或版本来更新设备的操作系统。
当 Red Hat Edge Manager 代理与服务通信时,代理会检测到请求的更新。然后,代理会自动在后台下载和验证新操作系统版本。
Red Hat Edge Manager 代理根据更新策略调度实际系统更新。在调度的更新时间,代理会在不中断当前运行的操作系统的情况下安装新版本。
最后,设备会重启到新版本。
Red Hat Edge Manager 目前支持以下镜像类型和镜像引用格式:
| 镜像类型 | 镜像参考 |
| bootc |
对容器 registry 的 OCI 镜像引用。示例: |
在此过程中,代理会向服务发送状态更新。您可以通过查看设备状态来监控更新过程。如需更多信息,请参阅查看设备。
1.5.6.1. 在 CLI 上更新操作系统 复制链接链接已复制到粘贴板!
使用 CLI 更新设备。完成以下步骤:
运行以下命令,获取设备的当前资源清单:
flightctl get device/<device_name> -o yaml > my_device.yaml
flightctl get device/<device_name> -o yaml > my_device.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
Device资源,以指定新的操作系统名称和版本目标。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用更新的
Device资源:flightctl apply -f <device_name>.yaml
flightctl apply -f <device_name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.7. 边缘设备的操作系统配置 复制链接链接已复制到粘贴板!
技术预览: 您可以在镜像中包括操作系统级别的主机配置,以提供最大一致性和可重复性。
要更新配置,您可以创建一个新的操作系统镜像并使用新镜像更新设备。
但是,在以下情况下,使用新镜像更新设备可能不太现实:
- 镜像中缺少配置。
- 配置需要特定于设备。
- 配置需要在运行时进行更新,而无需更新操作系统镜像并重新引导。
对于这些情况,您可以声明设备文件系统上存在的一组配置文件。Red Hat Edge Manager 代理对配置文件应用更新,同时确保所有文件在文件系统中成功更新,或者回滚到其预更新状态。如果用户同时更新一组设备,Red Hat Edge Manager 代理会首先更新操作系统,然后应用指定的配置文件集合。
您还可以指定 Red Hat Edge Manager 代理按顺序应用的配置设置列表。如果发生冲突,则最后应用的配置设置有效。
重要: 在 Red Hat Edge Manager 代理更新磁盘上的配置后,运行的应用程序需要将新配置重新加载到内存中才能使配置生效。如果更新涉及重启,systemd 会自动使用新配置以及正确顺序重启应用程序。如果更新不涉及重新启动,则许多应用可以检测对其配置文件的更改并自动重新载入文件。当应用程序不支持更改检测时,您可以使用设备生命周期 hook 在满足特定条件时运行脚本或命令。
1.5.7.1. 配置供应商 复制链接链接已复制到粘贴板!
您可以在 Red Hat Edge Manager 中,从多个源(称为配置供应商)提供配置。Red Hat Edge Manager 目前支持以下配置供应商:
- Git 配置提供程序
- 从 Git 存储库获取设备配置文件。
- Kubernetes Secret Provider
- 从 Kubernetes 集群获取 secret,并将内容写入设备的文件系统。
- HTTP 配置提供程序
- 从 HTTP (S)端点获取设备配置文件。
- 内联配置提供程序
- 允许在设备清单中指定内联设备配置文件,而不查询外部系统。
在以下部分了解更多有关配置供应商的信息:
1.5.7.1.1. 从 Git 存储库配置 复制链接链接已复制到粘贴板!
您可以将设备配置存储在 Git 存储库中,如 GitHub 或 GitLab。然后,您可以添加 Git Config Provider,以便 Red Hat Edge Manager 将配置从存储库同步到设备的文件系统。
Git Config Provider 使用以下参数:
| 参数 | 描述 |
|
|
Red Hat Edge Manager 中定义的 |
|
| 要签出的存储库的分支、标签或提交。 |
|
|
存储库中目录的绝对路径,从中文件和子目录同步到设备的文件系统。 |
|
|
可选。设备文件系统中目录的绝对路径,将存储库的内容写入到其中。默认情况下,该值是文件系统 root ( |
Repository 资源定义 Git 存储库、Red Hat Edge Manager 必须使用的协议和访问凭证。存储库只需要设置一次。设置后,存储库可用于配置单个设备或设备群。
1.5.7.1.2. Kubernetes 集群中的 secret 复制链接链接已复制到粘贴板!
Red Hat Edge Manager 只能查询 Red Hat Edge Manager 在 Kubernetes secret 上运行的 Kubernetes 集群。该 secret 的内容可以写入设备文件系统上的路径。
Kubernetes Secret Provider 使用以下参数:
| 参数 | 描述 |
|
| secret 的名称。 |
|
| secret 的命名空间。 |
|
| 将 secret 内容写入到的设备文件系统中。 |
注: Red Hat Edge Manager 需要权限访问定义的命名空间中的 secret。例如,创建 ClusterRole 和 ClusterRoleBinding 允许 flightctl-worker 服务帐户获取并列出该命名空间中的 secret。
1.5.7.1.3. 从 HTTP 服务器配置 复制链接链接已复制到粘贴板!
Red Hat Edge Manager 可以查询 HTTP 服务器以进行配置。HTTP 服务器可以为设备提供静态或动态生成的配置。
HTTP 配置提供程序使用以下参数:
| 参数 | 描述 |
|
|
Red Hat Edge Manager 中定义的 |
|
|
附加到 |
|
| 设备文件系统中文件的绝对路径,将 HTTP 服务器响应写入。 |
Repository 资源指定要连接的 Red Hat Edge Manager 的 HTTP 服务器,以及要使用的协议和访问凭证。存储库需要设置一次,然后该存储库可用于配置多个设备或设备群。
1.5.7.1.4. 设备规格中内联的配置 复制链接链接已复制到粘贴板!
您可以在设备规格中内联指定配置。使用内联设备规格时,Red Hat Edge Manager 不需要连接到外部系统来获取配置。
Inline Config Provider 采用文件规格列表,每个文件规格采用以下参数:
| 参数 | 描述 |
|
| 要写入内容的设备文件系统中文件的绝对路径。如果文件已存在于指定路径中,则该文件会被覆盖。 |
|
| 文件的 UTF-8 或 base64 编码内容。 |
|
|
定义如何编码内容。必须是 |
|
|
可选。文件的权限模式。您可以使用前导零指定八进制数,例如 |
|
|
可选。文件的所有者。指定为名称或数字 ID。默认值为 |
|
| 可选。文件的组。指定为名称或数字 ID。 |
1.5.7.2. 其他资源 复制链接链接已复制到粘贴板!
- 有关设备生命周期 hook 以及 Red Hat Edge Manager 代理使用的默认规则的更多信息,请参阅 设备生命周期 hook。
- 有关授予 Red Hat Edge Manager 权限的更多信息,请参阅 Red Hat Edge Manager 授权。
1.5.8. 将 fleets 配置为自动注册 MicroShift 集群 复制链接链接已复制到粘贴板!
技术预览: 如果您有一组运行包含 MicroShift 的操作系统镜像的设备,您可以将您的团队配置为使用 Red Hat Advanced Cluster Management 自动注册 MicroShift 集群。
1.5.8.1. 配置设备模板 复制链接链接已复制到粘贴板!
要在团队中启用自动注册,请将配置添加到设备模板中。完成以下步骤:
添加
acm-crd资源配置,其中包含crd.yaml文件的filePath、您的仓库和后缀到Fleet资源。请参见以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
filePath、repository和suffix添加acm-import资源配置,如下例所示:- name: acm-import httpRef: filePath: /var/local/acm-import/import.yaml repository: acm-registration suffix: /agent-registration/manifests/{{.metadata.name}}- name: acm-import httpRef: filePath: /var/local/acm-import/import.yaml repository: acm-registration suffix: /agent-registration/manifests/{{.metadata.name}}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 如果您的 MicroShift 集群没有拉取 Red Hat Advanced Cluster Management 镜像,请添加
pull-secret资源,如下所示:- name: pull-secret inline: - path: "/etc/crio/openshift-pull-secret" content: "{\"auths\":{...}}"- name: pull-secret inline: - path: "/etc/crio/openshift-pull-secret" content: "{\"auths\":{...}}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果需要,在crd.yaml文件和import.yaml文件上运行kubectl apply -f,请添加apply-acm-manifests资源:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在控制台中,标记设备
fleet:acm,再点 Approve,这将自动选择fleet-acmfleet。有关使用标签 管理 设备的信息,请参阅管理设备团队。
1.5.9. 从 CLI 上的 Git 存储库管理设备配置 复制链接链接已复制到粘贴板!
技术预览: 在 Git 存储库中创建并应用设备配置。
完成以下步骤:
创建一个文件,如
site-settings-repo.yaml,其中包含名为site-settings的Repository资源的以下定义:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
Repository资源:flightctl apply -f site-settings-repo.yaml
flightctl apply -f site-settings-repo.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证资源是否已正确创建,并可以被 Red Hat Edge Manager 访问:
flightctl get repository/site-settings
flightctl get repository/site-settingsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请参见以下示例输出:
NAME TYPE REPOSITORY URL ACCESSIBLE site-settings git https://github.com/<your_org>/<your_repo>.git True
NAME TYPE REPOSITORY URL ACCESSIBLE site-settings git https://github.com/<your_org>/<your_repo>.git TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过更新设备规格将
example-site配置应用到设备:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.10. 设备生命周期 hook 复制链接链接已复制到粘贴板!
技术预览: Red Hat Edge Manager 代理可以使用设备生命周期 hook 在设备生命周期的特定点运行用户定义的命令。例如,您可以在操作系统镜像中添加 shell 脚本,以备份应用程序数据。然后,您可以指定该脚本必须成功运行并成功完成,然后才能代理开始更新操作系统。
另外,当磁盘上的文件发生变化时,某些应用程序或系统服务不会自动重新载入其配置文件。您可以将命令指定为另一个 hook (在代理完成更新过程后调用)来手动重新载入配置文件。
支持以下设备生命周期 hook:
| 生命周期 hook | 描述 |
|
| 代理完成更新后,会调用 hook,但在更改操作系统前。如果此 hook 中的操作返回失败,代理会取消更新。 |
|
| 在代理将更新写入磁盘后,会调用 hook。如果此 hook 中的操作返回失败,代理会取消并回滚更新。 |
|
| 在系统重启前会调用 hook。代理会阻止重启,直到操作完成或超时为止。如果此 hook 中的任何操作返回失败,代理会取消并回滚更新。 |
|
| 当代理重启后首先启动时,会调用 hook。如果此 hook 中的任何操作返回失败,代理会报告失败,但将继续启动。 |
1.5.10.1. 规则文件 复制链接链接已复制到粘贴板!
您可以通过在设备文件系统中的以下位置之一中添加规则文件来定义设备生命周期 hook:
-
/usr/lib/flightctl/hooks.d/<lifecycle_hook_name>/ drop-in 目录中的规则是只读的。要向/usr目录添加规则,您必须在镜像构建过程中将它们添加到操作系统镜像中。 -
/etc/flightctl/hooks.d/<lifecycle_hook_name>/drop-in 目录中的规则是 read-writable。您可以使用多种方法在运行时更新规则。
在创建并放置文件时,您必须考虑以下实践:
- 规则的名称必须是所有小写。
- 如果您在两个位置定义了规则,则规则将合并。
- 如果您在生命周期 hook 目录中添加多个规则文件,则会按照文件名的字典顺序处理这些文件。
-
如果您在两个位置定义了具有相同文件名的文件,
/etc文件夹中的文件优先于/usr文件夹中同名的文件。
规则文件以 YAML 格式编写,包含一个或多个操作的列表。操作可以是运行外部命令的指令。
当您为 hook 指定很多操作时,会按顺序执行操作,然后再开始下一个操作。
如果某个操作返回失败,则会跳过以下操作。
run 操作采用以下参数:
| 参数 | 描述 |
|
|
要运行的命令的绝对路径,后跟任何标志或参数,如 |
|
| 可选。键值对列表,以设置为命令的环境变量。 |
|
| 可选。命令从其中运行该命令的目录。 |
|
|
可选。允许操作完成的最长时间。将持续时间指定为单个正整数,后跟一个时间单位。 |
|
| 可选。运行该操作需要满足的条件列表。如果没有提供,则操作将无条件地运行。 |
默认情况下,每次触发 hook 时都会执行操作。但是,对于在更新 hook 后,您可以使用 If 参数添加执行某个操作必须满足 true 的条件。否则,会跳过该操作。
例如,只有在更新期间给定文件或目录更改时才会运行操作,您可以定义采用以下参数的路径条件:
| 参数 | 描述 |
|
|
到必须在更新期间更改的文件或目录的绝对路径,作为要执行的操作的条件。使用正斜杠( |
|
|
文件操作列表,如创建、 |
如果您在 更新 hook 后 为操作指定路径条件,您可以在命令的参数中包含以下变量,并替换为更改文件的绝对路径:
| 变量 | 描述 |
|
| 路径条件中指定的文件或目录的绝对路径。 |
|
| 在更新过程中更改的文件的空格分隔列表,由路径条件涵盖。 |
|
| 在更新期间创建的文件的空格分隔列表,由路径条件涵盖。 |
|
| 在更新过程中更新的文件的绝对路径以空格分隔,由路径条件涵盖。 |
|
| 在更新过程中删除的文件的空格分隔列表,由路径条件涵盖。 |
Red Hat Edge Manager 代理包含 /usr/lib/flightctl/hooks.d/afterupdating/00-default.yaml 中定义的一组内置规则。如果更改了某些文件,则执行以下命令:
| File | 命令 | 描述 |
|
|
|
通过向 |
|
|
|
对 |
|
|
|
对 |
1.5.10.2. 其他资源 复制链接链接已复制到粘贴板!
1.5.11. 监控设备资源 复制链接链接已复制到粘贴板!
技术预览: 您可以为设备资源设置资源监控器,并在资源利用率超过定义的阈值时创建警报。当代理警告 Red Hat Edge Manager 服务时,该服务会根据严重性级别将设备状态设置为 degraded 或 error。
资源监控器使用以下参数:
| 参数 | 描述 |
|
|
要监控的资源。目前支持 |
|
|
monitor 样本使用的时间间隔,以一个正整数的形式指定,后跟一个时间单位: |
|
| 警报规则列表。 |
|
|
仅针对 |
警报规则采用以下参数:
| 参数 | 描述 |
|
|
警报规则的严重性可以是 |
|
|
资源使用情况测量和平均超过抽样的时间,以正整数指定,后跟一个时间单位: |
|
| 触发警报的用量阈值,以百分比值为单位。在没有%符号的情况下,值范围从 0 到 100。 |
|
|
警报的人类可读描述。添加警报的详细信息,以帮助调试。默认情况下,警报描述 |
1.5.11.1. 使用 CLI 监控设备资源 复制链接链接已复制到粘贴板!
通过 CLI 监控设备的资源,为您提供跟踪性能并排除问题的工具和命令。
完成以下步骤: