准备好安装 MicroShift


Red Hat build of MicroShift 4.19

计划 MicroShift 安装并了解重要的配置

Red Hat OpenShift Documentation Team

摘要

本文档提供有关规划 MicroShift 安装的信息,并提供有关重要配置流程的详细信息。

第 1 章 准备好安装 MicroShift

要使用 Red Hat Device Edge 在边缘计算,请规划您的 Red Hat Enterprise Linux (RHEL)安装类型和 MicroShift 配置。

1.1. 安装 MicroShift 的系统要求

这些要求是 MicroShift 和 Red Hat Enterprise Linux (RHEL)的最低系统要求。为计划运行的工作负载添加系统要求。

例如,如果 IoT 网关解决方案需要 4 GB RAM,则您的系统至少需要 2 GB 用于 RHEL 和 MicroShift,再加上 4 GB 工作负载。因此,本示例部署至少需要 6 GB RAM。

如果要在远程位置部署物理设备,允许额外的容量来满足将来的需求。如果您不确定所需的 RAM,请使用设备可以支持的最大 RAM 容量。

在安装 MicroShift 前必须满足以下条件:

  • 兼容的 RHEL 版本。如需更多信息,请参阅以下链接:

  • 强烈建议使用为 RHEL 版本认证的硬件或 hypervisor。如需更多信息,请参阅以下链接:

  • AArch64 或 x86_64 系统架构。
  • 2 个 CPU 内核。
  • 2 GB RAM。从网络(UEFI HTTP 或 PXE 引导)安装需要 RHEL 3 GB RAM。
  • 10 GB 存储。
  • 在您的红帽帐户上有一个活跃的 MicroShift 订阅。如果您没有相关订阅,请联络您的销售代表以获得更多信息。
  • 如果您的工作负载需要持久性卷(PV),则代表您有一个有足够可用工作负载的逻辑卷管理器(LVM)卷组(VG)。
  • 您可以配置对系统的安全访问,使其能够管理它。如需更多信息,请参阅以下链接:

1.2. 兼容性表

您必须使用 MicroShift 版本对受支持的 Red Hat Enterprise Linux (RHEL)版本配对,如以下兼容性表所述。

Red Hat Device Edge 发行版本兼容性列表

Red Hat Enterprise Linux (RHEL)和 MicroShift 作为一个设备边缘计算的单一解决方案一起工作。您可以单独更新每个组件,但产品版本必须兼容。例如,将 MicroShift 从 4.14 更新至 4.16 或从 4.18 升级到 4.19 需要 Red Hat Enterprise Linux (RHEL)更新。支持的 Red Hat Device Edge 配置会为每个版本一起使用验证的版本,如下表所示:

Expand
RHEL 版本MicroShift Version支持的 MicroShift 版本 → 版本更新

9.6

4.19

4.19.0 → 4.19.z

9.4

4.18

4.18.0 → 4.18.z, 4.18 → 4.19 on RHEL 9.6

9.4

4.17

4.17.1 → 4.17.z, 4.17 → 4.18

9.4

4.16

4.16.0 → 4.16.z, 4.16 → 4.17, 4.16 → 4.18

9.2, 9.3

4.15

4.15.0 → 4.15.z, 4.15 → 4.16 on RHEL 9.4

9.2, 9.3

4.14

4.14.0 → 4.14.z, 4.14 → 4.15, 4.14 → 4.16 on RHEL 9.4

1.3. MicroShift 安装工具

要使用 MicroShift,您必须已经有或计划安装 Red Hat Enterprise Linux (RHEL)类型,如裸机,或作为您置备的虚拟机(VM)。虽然每个用例都有不同的详情,但每个 Red Hat Device Edge 安装都使用 RHEL 工具和 OpenShift CLI (oc)。

您可以使用 RPM 在现有 RHEL 机器上安装 MicroShift。除非同时安装基于镜像的 RHEL 系统或虚拟机,否则您不需要其他工具。

1.4. RHEL 安装类型

根据您要运行集群的位置以及应用程序需要做什么,选择最佳的 Red Hat Enterprise Linux (RHEL)安装类型。如需最佳结果,请应用以下原则:

  • 对于每个安装目标,您必须同时配置操作系统和 MicroShift。
  • 考虑应用程序存储需求、集群或应用程序访问的网络,以及您的身份验证和安全要求。
  • 了解 RHEL 安装类型之间的区别,包括支持范围,以及所使用的工具。

1.4.1. 使用 RPM 或基于软件包的安装

这个简单的安装类型使用基本命令在现有 RHEL 机器上安装 MicroShift。此安装类型需要基本 CLI 工具。

1.4.2. 基于 RHEL 镜像的安装

基于镜像的安装类型涉及创建为边缘部署优化的基于 rpm-ostree的、不可变的 RHEL 版本。

  • RHEL for Edge 可以部署到生产环境中的边缘。您可以根据本地环境,使用这个安装类型,其中有网络连接、限制或完全离线。
  • RHEL 的镜像模式基于 OCI 容器镜像并可引导容器。有关 bootc 技术简介,请参阅以下链接:

在选择基于镜像的安装时,请考虑安装目标是否处于离线状态或联网状态、您要构建系统镜像的位置,以及如何计划加载 Red Hat Device Edge。使用以下场景作为常规指导:

  • 如果您在断开连接的环境外构建完全自包含的 RHEL for Edge 或 RHEL ISO 的镜像模式,然后在边缘设备中本地安装 ISO,您可能不需要 RPM 存储库或镜像 registry。
  • 如果您在未包含容器镜像的断开连接的环境中构建 ISO,但仅由 RPM 组成,则在断开连接的环境中需要镜像 registry。您可以使用您的镜像 registry 来拉取容器镜像。
  • 如果您在断开连接的环境中构建镜像,或使用基于软件包的安装,则需要镜像 registry 和本地 RPM 镜像存储库。您可以将 RHEL reposync 工具或 Red Hat Satellite 用于高级用例。如需更多信息,请参阅以下链接:

1.5. RHEL 安装工具和概念

熟悉以下 RHEL 工具和概念:

1.6. Red Hat Device Edge 安装步骤

对于大多数安装类型,还必须执行以下步骤:

  • 使用以下链接从 Red Hat Hybrid Cloud Console 下载 pull secret:

  • 通过向 MicroShift YAML 配置文件添加参数和值,准备好配置 MicroShift。如需更多信息,请参阅以下链接:

  • 决定是否要为 MicroShift 集群中使用的应用程序和任务配置存储,或者完全禁用 MicroShift 存储插件。
  • 有关在 RHEL 中创建卷组和逻辑卷的更多信息,请参阅以下链接:

  • 根据您计划 MicroShift 集群和应用程序的访问需求来配置网络设置。考虑是否使用单堆栈网络、配置防火墙或配置路由。

    注意

    您可以使用 Red Hat Enterprise Linux for Real Time (实时内核),其中可预测的延迟至关重要。低延迟应用程序还需要工作负载分区。有关低延迟和实时内核的更多信息,请参阅以下链接:

第 2 章 在 MicroShift 中使用 FIPS 模式

您可以在 Red Hat Enterprise Linux (RHEL) 9 上基于 RPM 的 MicroShift 安装中使用 FIPS 模式。

  • 要在 MicroShift 容器中启用 FIPS 模式,必须在机器启动前启用 worker 机器内核以 FIPS 模式运行。
  • 不支持在 Red Hat Enterprise Linux for Edge (RHEL for Edge)镜像中使用 FIPS。
  • 不支持将 FIPS 与 RHEL 镜像模式一起使用。

2.1. 基于 RHEL RPM 的安装的 FIPS 模式

将 FIPS 与 MicroShift 搭配使用需要在 Red Hat Enterprise Linux (RHEL)安装中启用加密模块自我检查。在将主机操作系统配置为使用 FIPS 模块后,MicroShift 容器会自动启用来以 FIPS 模式运行。

  • 当 RHEL 以 FIPS 模式启动时,MicroShift 核心组件使用已提交到 NIST for FIPS 140-2/140-3 验证的 RHEL 加密库。
  • 当在计划用作 worker 机器的机器上安装 RHEL 9 时,您必须启用 FIPS 模式。

    重要

    因为 FIPS 必须在集群首次启动的操作系统前启用,所以您不能在部署集群后启用 FIPS。

  • MicroShift 使用 FIPS 兼容的 Golang 编译器。
  • CRI-O 容器运行时支持 FIPS。

2.1.1. 限制:

  • TLS 实现 FIPS 支持没有完成。
  • FIPS 实现不提供单个函数来计算哈希函数并验证基于该哈希的键。在以后的 MicroShift 版本中,将继续评估这个限制以改进。

第 3 章 greenboot 健康检查框架

了解 greenboot 健康检查如何与 MicroShift 搭配使用。

3.1. Greenboot 如何使用目录运行脚本

Greenboot 是 rpm-ostree 系统上 systemd 服务的通用健康检查框架,如 Red Hat Enterprise Linux for Edge (RHEL for Edge)。此框架包含在带有 microshift-greenbootgreenboot-default-health-checks RPM 软件包的 MicroShift 安装中。

Greenboot 健康检查会在不同时间运行来评估系统健康状况,并在软件出现问题的情况下自动回滚到最后一个健康状态,例如:

  • 默认健康检查脚本会在每次系统启动时运行。
  • 除了默认的健康检查外,您还可以编写、安装和配置应用程序健康检查脚本,以便在每次系统启动时也运行。
  • Greenboot 可以降低更新期间被锁定在边缘设备的风险,并防止在更新失败时出现大量服务中断。
  • 当检测到失败时,系统使用 rpm-ostree 回滚功能引导到最后一个已知的工作配置。此功能对于直接可服务性是有限或不存在的边缘设备特别有用。

MicroShift 应用程序健康检查脚本包含在 microshift-greenboot RPM 中。greenboot-default-health-checks RPM 包括验证 DNS 和 ostree 服务是否可以访问健康检查脚本。您可以为正在运行的工作负载创建自己的健康检查脚本。您可以编写一个来验证应用程序是否已启动,例如:

3.2. Greenboot 如何使用目录运行脚本

健康检查脚本从四个 /etc/greenboot 目录运行。这些脚本按字母顺序运行。当您为工作负载配置脚本时请注意这一点。

当系统启动时,greenboot 在 required.d 和 want .d 目录中运行脚本。根据这些脚本的结果,greenboot 会继续启动或尝试回滚,如下所示:

  1. 系统如预期:当 required.d 目录中的所有脚本都成功运行时,greenboot 会运行 /etc/greenboot/green.d 目录中存在的任何脚本。
  2. 系统问题:如果 required.d 目录中任何脚本失败,greenboot 会运行 red.d 目录中存在的任何预滚动脚本,然后重新启动系统。
注意

Greenboot 将脚本和健康检查输出重定向到系统日志。登录后,每日消息将提供整体系统健康输出。

3.2.1. Greenboot 目录详情

从任何脚本返回非零退出代码意味着该脚本已失败。Greenboot 会在尝试回滚到以前的版本前重启系统来重试脚本。

  • /etc/greenboot/check/required.d 包含不能失败的健康检查。

    • 如果脚本失败,greenboot 默认会重试三次。您可以通过将 GREENBOOT_MAX_BOOTS 参数设置为所需的重试次数,在 /etc/greenboot/greenboot.conf 文件中配置重试次数。
    • 在所有重试失败后,如果可用,greenboot 会自动启动回滚。如果没有可用的回滚,系统日志输出显示需要手动干预。
    • MicroShift 的 40_microshift_running_check.sh 健康检查脚本安装在这个目录中。
  • /etc/greenboot/check/wanted.d 包含允许失败的健康脚本,而不会导致回滚系统。

    • 如果这些脚本失败,greenboot 会记录失败,但不会启动一个回滚。
  • /etc/greenboot/green.d 包含在 greenboot 声明开始成功后运行的脚本。
  • /etc/greenboot/red.d 包含在 greenboot 声明启动失败时运行的脚本,包括 40_microshift_pre_rollback.sh prerollback 脚本。这个脚本会在系统回滚前执行。该脚本执行 MicroShift pod 和 OVN-Kubernetes 清理,以避免在将系统回滚到以前的版本后出现潜在的冲突。
重要

如果您自定义 /etc/greenboot/greenboot.conf 文件中任何环境变量的值,则当 greenboot RPM 软件包被更新或降级时,这些更改可能会丢失。

  • 要在使用 MicroShift 构建系统镜像时保留自定义,请将 greenboot.conf 文件添加到蓝图中。
  • 要在使用 RPM 安装时保留自定义,请在安装 MicroShift 和 greenboot RPM 后对 greenboot.conf 文件应用更改。

3.3. 包括 greenboot 健康检查

健康检查脚本在 /usr/lib/greenboot/check 中包括,它是 Red Hat Enterprise Linux for Edge (RHEL for Edge)镜像模式中的只读目录。以下健康检查包含在 greenboot-default-health-checks 框架中。

  • 检查存储库 URL 是否仍然是 DNS 解决性:

    这个脚本位于 /usr/lib/greenboot/check/required.d/01_repository_dns_check.sh 下,并确保对存储库 URL 的 DNS 查询仍然可用。

  • 检查更新平台是否仍然可访问:

    这个脚本位于 /usr/lib/greenboot/check/wanted.d/01_update_platform_check.sh 下,并尝试从 /etc/ostree/remotes.d 中定义的更新平台连接并获取 2XX 或 3XX HTTP 代码。

  • 检查当前引导是否已由硬件 watchdog 触发:

    这个脚本位于 /usr/lib/greenboot/check/required.d/02_watchdog.sh 下,并检查当前引导是否已 watchdog-triggered。

    • 如果在宽限期内发生 watchdog-triggered 重启,则当前引导会被标记为红色。Greenboot 不会触发到以前部署的回滚。
    • 如果在宽限期后 watchdog-triggered 重启发生,则当前引导不会标记为红色。Greenboot 不会触发到以前部署的回滚。
    • 默认启用 24 小时宽限期。可以通过以下方法禁用宽限(grace)期:修改 /etc/greenboot/greenboot.conf to false 中的 GREENBOOT_WATCHDOG_CHECK_ENABLED;或通过 /etc/greenboot/greenboot.conf 中的 GREENBOOT_WATCHDOG_GRACE_PERIOD=number_of_hours 变量值进行配置。

3.4. MicroShift 健康检查脚本

40_microshift_running_check.sh 健康检查脚本仅执行核心 MicroShift 服务的验证。在 greenboot 目录中安装自定义工作负载健康检查脚本,以确保系统更新后成功应用程序操作。脚本按字母顺序运行。

MicroShift 健康检查在下表中列出:

Expand
表 3.1. MicroShift 的验证状态和结果
验证PassFail

检查该脚本是否使用 root 权限运行

下一步

exit 0

检查 microshift.service 是否已启用

下一步

exit 0

等待 microshift.service 处于活动状态(!failed)

下一步

exit 1

对于每个核心命名空间,请等待工作负载的就绪状态

下一步

exit 1

3.4.1. 验证等待周期

每个验证中的等待周期默认为 10 分钟。在等待周期后,如果验证没有成功,则会声明它失败。每次引导验证循环后,这个等待周期会递增到基础等待周期。

  • 您可以通过在 /etc/greenboot/greenboot.conf 配置文件中设置 MICROSHIFT_WAIT_TIMEOUT_SEC 环境变量来覆盖 base-time 等待周期。例如,您可以通过将值重置为 300 秒来更改等待时间到 5 分钟,如 MICROSHIFT_WAIT_TIMEOUT_SEC=300

3.5. 启用 systemd 日志服务数据持久性

systemd 日志服务的默认配置会将数据存储在 volatile /run/log/journal 目录中。要在系统启动和重启后查看系统日志,您必须启用日志持久性并设置对最大日志数据大小的限制。

流程

  1. 运行以下命令来创建目录:

    $ sudo mkdir -p /etc/systemd/journald.conf.d
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来创建配置文件:

    cat <<EOF | sudo tee /etc/systemd/journald.conf.d/microshift.conf &>/dev/null
    [Journal]
    Storage=persistent
    SystemMaxUse=1G
    RuntimeMaxUse=1G
    EOF
    Copy to Clipboard Toggle word wrap
  3. 根据您的大小要求编辑配置文件值。

3.6. 更新和第三方工作负载

更新后,健康检查特别有用。您可以检查 greenboot 健康检查的输出,并确定是否声明了更新的有效。此健康检查可帮助您确定系统是否正常工作。

更新的健康检查脚本会安装到 /etc/greenboot/check/required.d 目录中,并在每次系统启动时自动执行。退出具有非零状态的脚本意味着系统启动已被声明为失败。

重要

等待直到声明更新在启动第三方工作负载前有效。如果在工作负载启动后执行回滚,您可以丢失数据。在更新完成前,一些第三方工作负载在设备上创建或更新数据。在回滚后,文件系统会在更新前恢复到其状态。

3.7. 检查更新的结果

成功启动后,greenboot 在 GRUB 中将变量 boot_success= 设置为 1。您可以按照以下流程在系统日志中更新后查看系统健康检查的整体状态。

流程

  • 要访问系统健康检查的整体状态,请运行以下命令:

    $ sudo grub2-editenv - list | grep ^boot_success
    Copy to Clipboard Toggle word wrap

    成功启动系统的输出示例

    boot_success=1 
    1
    Copy to Clipboard Toggle word wrap

    1
    如果您的命令返回 boot_success=0,则 greenboot 健康检查仍然在运行,或者更新失败。

3.8. 在系统日志中访问健康检查输出

您可以按照以下流程手动访问系统日志中的健康检查输出。

流程

  • 要访问健康检查的结果,请运行以下命令:

    $ sudo journalctl -o cat -u greenboot-healthcheck.service
    Copy to Clipboard Toggle word wrap

    失败健康检查的输出示例

    ...
    ...
    Running Required Health Check Scripts...
    STARTED
    GRUB boot variables:
    boot_success=0
    boot_indeterminate=0
    boot_counter=2
    ...
    ...
    Waiting 600s for MicroShift service to be active and not failed
    FAILURE
    ...
    ...
    Copy to Clipboard Toggle word wrap

3.9. 在系统日志中访问预滚动健康检查输出

您可以在系统日志中访问健康检查脚本的输出。例如,按照以下流程检查预滚动脚本的结果。

流程

  • 要访问预滚动脚本的结果,请运行以下命令:

    $ sudo journalctl -o cat -u redboot-task-runner.service
    Copy to Clipboard Toggle word wrap

    prerollback 脚本的输出示例

    ...
    ...
    Running Red Scripts...
    STARTED
    GRUB boot variables:
    boot_success=0
    boot_indeterminate=0
    boot_counter=0
    The ostree status:
    * rhel c0baa75d9b585f3dd989a9cf05f647eb7ca27ee0dbd4b94fe8c93ed3a4b9e4a5.0
        Version: 9.6
        origin: <unknown origin type>
      rhel 6869c1347b0e0ba1bbf0be750cdf32da5138a1fcbc5a4c6325ab9eb647b64663.0 (rollback)
        Version: 9.6
        origin refspec: edge:rhel/9/x86_64/edge
    System rollback imminent - preparing MicroShift for a clean start
    Stopping MicroShift services
    Removing MicroShift pods
    Killing conmon, pause and OVN processes
    Removing OVN configuration
    Finished greenboot Failure Scripts Runner.
    Cleanup succeeded
    Script '40_microshift_pre_rollback.sh' SUCCESS
    FINISHED
    redboot-task-runner.service: Deactivated successfully.
    Copy to Clipboard Toggle word wrap

    注意

    如果是回滚,则 pre-rollback 脚本运行 sudo microshift-cleanup-data --ovn 命令,以为潜在的软件降级准备系统。

3.10. 使用健康检查脚本检查更新

使用以下步骤在更新后访问系统日志中的 greenboot 健康检查脚本的输出。

流程

  • 要访问更新检查的结果,请运行以下命令:

    $ sudo grub2-editenv - list | grep ^boot_success
    Copy to Clipboard Toggle word wrap

    成功更新的输出示例

    boot_success=1 
    1
    Copy to Clipboard Toggle word wrap

    1
    如果您的命令返回 boot_success=0,则 greenboot 健康检查仍然在运行,或者更新失败。

第 4 章 为断开连接的安装 mirror 容器镜像

在断开连接的网络中部署 MicroShift 时,您可以使用自定义容器 registry。可以在没有直接互联网连接的受限网络中运行集群,方法是从私有 registry 中的镜像的容器镜像安装集群。

4.1. 将容器镜像镜像到现有 registry 中

使用自定义 air-gapped 容器 registry 或镜像(mirror)是某些用户环境和工作负载要求所必需的。镜像功能允许向 air-gapped 环境传输容器镜像和更新,可在 MicroShift 实例上安装它们。

要为 MicroShift 容器创建 air-gapped 镜像 registry,您必须完成以下步骤:

  • 获取要镜像的容器镜像列表。
  • 配置镜像先决条件,包括安全签名管理。
  • 在可访问互联网的主机上下载镜像。
  • 将下载的镜像目录复制到 air-gapped 站点。
  • 将镜像上传到 air-gapped 站点中的镜像 registry。
  • 将 MicroShift 主机配置为使用镜像 registry。

4.2. 获取镜像 registry 容器镜像列表

要使用镜像 registry,您必须知道哪些容器镜像引用由 MicroShift 的特定版本使用。这些引用在作为 microshift -release-info RPM 软件包一部分的 release-<arch>.json 文件中提供。

注意

要在断开连接的环境中镜像 Operator Lifecycle Manager (OLM),请添加 release-olm-$ARCH.json 中提供的引用,该引用包含在 microshift-olm RPM 中,并按照相同的流程操作。使用 oc-mirror CLI 插件镜像 Operator 目录和 Operator。

先决条件

  • 已安装 jq。

流程

  1. 使用以下方法之一访问容器镜像引用列表:

    • 如果在 MicroShift 主机上安装了软件包,请运行以下命令获取文件的位置:

      $ rpm -ql microshift-release-info
      Copy to Clipboard Toggle word wrap

      输出示例

      /usr/share/microshift/release/release-x86_64.json
      Copy to Clipboard Toggle word wrap

    • 如果 MicroShift 主机上没有安装该软件包,请运行以下命令在不安装 RPM 软件包的情况下下载并解包 RPM 软件包:

      $ rpm2cpio microshift-release-info*.noarch.rpm | cpio -idmv
      Copy to Clipboard Toggle word wrap

      输出示例

      /usr/share/microshift/release/release-x86_64.json
      Copy to Clipboard Toggle word wrap

  2. 运行以下命令,将容器镜像列表提取到 microshift-container-refs.txt 文件中:

    $ RELEASE_FILE=/usr/share/microshift/release/release-$(uname -m).json
    Copy to Clipboard Toggle word wrap
    $ jq -r '.images | .[]' ${RELEASE_FILE} > microshift-container-refs.txt
    Copy to Clipboard Toggle word wrap
注意

使用 MicroShift 容器镜像列表创建 microshift-container-refs.txt 文件后,您可以在运行镜像步骤前附加文件与其他特定于用户的镜像引用。

4.3. 配置镜像先决条件

您必须创建一个容器镜像 registry 凭证文件,该文件允许从互联网连接的镜像镜像到您的 air-gapped 镜像。按照"配置凭证"部分中提供的镜像"添加资源"链接中的说明进行操作。这些说明指导您在镜像 registry 主机上创建 ~/.pull-secret-mirror.json 文件,其中包含用于访问镜像的用户凭证。

4.3.1. mirror registry pull secret 条目示例

在本例中,以下部分使用 microshift:microshift 作为用户名和密码添加到 microshift_quay:8443 镜像 registry 的 pull secret 文件中。

pull secret 文件的 mirror registry 部分示例

"<microshift_quay:8443>": { 
1

    "auth": "<microshift_auth>", 
2

    "email": "<microshift_quay@example.com>" 
3

},
Copy to Clipboard Toggle word wrap

1
将 & lt;registry_host>:<port > 值 microshift_quay:8443 替换为镜像 registry 服务器的主机名和端口。
2
将 & lt;microshift_auth > 值替换为用户密码。
3
将 & lt;/microshift_quay@example.com > 值替换为用户电子邮件。

4.4. 下载容器镜像

找到容器列表并完成镜像先决条件后,将容器镜像下载到具有互联网访问的主机。

先决条件

  • 通过访问互联网登录到主机。
  • .pull-secret-mirror.json 文件和 microshift-containers 目录的内容在本地可用。

流程

  1. 运行以下命令,安装用于复制容器镜像的 skopeo 工具:

    $ sudo dnf install -y skopeo
    Copy to Clipboard Toggle word wrap
  2. 设置指向 pull secret 文件的环境变量:

    $ PULL_SECRET_FILE=~/.pull-secret-mirror.json
    Copy to Clipboard Toggle word wrap
  3. 设置指向容器镜像列表的环境变量:

    $ IMAGE_LIST_FILE=~/microshift-container-refs.txt
    Copy to Clipboard Toggle word wrap
  4. 设置指向用于存储下载数据的目标目录的环境变量:

    $ IMAGE_LOCAL_DIR=~/microshift-containers
    Copy to Clipboard Toggle word wrap
  5. 运行以下脚本,将容器镜像下载到 ${IMAGE_LOCAL_DIR} 目录中:

    while read -r src_img ; do
       # Remove the source registry prefix
       dst_img=$(echo "${src_img}" | cut -d '/' -f 2-)
    
       # Run the image download command
       echo "Downloading '${src_img}' to '${IMAGE_LOCAL_DIR}'"
       mkdir -p "${IMAGE_LOCAL_DIR}/${dst_img}"
       skopeo copy --all --quiet \
          --preserve-digests \
          --authfile "${PULL_SECRET_FILE}" \
          docker://"${src_img}" dir://"${IMAGE_LOCAL_DIR}/${dst_img}"
    
    done < "${IMAGE_LIST_FILE}"
    Copy to Clipboard Toggle word wrap

4.5. 将容器镜像上传到镜像 registry

要在 air-gapped 站点使用容器镜像,请按照以下流程将它们上传到镜像 registry。

先决条件

  • 通过访问 microshift-quay 登录主机。
  • .pull-secret-mirror.json 文件在本地可用。
  • microshift-containers 目录内容在本地可用。

流程

  1. 运行以下命令,安装用于复制容器镜像的 skopeo 工具:

    $ sudo dnf install -y skopeo
    Copy to Clipboard Toggle word wrap
  2. 设置指向 pull secret 文件的环境变量:

    $ IMAGE_PULL_FILE=~/.pull-secret-mirror.json
    Copy to Clipboard Toggle word wrap
  3. 设置指向本地容器镜像目录的环境变量:

    $ IMAGE_LOCAL_DIR=~/microshift-containers
    Copy to Clipboard Toggle word wrap
  4. 设置指向镜像 registry URL 的环境变量,以上传容器镜像:

    $ TARGET_REGISTRY=<registry_host>:<port> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <registry_host>:& lt;port> 替换为镜像 registry 服务器的主机名和端口。
  5. 运行以下脚本,将容器镜像上传到 ${TARGET_REGISTRY} 镜像 registry:

    pushd "${IMAGE_LOCAL_DIR}" >/dev/null
    while read -r src_manifest ; do
      local src_img
      src_img=$(dirname "${src_manifest}")
      # Add the target registry prefix and remove SHA
      local -r dst_img="${TARGET_REGISTRY}/${src_img}"
      local -r dst_img_no_tag="${TARGET_REGISTRY}/${src_img%%[@:]*}"
      # Run the image upload
      echo "Uploading '${src_img}' to '${dst_img}'"
      skopeo copy --all --quiet \
         --preserve-digests \
         --authfile "${IMAGE_PULL_FILE}" \
         dir://"${IMAGE_LOCAL_DIR}/${src_img}" docker://"${dst_img}"
    done < <(find . -type f -name manifest.json -printf '%P\n')
    popd >/dev/null
    Copy to Clipboard Toggle word wrap

4.6. 配置主机以进行镜像 registry 访问

要将 MicroShift 主机配置为使用镜像 registry,您必须通过创建一个配置文件来将红帽 registry 主机名映射到镜像(mirror)来提供 MicroShift 主机对 registry 的访问。

先决条件

  • 您的镜像主机可访问互联网。
  • 镜像主机可以访问镜像 registry。
  • 您已配置了镜像 registry 以在受限网络中使用。
  • 您下载了 pull secret,并将其修改为包含镜像存储库的身份验证。

流程

  1. 登录到您的 MicroShift 主机。
  2. 通过完成以下步骤,在访问镜像 registry 的任何主机上启用 SSL 证书信任:

    1. rootCA.pem 文件从镜像 registry (如 < registry_path>/quay-rootCA )复制到 /etc/pki/ca-trust/source/anchors 目录中的 MicroShift 主机。
    2. 运行以下命令,在系统范围的信任存储配置中启用证书:

      $ sudo update-ca-trust
      Copy to Clipboard Toggle word wrap
  3. 创建 /etc/containers/registries.conf.d/999-microshift-mirror.conf 配置文件,将红帽 registry 主机名映射到镜像 registry:

    镜像配置文件示例

    [[registry]]
        prefix = ""
        location = "<registry_host>:<port>" 
    1
    
        mirror-by-digest-only = true
        insecure = false
    
    [[registry]]
        prefix = ""
        location = "quay.io"
        mirror-by-digest-only = true
    [[registry.mirror]]
        location = "<registry_host>:<port>"
        insecure = false
    
    [[registry]]
        prefix = ""
        location = "registry.redhat.io"
        mirror-by-digest-only = true
    [[registry.mirror]]
        location = "<registry_host>:<port>"
        insecure = false
    
    [[registry]]
        prefix = ""
        location = "registry.access.redhat.com"
        mirror-by-digest-only = true
    [[registry.mirror]]
        location = "<registry_host>:<port>"
        insecure = false
    Copy to Clipboard Toggle word wrap

    1
    <registry_host>:&lt;port> 替换为镜像 registry 服务器的主机名和端口,例如 < microshift-quay:8443>
  4. 运行以下命令来启用 MicroShift 服务:

    $ sudo systemctl enable microshift
    Copy to Clipboard Toggle word wrap
  5. 运行以下命令来重启主机:

    $ sudo reboot
    Copy to Clipboard Toggle word wrap

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat