6.4. 边缘设备的操作系统配置
您可以在镜像中包括操作系统级别的主机配置,以获得最大一致性和可重复性。要更新配置,请创建新的操作系统镜像并使用新镜像更新设备。
但是,在以下情况下,使用新镜像更新设备可能不太现实:
- 镜像中缺少配置。
- 配置需要特定于设备。
- 配置需要在运行时进行更新,而无需更新操作系统镜像并重新引导。
对于这些情况,您可以声明设备文件系统上存在的一组配置文件。Red Hat Edge Manager 代理对配置文件应用更新,同时确保所有文件在文件系统中成功更新,或者回滚到其预更新状态。如果用户同时更新一组设备,Red Hat Edge Manager 代理会首先更新操作系统。然后,它会应用指定的一组配置文件。
您还可以指定 Red Hat Edge Manager 代理按顺序应用的配置设置列表。如果发生冲突,则最后应用的配置设置有效。
在 Red Hat Edge Manager 代理更新磁盘上的配置后,运行的应用程序需要将新配置重新加载到内存中才能使配置生效。如果更新涉及重启,systemd
会自动使用新配置以及正确顺序重启应用程序。如果更新不涉及重新启动,则许多应用可以检测对其配置文件的更改并自动重新载入文件。当应用程序不支持更改检测时,您可以使用设备生命周期 hook 在满足特定条件时运行脚本或命令。
6.4.1. 配置供应商 复制链接链接已复制到粘贴板!
您可以在 Red Hat Edge Manager 中,从多个源(称为配置供应商)提供配置。Red Hat Edge Manager 目前支持以下配置供应商:
- Git 配置提供程序
- 从 Git 存储库获取设备配置文件。
- Kubernetes Secret Provider
- 从 Kubernetes 集群获取 secret,并将内容写入设备的文件系统。
- HTTP 配置提供程序
- 从 HTTP (S)端点获取设备配置文件。
- 内联配置提供程序
- 允许在设备清单中指定内联设备配置文件,而不查询外部系统。
在以下部分了解更多有关配置供应商的信息:
6.4.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 必须使用的访问凭证。您只需要设置存储库一次。设置后,您可以使用存储库配置单个设备或设备群。
6.4.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。
6.4.1.3. 从 HTTP 服务器配置 复制链接链接已复制到粘贴板!
Red Hat Edge Manager 可以查询 HTTP 服务器以进行配置。HTTP 服务器可以为设备提供静态或动态生成的配置。
HTTP 配置提供程序使用以下参数:
参数 | 描述 |
|
Red Hat Edge Manager 中定义的 |
|
附加到 |
| 设备文件系统中文件的绝对路径,将 HTTP 服务器响应写入。 |
Repository
资源指定要连接的 Red Hat Edge Manager 的 HTTP 服务器,以及要使用的协议和访问凭证。您必须设置存储库需要一次,然后使用存储库配置多个设备或设备群。
6.4.1.4. 设备规格中内联的配置 复制链接链接已复制到粘贴板!
您可以在设备规格中内联指定配置。当您使用内联设备规格时,Red Hat Edge Manager 不需要连接到外部系统来获取配置。
Inline Config Provider 采用文件规格列表,每个文件规格采用以下参数:
参数 | 描述 |
| 要写入内容的设备文件系统中文件的绝对路径。如果文件已存在于指定路径中,则该文件会被覆盖。 |
| 文件的 UTF-8 或 base64 编码内容。 |
|
定义如何编码内容。必须是 |
|
可选。文件的权限模式。您可以使用前导零指定八进制数,例如 |
|
可选。文件的所有者。指定为名称或数字 ID。默认值为 |
| 可选。文件的组。指定为名称或数字 ID。 |
其他资源
6.4.2. 从 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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证资源是否已正确创建,并可以被 Red Hat Edge Manager 访问:
flightctl get repository/site-settings
flightctl get repository/site-settings
Copy 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 True
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过更新设备规格将
example-site
配置应用到设备:Copy to Clipboard Copied! Toggle word wrap Toggle overflow