5.5. 构建并使用 rpm-ostree 镜像进行离线部署
您可以使用 Image Builder 使用嵌入式 MicroShift 容器镜像创建 rpm-ostree
系统镜像。要嵌入容器镜像,您必须对镜像构建器蓝图添加镜像引用。您可以根据需要创建您的用例的提交和 ISO。
将此处列出的先决条件添加到遵循的步骤中包含的先决条件。
5.5.1. 离线部署的额外先决条件
- 您已创建了和更新 RHEL for Edge 镜像蓝图,以便离线使用。以下流程使用通过容器镜像创建的蓝图示例。您必须使用您在 "Embedding MicroShift 容器中创建的更新蓝图进行离线部署"。
-
您已更新了
/etc/osbuild-worker/osbuild-worker.toml
配置文件以离线使用。
将以下流程中的 minimal-microshift.toml
替换为您更新用于离线使用的 TOML 名称,<my_blueprint_name>。
5.5.2. 将 MicroShift 服务添加到蓝图中
将 MicroShift RPM 软件包添加到镜像构建器蓝图中,可以使用嵌入 MicroShift 的 RHEL for Edge 镜像构建。
- 从第 1 步开始,创建自己的最小蓝图文件,这会导致更快地安装 MicroShift。
从第 2 步开始,使用生成的蓝图进行安装,其中包括所有 RPM 软件包和容器镜像。这是一个较长的安装过程,但启动更快,因为容器引用在本地访问。
重要- 将以下流程中的 < microshift_blueprint.toml > 替换为您要使用的 TOML 文件的名称。
- 将以下流程中的 & lt;microshift_blueprint > 替换为您要用于蓝图的名称。
流程
使用以下示例创建自己的蓝图文件:
自定义镜像构建器蓝图示例
cat > <microshift_blueprint.toml> <<EOF 1 name = "<microshift_blueprint>" 2 description = "" version = "0.0.1" modules = [] groups = [] [[packages]] name = "microshift" version = "*" [customizations.services] enabled = ["microshift"] EOF
注意命令中的通配符
*
使用最新的 MicroShift RPM。如果您需要特定版本,请替换您想要版本的通配符。例如,插入4.15.0
以下载 MicroShift 4.15.0 RPM。可选。使用特定于您的平台架构的
/usr/share/microshift/blueprint
目录中安装的蓝图。有关 blueprint 部分的说明,请参见以下示例片断:生成的镜像构建器蓝图示例片断
name = "microshift_blueprint" description = "MicroShift 4.15.1 on x86_64 platform" version = "0.0.1" modules = [] groups = [] [[packages]] 1 name = "microshift" version = "4.15.1" ... ... [customizations.services] 2 enabled = ["microshift"] [customizations.firewall] ports = ["22:tcp", "80:tcp", "443:tcp", "5353:udp", "6443:tcp", "30000-32767:tcp", "30000-32767:udp"] ... ... [[containers]] 3 source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:f41e79c17e8b41f1b0a5a32c3e2dd7cd15b8274554d3f1ba12b2598a347475f4" [[containers]] source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:dbc65f1fba7d92b36cf7514cd130fe83a9bd211005ddb23a8dc479e0eea645fd" ... … EOF
运行以下命令,将蓝图添加到镜像构建器中:
$ sudo composer-cli blueprints push <microshift_blueprint.toml> 1
- 1
- 将 <microshift_blueprint.toml > 替换为 TOML 文件的名称。
验证
运行以下命令,验证 Image Builder 配置只列出 MicroShift 软件包:
$ sudo composer-cli blueprints depsolve <microshift_blueprint> | grep microshift 1
- 1
- 将 <microshift_blueprint > 替换为蓝图的名称。
输出示例
blueprint: microshift_blueprint v0.0.1 microshift-greenboot-4.15.1-202305250827.p0.g4105d3b.assembly.4.15.1.el9.noarch microshift-networking-4.15.1-202305250827.p0.g4105d3b.assembly.4.15.1.el9.x86_64 microshift-release-info-4.15.1-202305250827.p0.g4105d3b.assembly.4.15.1.el9.noarch microshift-4.15.1-202305250827.p0.g4105d3b.assembly.4.15.1.el9.x86_64 microshift-selinux-4.15.1-202305250827.p0.g4105d3b.assembly.4.15.1.el9.noarch
可选:运行以下命令来验证 Image Builder 配置列出了要安装的所有组件:
$ sudo composer-cli blueprints depsolve <microshift_blueprint> 1
- 1
- 将 <microshift_blueprint > 替换为蓝图的名称。
5.5.3. 创建 RHEL for Edge 镜像
使用以下步骤创建 ISO。RHEL for Edge Installer 镜像从正在运行的容器中拉取提交,并创建一个带有配置为使用嵌入式 rpm-ostree
提交的 Kickstart 文件的可安装的引导 ISO。
先决条件
- 您的构建主机满足 Image Builder 系统要求。
-
已安装并设置 Image Builder 和
composer-cli
工具。 - 有对构建主机的 root 用户访问权限。
-
已安装
podman
工具。
流程
运行以下命令启动
ostree
容器镜像构建:$ BUILDID=$(sudo composer-cli compose start-ostree --ref "rhel/{op-system-version-major}/$(uname -m)/edge" <microshift_blueprint> edge-container | awk '{print $2}') 1
- 1
- 将 <microshift_blueprint > 替换为蓝图的名称。
此命令还会返回要监控的构建的标识(ID)。
您可以运行以下命令来定期检查构建的状态:
$ sudo composer-cli compose status
正在运行的构建的输出示例
ID Status Time Blueprint Version Type Size cc3377ec-4643-4483-b0e7-6b0ad0ae6332 RUNNING Wed Jun 7 12:26:23 2023 microshift_blueprint 0.0.1 edge-container
已完成构建的输出示例
ID Status Time Blueprint Version Type Size cc3377ec-4643-4483-b0e7-6b0ad0ae6332 FINISHED Wed Jun 7 12:32:37 2023 microshift_blueprint 0.0.1 edge-container
注意如果您熟悉如何启动和停止它,您可以使用
watch
命令监控构建。运行以下命令,使用 ID 下载容器镜像,并获取可供使用的镜像:
$ sudo composer-cli compose image ${BUILDID}
运行以下命令,将下载的容器镜像的所有权改为当前用户:
$ sudo chown $(whoami). ${BUILDID}-container.tar
运行以下命令,在镜像中为当前用户添加读取权限:
$ sudo chmod a+r ${BUILDID}-container.tar
通过完成以下步骤,在端口 8085 上引导服务器,供 ISO 构建使用
ostree
容器镜像:运行以下命令来获取
IMAGEID
变量结果:$ IMAGEID=$(cat < "./${BUILDID}-container.tar" | sudo podman load | grep -o -P '(?<=sha256[@:])[a-z0-9]*')
运行以下命令,使用
IMAGEID
变量结果来执行 podman 命令步骤:$ sudo podman run -d --name=minimal-microshift-server -p 8085:8080 ${IMAGEID}
此命令还会返回在
IMAGEID
变量中保存的容器 ID,以进行监控。
运行以下命令来生成安装程序蓝图文件:
cat > microshift-installer.toml <<EOF name = "microshift-installer" description = "" version = "0.0.0" modules = [] groups = [] packages = [] EOF