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 使用以下参数:

Expand

参数

描述

软件仓库

Red Hat Edge Manager 中定义的 Repository 资源的名称。

targetRevision

要签出的存储库的分支、标签或提交。

路径

存储库中目录的绝对路径,从中文件和子目录同步到设备的文件系统。Path 目录对应于设备上的根目录(/),除非您指定了 MountPath 参数。

MountPath

可选。设备文件系统中目录的绝对路径,将存储库的内容写入到其中。默认情况下,该值是文件系统 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 使用以下参数:

Expand

参数

描述

Name

secret 的名称。

Namespace

secret 的命名空间。

MountPath

将 secret 内容写入到的设备文件系统中。

注意

Red Hat Edge Manager 需要权限访问定义的命名空间中的 secret。例如,创建 ClusterRoleClusterRoleBinding 允许 flightctl-worker 服务帐户获取并列出该命名空间中的 secret。

6.4.1.3. 从 HTTP 服务器配置

Red Hat Edge Manager 可以查询 HTTP 服务器以进行配置。HTTP 服务器可以为设备提供静态或动态生成的配置。

HTTP 配置提供程序使用以下参数:

Expand

参数

描述

软件仓库

Red Hat Edge Manager 中定义的 Repository 资源的名称。

Suffix

附加到 Repository 资源中定义的基本 URL 的后缀。后缀可以包含 path 和查询参数,如 /path/to/endpoint?query=param

filepath

设备文件系统中文件的绝对路径,将 HTTP 服务器响应写入。

Repository 资源指定要连接的 Red Hat Edge Manager 的 HTTP 服务器,以及要使用的协议和访问凭证。您必须设置存储库需要一次,然后使用存储库配置多个设备或设备群。

6.4.1.4. 设备规格中内联的配置

您可以在设备规格中内联指定配置。当您使用内联设备规格时,Red Hat Edge Manager 不需要连接到外部系统来获取配置。

Inline Config Provider 采用文件规格列表,每个文件规格采用以下参数:

Expand

参数

描述

路径

要写入内容的设备文件系统中文件的绝对路径。如果文件已存在于指定路径中,则该文件会被覆盖。

内容

文件的 UTF-8 或 base64 编码内容。

ContentEncoding

定义如何编码内容。必须是 plainbase64。默认值为 plain

模式

可选。文件的权限模式。您可以使用前导零指定八进制数,例如 0644,或者指定为没有前导零的十进制,如 420。支持 setuidsetgidsticky 位。如果没有指定,则文件的权限模式默认为 0644

用户

可选。文件的所有者。指定为名称或数字 ID。默认值为 root

可选。文件的组。指定为名称或数字 ID。

6.4.2. 从 CLI 上的 Git 存储库管理设备配置

在 Git 存储库中创建并应用设备配置。

完成以下步骤:

流程

  1. 创建一个文件,如 site-settings-repo.yaml,其中包含名为 site-settingsRepository 资源的以下定义:

    apiVersion: flightctl.io/v1alpha1
    kind: Repository
    metadata:
      name: site-settings
    spec:
      type: git
      url: https://github.com/<your_org>/<your_repo>.git
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来创建 Repository 资源:

    flightctl apply -f site-settings-repo.yaml
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令,验证资源是否已正确创建,并可以被 Red Hat Edge Manager 访问:

    flightctl get repository/site-settings
    Copy to Clipboard Toggle word wrap

    请参见以下示例输出:

    NAME           TYPE  REPOSITORY URL                                 ACCESSIBLE
    site-settings  git   https://github.com/<your_org>/<your_repo>.git  True
    Copy to Clipboard Toggle word wrap
  4. 通过更新设备规格将 example-site 配置应用到设备:

    apiVersion: flightctl.io/v1alpha1
    kind: Device
    metadata:
      name: <device_name>
    spec:
    [...]
      config: 
    1
    
      - name: example-site
        configType: GitConfigProviderSpec
        gitRef:
          repository: site-settings
          targetRevision: production
          path: /etc/example-site 
    2
    
    [...]
    Copy to Clipboard Toggle word wrap
    1
    示例配置从 site-settings 存储库的 production 分支中获取 example-site 目录中的所有文件,并将文件放置在根目录(/)中。
    2
    通过创建目录结构来确保目标路径可写入。根目录(/)在 bootc 系统中不可写入。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat