第 3 章 嵌入在 RHEL for Edge 镜像中供离线使用
在 rpm-ostree 提交中嵌入 MicroShift 容器意味着您可以在 air-gapped、断开连接或离线环境中运行集群。您可以将红帽构建的 MicroShift 容器嵌入到 Red Hat Enterprise Linux for Edge (RHEL for Edge)镜像中,以便容器引擎不需要从容器 registry 通过网络拉取镜像。工作负载可以在不网络连接的情况下立即启动。
3.1. 为离线部署嵌入 MicroShift 容器 复制链接链接已复制到粘贴板!
您可以使用镜像构建器使用嵌入式 MicroShift 容器镜像创建 RHEL for Edge 镜像。要嵌入容器镜像,您必须将镜像引用添加到镜像构建器蓝图文件中。
先决条件
- 您有访问构建主机的 root-user 访问权限。
- 您的构建主机满足镜像构建器系统要求。
-
已安装并设置镜像构建器和
composer-cli工具。 - 您创建了 RHEL for Edge 镜像蓝图。
- 安装了 jq。
流程
-
获取您要部署的 MicroShift 版本使用的容器镜像引用列表。您可以按照以下步骤 2 来安装
microshift-release-infoRPM 软件包,或按照以下步骤下载并解包 RPM。 安装
microshift-release-infoRPM 软件包:运行以下命令安装
microshift-release-infoRPM 软件包:sudo dnf install -y microshift-release-info-<release_version>
$ sudo dnf install -y microshift-release-info-<release_version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用整个版本号(如
4.17.1)将 <release_version> 替换为您要部署的发行版本的数字值。运行以下命令,列出
/usr/share/microshift/release目录的内容,以验证发行信息文件是否存在:sudo ls /usr/share/microshift/release
$ sudo ls /usr/share/microshift/releaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
release-x86_64.json release-aarch64.json
release-x86_64.json release-aarch64.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果安装了
microshift-release-infoRPM,请继续执行第 4 步。
如果您没有完成第 2 步,请下载并解包
microshift-release-infoRPM,而不安装它:运行以下命令来下载 RPM 软件包:
sudo dnf download microshift-release-info-<release_version>
$ sudo dnf download microshift-release-info-<release_version>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 使用整个版本号(如
4.17.1)将 <release_version> 替换为您要部署的发行版本的数字值。
RPM 输出示例
microshift-release-info-4.17.1.-202511101230.p0.g7dc6a00.assembly.4.17.1.el9.noarch.rpm
microshift-release-info-4.17.1.-202511101230.p0.g7dc6a00.assembly.4.17.1.el9.noarch.rpmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令解包 RPM 软件包而不安装它:
rpm2cpio <my_microshift_release_info> | cpio -idmv
$ rpm2cpio <my_microshift_release_info> | cpio -idmv1 ./usr/share/microshift/release/release-aarch64.json ./usr/share/microshift/release/release-x86_64.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<my_microshift_release_info> 替换为上一步中的 RPM 软件包的名称。
运行以下命令,定义包含容器引用信息的 JSON 文件的位置:
RELEASE_FILE=</path/to/your/release-$(uname -m).json>
$ RELEASE_FILE=</path/to/your/release-$(uname -m).json>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
</path/to/your/release-$(uname -m).json> 替换为 JSON 文件的完整路径。请务必使用您的架构所需的文件。
运行以下命令,定义 TOML 文件的位置,其中包含构建镜像的说明:
BLUEPRINT_FILE=</path/to/your/blueprint.toml>
$ BLUEPRINT_FILE=</path/to/your/blueprint.toml>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
</path/to/your/blueprint.toml> 替换为 TOML 文件的完整路径。
运行以下命令,生成并嵌入蓝图 TOML 文件中的容器镜像引用:
jq -r '.images | .[] | ("[[containers]]\nsource = \"" + . + "\"\n")' "${RELEASE_FILE}" >> "${BLUEPRINT_FILE}"$ jq -r '.images | .[] | ("[[containers]]\nsource = \"" + . + "\"\n")' "${RELEASE_FILE}" >> "${BLUEPRINT_FILE}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示容器引用的 TOML 片段示例
[[containers]] source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:82cfef91557f9a70cff5a90accba45841a37524e9b93f98a97b20f6b2b69e5db" [[containers]] source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:82cfef91557f9a70cff5a90accba45841a37524e9b93f98a97b20f6b2b69e5db"
[[containers]] source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:82cfef91557f9a70cff5a90accba45841a37524e9b93f98a97b20f6b2b69e5db" [[containers]] source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:82cfef91557f9a70cff5a90accba45841a37524e9b93f98a97b20f6b2b69e5db"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用以下示例将其添加到镜像构建器蓝图文件中来手动嵌入任何容器镜像:
将容器镜像手动嵌入到蓝图中的示例
[[containers]] source = "<my_image_pullspec_with_tag_or_digest>"
[[containers]] source = "<my_image_pullspec_with_tag_or_digest>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<my_image_pullspec_with_tag_or_digest> 替换为您要部署的 MicroShift 版本所使用的容器镜像的确切引用。