第 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 工作流

468 RHbM install workflow 1023 1

查看这些步骤可帮助您了解嵌入应用程序所需的步骤:

  1. 要在 RHEL for Edge 上嵌入 MicroShift,您需要将 MicroShift 存储库添加到 Image Builder 中。
  2. 您创建了声明您所需的所有 RPM、容器镜像、文件和自定义的蓝图,包括添加 MicroShift。
  3. 您已将蓝图添加到镜像构建器,并使用 Image Builder CLI 工具(composer-cli)运行构建。此步骤创建 rpm-ostree 提交,用于创建容器镜像。此镜像包含 RHEL for Edge。
  4. 将安装程序蓝图添加到镜像构建器中,以创建 rpm-ostree 镜像(ISO)来从其引导。此构建包含 RHEL for Edge 和 MicroShift。
  5. 下载了使用 MicroShift 嵌入的 ISO,准备好使用、置备它,然后将其安装到边缘设备中。

4.1.2. 嵌入应用程序 RPM 工作流

设置满足 Image Builder 要求的构建主机后,您可以将应用程序以清单目录的形式添加到镜像。这些步骤后,将应用程序或工作负载嵌入到新 ISO 中最简单的方法是创建自己的包含清单的 RPM。您的应用程序 RPM 包含描述部署的所有配置文件。

以下"嵌入的应用程序工作流"镜像演示了如何将 Kubernetes 应用程序清单和 RPM 规格文件合并到单个应用程序 RPM 构建中。此构建成为工作流中包含的 RPM 工件,用于将 MicroShift 嵌入到 ostree 提交中。

嵌入应用程序工作流

468 RHbM install workflow 1023 2

以下流程使用 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.4 构建主机。
  • 有对主机的 root 访问权限。

流程

  1. 运行以下命令,安装 rpmbuild 工具并为其创建 yum 存储库:

    $ sudo dnf install rpmdevtools rpmlint yum-utils createrepo
  2. 运行以下命令,创建构建 RPM 软件包所需的文件树:

    $ rpmdev-setuptree

验证

  • 运行以下命令列出确认创建的目录:

    $ ls ~/rpmbuild/

    输出示例

    BUILD RPMS SOURCES SPECS SRPMS

4.1.4. 为应用程序清单构建 RPM 软件包

要构建自己的 RPM,您必须创建一个 spec 文件,将应用程序清单添加到 RPM 软件包中。以下是示例步骤。只要应用程序 RPM 和其他镜像构建元素可供镜像构建器访问,您可以使用您喜欢的方法。

先决条件

  • 您已设置了满足 Image Builder 系统要求的 Red Hat Enterprise Linux for Edge (RHEL for Edge) 9.4 构建主机。
  • 有对主机的 root 访问权限。
  • 构建 RPM 软件包所需的文件树已创建。

流程

  1. ~/rpmbuild/SPECS 目录中,使用以下模板创建一个文件,如 & lt;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,则包括 kustomize.yaml 文件。

  2. 运行以下命令,在 ~/rpmbuild/RPMS 目录中构建 RPM 软件包:

    $ rpmbuild -bb ~/rpmbuild/SPECS/<application_workload_manifests.spec>

4.1.5. 在蓝图中添加应用程序 RPM

要将应用程序 RPM 添加到蓝图中,您必须创建一个本地仓库,供 Image Builder 用于创建 ISO。使用这个流程,您的工作负载所需的容器镜像可以通过网络拉取。

先决条件

  • 有对主机的 root 访问权限。
  • 工作负载或应用程序 RPM 存在于 ~/rpmbuild/RPMS 目录中。

流程

  1. 运行以下命令来创建本地 RPM 存储库:

    $ createrepo ~/rpmbuild/RPMS/
  2. 运行以下命令,为 Image Builder 授予对 RPM 存储库的访问权限:

    $ sudo chmod a+rx ~
    注意

    您必须确保 Image Builder 具有访问镜像构建所需的所有文件所需的权限,或者构建无法继续。

  3. 使用以下模板创建蓝图文件 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。
  4. 运行以下命令,将存储库添加为镜像构建器的源:

    $ sudo composer-cli sources add repo-local-rpmbuild.toml
  5. 通过添加以下几行,将 RPM 添加到蓝图中:

    …
    [[packages]]
    name = "<application_workload_manifests>" 1
    version = "*"
    …
    1
    在此处添加工作负载的名称。
  6. 运行以下命令,将更新的蓝图推送到镜像构建器:

    $ sudo composer-cli blueprints push repo-local-rpmbuild.toml
  7. 此时,您可以运行 Image Builder 来创建 ISO,或嵌入容器镜像供离线使用。

    1. 要创建 ISO,请运行以下命令启动镜像构建器:

      $ sudo composer-cli compose start-ostree repo-local-rpmbuild edge-commit

在这种情况下,容器镜像在启动时由边缘设备通过网络拉取。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.