第 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。 -
将安装程序蓝图添加到 Image Builder 中,以创建要从中引导的
rpm-ostree
镜像(ISO)。此构建同时包含 RHEL for Edge 和 MicroShift。 - 您下载了带有 MicroShift 嵌入的 ISO,准备好使用它,然后将其安装到边缘设备中。
4.1.2. 嵌入应用程序 RPM 工作流
设置满足 Image Builder 要求的构建主机后,您可以使用清单目录的形式将应用程序添加到镜像中。这些步骤后,将应用程序或工作负载嵌入到新 ISO 中的最简单方法是创建自己的 RPM 来包括清单。您的应用程序 RPM 包含描述部署的所有配置文件。
以下"嵌入的应用程序工作流"镜像演示了如何在单个应用程序 RPM 构建中组合 Kubernetes 应用程序清单和 RPM 规格文件。此构建成为在 ostree 提交中嵌入 MicroShift 的工作流中包含的 RPM 工件。
嵌入应用程序工作流
以下流程使用 rpmbuild
工具创建规格文件和本地存储库。规范文件定义了如何构建软件包,将应用程序清单移到 MicroShift 的 RPM 软件包中的正确位置,以提取它们。然后,该 RPM 软件包被嵌入到 ISO 中。
4.1.3. 准备制作应用程序 RPM
要构建自己的 RPM,请选择您选择的工具,如 rpmbuild
工具,并在主目录中初始化 RPM 构建树。以下是一个示例过程。只要您的 RPM 可以被镜像构建器访问,就可以使用您喜欢的方法构建应用程序 RPM。
先决条件
- 您已设置了满足镜像构建器系统要求的 Red Hat Enterprise Linux for Edge (RHEL for Edge) 9.4 构建主机。
- 有到主机的 root 访问权限。
流程
运行以下命令安装
rpmbuild
工具并为它创建 yum 存储库:$ sudo dnf install rpmdevtools rpmlint yum-utils createrepo
运行以下命令,创建构建 RPM 软件包所需的文件树:
$ rpmdev-setuptree
验证
运行以下命令列出以确认创建的目录:
$ ls ~/rpmbuild/
输出示例
BUILD RPMS SOURCES SPECS SRPMS
4.1.4. 为应用程序清单构建 RPM 软件包
要构建自己的 RPM,您必须创建一个 spec 文件,该文件将应用程序清单添加到 RPM 软件包中。以下是一个示例过程。只要镜像构建器可以访问应用程序 RPM 和其他元素,就可以使用您喜欢的方法。
先决条件
- 您已设置了满足镜像构建器系统要求的 Red Hat Enterprise Linux for Edge (RHEL for Edge) 9.4 构建主机。
- 有到主机的 root 访问权限。
- 创建构建 RPM 软件包所需的文件树。
流程
在
~/rpmbuild/SPECS
目录中,使用以下模板创建一个文件,如 <application_workload_manifests.spec
> :spec 文件示例
Name: <application_workload_manifests> Version: 0.0.1 Release: 1%{?dist} Summary: Adds workload manifests to microshift BuildArch: noarch License: GPL Source0: %{name}-%{version}.tar.gz #Requires: microshift %description Adds workload manifests to microshift %prep %autosetup %install 1 rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/%{_prefix}/lib/microshift/manifests cp -pr ~/manifests $RPM_BUILD_ROOT/%{_prefix}/lib/microshift/ %clean rm -rf $RPM_BUILD_ROOT %files %{_prefix}/lib/microshift/manifests/** %changelog * <DDD MM DD YYYY username@domain - V major.minor.patch> - <your_change_log_comment>
- 1
%install
部分在 RPM 软件包/usr/lib/microshift/manifests/
中创建目标目录,并从源主目录~/manifests
复制清单。
重要所有所需的 YAML 文件都必须位于源主目录
~/manifests
中,如果使用kustomize.yaml
文件,包括 kustomize.yaml 文件。运行以下命令,在
~/rpmbuild/RPMS
目录中构建 RPM 软件包:$ rpmbuild -bb ~/rpmbuild/SPECS/<application_workload_manifests.spec>
4.1.5. 在蓝图中添加应用程序 RPM
要将应用程序 RPM 添加到蓝图中,您必须创建一个本地仓库,供镜像构建器用于创建 ISO。在这个版本中,您的工作负载所需的容器镜像可以通过网络拉取。
先决条件
- 有到主机的 root 访问权限。
-
~/rpmbuild/RPMS
目录中存在工作负载或应用程序 RPM。
流程
运行以下命令来创建本地 RPM 存储库:
$ createrepo ~/rpmbuild/RPMS/
运行以下命令,授予镜像构建器对 RPM 存储库的访问权限:
$ sudo chmod a+rx ~
注意您必须确保镜像构建器具有访问镜像构建所需的所有文件的所有必要权限,或者无法继续构建。
使用以下模板创建蓝图文件
repo-local-rpmbuild.toml
:id = "local-rpm-build" name = "RPMs build locally" type = "yum-baseurl" url = "file://<path>/rpmbuild/RPMS" 1 check_gpg = false check_ssl = false system = false
- 1
- 指定创建您选择的位置的路径的一部分。在后续命令中使用此路径来设置存储库并复制 RPM。
运行以下命令,将存储库添加为镜像构建器的源:
$ sudo composer-cli sources add repo-local-rpmbuild.toml
通过添加以下行来在蓝图中添加 RPM:
… [[packages]] name = "<application_workload_manifests>" 1 version = "*" …
- 1
- 在此处添加工作负载的名称。
运行以下命令,将更新的蓝图推送到镜像构建器:
$ sudo composer-cli blueprints push repo-local-rpmbuild.toml
此时,您可以运行镜像构建器来创建 ISO,或嵌入容器镜像以离线使用。
要创建 ISO,请运行以下命令启动镜像构建器:
$ sudo composer-cli compose start-ostree repo-local-rpmbuild edge-commit
在这种情况下,容器镜像会在启动时由边缘设备通过网络拉取。