第 4 章 嵌入红帽构建的 MicroShift 应用程序教程
以下教程提供了如何在 RHEL for Edge 镜像中嵌入应用程序以便在各种环境中在 MicroShift 集群中使用的详细示例。
4.1. 嵌入应用程序 RPM 指南 复制链接链接已复制到粘贴板!
以下教程回顾 MicroShift 安装步骤,并添加用于嵌入应用程序的工作流的描述。如果您已经熟悉 rpm-ostree
系统,如 Red Hat Enterprise Linux for Edge (RHEL for Edge)和 MicroShift,您可以直接进入相关的操作。
4.1.1. 安装工作流查看 复制链接链接已复制到粘贴板!
嵌入的应用程序需要类似的工作流将 MicroShift 嵌入到 RHEL for Edge 镜像中。
- 下图显示了系统工件(如 RPM、容器和文件)如何添加到蓝图中,并由镜像 composer 创建 ostree 提交。
- 然后,ostree 提交可以遵循 ISO 路径或边缘设备的存储库路径。
- ISO 路径可用于断开连接的环境,而存储库路径通常用于网络通常连接。
嵌入 MicroShift 工作流
查看这些步骤可帮助您了解嵌入应用程序所需的步骤:
- 要在 RHEL for Edge 上嵌入 MicroShift,您需要将 MicroShift 存储库添加到 Image Builder 中。
- 您创建了声明您所需的所有 RPM、容器镜像、文件和自定义的蓝图,包括添加 MicroShift。
-
您已将蓝图添加到镜像构建器,并使用 Image Builder CLI 工具(
composer-cli
)运行构建。此步骤创建rpm-ostree
提交,用于创建容器镜像。此镜像包含 RHEL for Edge。 -
将安装程序蓝图添加到镜像构建器中,以创建
rpm-ostree
镜像(ISO)来从其引导。此构建包含 RHEL for Edge 和 MicroShift。 - 下载了使用 MicroShift 嵌入的 ISO,准备好使用、置备它,然后将其安装到边缘设备中。
4.1.2. 嵌入应用程序 RPM 工作流 复制链接链接已复制到粘贴板!
设置满足 Image Builder 要求的构建主机后,您可以将应用程序以清单目录的形式添加到镜像。这些步骤后,将应用程序或工作负载嵌入到新 ISO 中最简单的方法是创建自己的包含清单的 RPM。您的应用程序 RPM 包含描述部署的所有配置文件。
以下"嵌入的应用程序工作流"镜像演示了如何将 Kubernetes 应用程序清单和 RPM 规格文件合并到单个应用程序 RPM 构建中。此构建成为工作流中包含的 RPM 工件,用于将 MicroShift 嵌入到 ostree 提交中。
嵌入应用程序工作流
以下流程使用 rpmbuild
工具创建规格文件和本地存储库。规范文件定义了如何构建软件包,将应用程序清单移到 MicroShift 的 RPM 软件包中的正确位置,以便获取它们。然后,该 RPM 软件包被嵌入到 ISO 中。
4.1.3. 准备进行应用程序 RPM 复制链接链接已复制到粘贴板!
要构建自己的 RPM,请选择您选择的工具,如 rpmbuild
工具,并在主目录中初始化 RPM 构建树。以下是示例步骤。只要您的 RPM 可以被镜像构建器访问,就可以使用您喜欢构建应用程序 RPM 的方法。
先决条件
- 您已设置了满足 Image Builder 系统要求的 Red Hat Enterprise Linux for Edge (RHEL for Edge) 9.2 构建主机。
- 有对主机的 root 访问权限。
流程
运行以下命令,安装
rpmbuild
工具并为其创建 yum 存储库:sudo dnf install rpmdevtools rpmlint yum-utils createrepo
$ sudo dnf install rpmdevtools rpmlint yum-utils createrepo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,创建构建 RPM 软件包所需的文件树:
rpmdev-setuptree
$ rpmdev-setuptree
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令列出确认创建的目录:
ls ~/rpmbuild/
$ ls ~/rpmbuild/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
BUILD RPMS SOURCES SPECS SRPMS
BUILD RPMS SOURCES SPECS SRPMS
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.4. 为应用程序清单构建 RPM 软件包 复制链接链接已复制到粘贴板!
要构建自己的 RPM,您必须创建一个 spec 文件,将应用程序清单添加到 RPM 软件包中。以下是示例步骤。只要应用程序 RPM 和其他镜像构建元素可供镜像构建器访问,您可以使用您喜欢的方法。
先决条件
- 您已设置了满足 Image Builder 系统要求的 Red Hat Enterprise Linux for Edge (RHEL for Edge) 9.2 构建主机。
- 有对主机的 root 访问权限。
- 构建 RPM 软件包所需的文件树已创建。
流程
在
~/rpmbuild/SPECS
目录中,使用以下模板创建一个文件,如 <application_workload_manifests.spec
> :spec 文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
%install
部分在 RPM 软件包/usr/lib/microshift/manifests/
中创建目标目录,并从源主目录~/manifests
复制清单。
重要所有必需的 YAML 文件都必须位于源主目录
~/manifests
中,如果您使用的是 kustomize,则包括kustomize.yaml
文件。运行以下命令,在
~/rpmbuild/RPMS
目录中构建 RPM 软件包:rpmbuild -bb ~/rpmbuild/SPECS/<application_workload_manifests.spec>
$ rpmbuild -bb ~/rpmbuild/SPECS/<application_workload_manifests.spec>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.5. 在蓝图中添加应用程序 RPM 复制链接链接已复制到粘贴板!
要将应用程序 RPM 添加到蓝图中,您必须创建一个本地仓库,供 Image Builder 用于创建 ISO。使用这个流程,您的工作负载所需的容器镜像可以通过网络拉取。
先决条件
- 有对主机的 root 访问权限。
-
工作负载或应用程序 RPM 存在于
~/rpmbuild/RPMS
目录中。
流程
运行以下命令来创建本地 RPM 存储库:
createrepo ~/rpmbuild/RPMS/
$ createrepo ~/rpmbuild/RPMS/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为 Image Builder 授予对 RPM 存储库的访问权限:
sudo chmod a+rx ~
$ sudo chmod a+rx ~
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您必须确保 Image Builder 具有访问镜像构建所需的所有文件所需的权限,或者构建无法继续。
使用以下模板创建蓝图文件
repo-local-rpmbuild.toml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定创建您选择的位置的路径部分。在后续命令中使用此路径来设置存储库并复制 RPM。
运行以下命令,将存储库添加为镜像构建器的源:
sudo composer-cli sources add repo-local-rpmbuild.toml
$ sudo composer-cli sources add repo-local-rpmbuild.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过添加以下几行,将 RPM 添加到蓝图中:
… [[packages]] name = "<application_workload_manifests>" version = "*" …
… [[packages]] name = "<application_workload_manifests>"
1 version = "*" …
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在此处添加工作负载的名称。
运行以下命令,将更新的蓝图推送到镜像构建器:
sudo composer-cli blueprints push repo-local-rpmbuild.toml
$ sudo composer-cli blueprints push repo-local-rpmbuild.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此时,您可以运行 Image Builder 来创建 ISO,或嵌入容器镜像供离线使用。
要创建 ISO,请运行以下命令启动镜像构建器:
sudo composer-cli compose start-ostree repo-local-rpmbuild edge-commit
$ sudo composer-cli compose start-ostree repo-local-rpmbuild edge-commit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在这种情况下,容器镜像在启动时由边缘设备通过网络拉取。