4.3. 为离线部署嵌入 MicroShift 容器
您可以使用 Image Builder 使用嵌入式 MicroShift 容器镜像创建 rpm-ostree
系统镜像。要嵌入容器镜像,您必须对镜像构建器蓝图添加镜像引用。
先决条件
- 有对构建主机的 root 用户访问权限。
- 您的构建主机满足 Image Builder 系统要求。
-
已安装并设置 Image Builder 和
composer-cli
工具。 - 您已创建了 RHEL for Edge 镜像蓝图。
- 已安装 jq。
流程
-
获取您要部署的 MicroShift 版本使用的容器镜像引用列表。您可以按照以下步骤 2 安装
microshift-release-info
RPM 软件包,或者按照以下步骤 3 下载并解包 RPM。 安装
microshift-release-info
RPM 软件包:运行以下命令安装
microshift-release-info
RPM 软件包:$ sudo dnf install -y microshift-release-info-<release_version>
使用整个版本号(如
4.14.0
)替换 <release_version
> 替换为您要部署的发行版本的数字值。运行以下命令,列出
/usr/share/microshift/release
目录的内容,以验证发行信息文件是否存在:$ ls /usr/share/microshift/release
输出示例
release-x86_64.json release-aarch64.json
如果安装了
microshift-release-info
RPM,您可以继续第 4 步。
如果您没有完成第 2 步,请下载并解包
microshift-release-info
RPM,而不安装它:运行以下命令来下载 RPM 软件包:
$ sudo dnf download microshift-release-info-<release_version>
使用整个版本号(如
4.14.0
)替换 <release_version
> 替换为您要部署的发行版本的数字值。rpm 示例
microshift-release-info-4.14.0.*.el9.noarch.rpm 1
- 1
*
代表日期和提交 ID。您的输出应该同时包含-202311101230.p0.g7dc6a00.assembly.4.14.0
。
运行以下命令,在不安装 RPM 软件包的情况下解包 RPM 软件包:
$ rpm2cpio <my_microshift_release_info> | cpio -idmv 1 ./usr/share/microshift/release/release-aarch64.json ./usr/share/microshift/release/release-x86_64.json
- 1
- 将
<my_microshift_release_info
> 替换为上一步中的 RPM 软件包的名称。
运行以下命令,定义包含容器引用信息的 JSON 文件的位置:
$ RELEASE_FILE=</path/to/your/release-$(uname -m).json>
将
</path/to/your/release-$(uname -m).json
> 替换为 JSON 文件的完整路径。确保使用您的架构所需的文件。运行以下命令,定义 TOML 文件的位置,其中包含构建镜像的说明:
$ BLUEPRINT_FILE=</path/to/your/blueprint.toml>
将
</path/to/your/blueprint.toml
> 替换为 JSON 文件的完整路径。运行以下命令,然后在蓝图 TOML 文件中嵌入容器镜像引用:
$ jq -r '.images | .[] | ("[[containers]]\nsource = \"" + . + "\"\n")' "${RELEASE_FILE}" >> "${BLUEPRINT_FILE}"
生成的 <
;my_blueprint.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 = "<my_image_pullspec_with_tag_or_digest>"
将
<my_image_pullspec_with_tag_or_digest
> 替换为您要部署的 MicroShift 版本使用的容器镜像的确切引用。