嵌入 RHEL for Edge 镜像


Red Hat build of MicroShift 4.19

嵌入 RHEL for Edge 镜像

Red Hat OpenShift Documentation Team

摘要

本文档提供有关从具有受支持 RHEL 版本的机器上安装 RPM 软件包的信息。

使用本指南构建包含 MicroShift 的 RHEL 镜像。

1.1. 准备镜像构建

使用镜像构建器工具制作为边缘部署优化的自定义 Red Hat Enterprise Linux for Edge (RHEL for Edge)镜像。您可以在 RHEL for Edge 虚拟机上使用应用程序运行 MicroShift 集群,首先进行开发和测试,然后在边缘生产环境中使用整个解决方案。

使用以下 RHEL 文档了解 RHEL for Edge 的完整详情:

1.2. 为镜像构建启用扩展支持存储库

如果您有 MicroShift 或 Red Hat Enterprise Linux (RHEL)的扩展支持(EUS)版本,则必须启用 RHEL EUS 软件仓库才能使用镜像构建器。如果您没有 EUS 版本,您可以跳过这些步骤。

先决条件

警告

在受支持的 Red Hat Device Edge 配置中保留组件版本可能需要同时更新 MicroShift 和 RHEL。确保您的 RHEL 版本与您要升级到的 MicroShift 版本兼容,特别是在两个次版本间更新 MicroShift 时。否则,您可以创建不支持的配置、破坏集群或两者。如需更多信息,请参阅 Red Hat Device Edge 发行版本兼容性列表

流程

  1. 运行以下命令来创建 /etc/osbuild-composer/repositories 目录:

    $ sudo mkdir -p /etc/osbuild-composer/repositories
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令,将 /usr/share/osbuild-composer/repositories/rhel-9.6.json 文件复制到 /etc/osbuild-composer/repositories 目录中:

    $ sudo cp /usr/share/osbuild-composer/repositories/rhel-9.6.json /etc/osbuild-composer/repositories/rhel-9.6.json
    Copy to Clipboard Toggle word wrap
  3. 使用以下值修改 /etc/osbuild-composer/repositories/rhel-9.6.json 文件来更新 baseos 源:

    # ...
    "baseurl": "https://cdn.redhat.com/content/eus/rhel9/9.6//baseos/os", 
    1
    
    # ...
    Copy to Clipboard Toggle word wrap
    1
    如果与本例中的值不同,您可以使用的主 RHEL 版本替换 9,并将 9.6 替换为 < major.minor > 版本。请确定您选择的 RHEL 版本与您使用的 MicroShift 版本兼容。
  4. 可选:运行以下命令来应用 baseos 更新:

    $ sudo sed -i "s,dist/rhel9/9.6/$(uname -m)/baseos/,eus/rhel9/9.6/$(uname -m)/baseos/,g" \
    /etc/osbuild-composer/repositories/rhel-9.6.json 
    1
    Copy to Clipboard Toggle word wrap
    1
    如果与本例中的值不同,您可以使用的主 RHEL 版本替换 9,并将 9.6 替换为 < major.minor > 版本。请确定您选择的 RHEL 版本与您使用的 MicroShift 版本兼容。
  5. 使用以下值修改 /etc/osbuild-composer/repositories/rhel-<major.minor>.json 文件来更新 appstream 源:

    # ...
    "baseurl": "https://cdn.redhat.com/content/eus/rhel9/9.6//appstream/os", 
    1
    
    # ...
    Copy to Clipboard Toggle word wrap
    1
    如果与本例中的值不同,您可以使用的主 RHEL 版本替换 9,并将 9.6 替换为 < major.minor > 版本。请确定您选择的 RHEL 版本与您使用的 MicroShift 版本兼容。
  6. 可选。运行以下命令来应用 appstream 更新:

    $ sudo sed -i "s,dist/rhel9/9.6/$(uname -m)/appstream/,eus/rhel9/9.6/$(uname -m)/appstream/,g" \
    /etc/osbuild-composer/repositories/rhel-9.6.json 
    1
    Copy to Clipboard Toggle word wrap
    1
    如果与本例中的值不同,您可以使用的主 RHEL 版本替换 9,并将 9.6 替换为 < major.minor > 版本。请确定您选择的 RHEL 版本与您使用的 MicroShift 版本兼容。

验证

您可以使用 composer-cli 工具显示源信息来验证存储库。

  1. 运行以下命令验证 baseos 源:

    $ sudo composer-cli sources info baseos | grep 'url ='
    Copy to Clipboard Toggle word wrap

    输出示例

    url = "https://cdn.redhat.com/content/eus/rhel9/9.6/x86_64/baseos/os"
    Copy to Clipboard Toggle word wrap

  2. 运行以下命令验证 appstream 源:

    $ sudo composer-cli sources info appstream | grep 'url ='
    Copy to Clipboard Toggle word wrap

    输出示例

    url = "https://cdn.redhat.com/content/eus/rhel9/9.6/x86_64/appstream/os"
    Copy to Clipboard Toggle word wrap

1.3. 将 MicroShift 存储库添加到镜像构建器

使用以下步骤将 MicroShift 存储库添加到构建主机上的镜像构建器中。

先决条件

  • 您的构建主机满足镜像构建器系统要求。
  • 已安装并设置镜像构建器和 composer-cli 工具。
  • 您有访问构建主机的 root-user 访问权限。

流程

  1. 运行以下命令,创建一个镜像构建器配置文件来添加拉取 MicroShift RPM 所需的 rhocp-4.19 RPM 存储库源:

    cat > rhocp-4.19.toml <<EOF
    id = "rhocp-4.19"
    name = "Red Hat OpenShift Container Platform 4.19 for RHEL 9"
    type = "yum-baseurl"
    url = "https://cdn.redhat.com/content/dist/layered/rhel9/$(uname -m)/rhocp/4.19/os"
    check_gpg = true
    check_ssl = true
    system = false
    rhsm = true
    EOF
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令,创建镜像构建器配置文件来添加 fast-datapath RPM 存储库:

    cat > fast-datapath.toml <<EOF
    id = "fast-datapath"
    name = "Fast Datapath for RHEL 9"
    type = "yum-baseurl"
    url = "https://cdn.redhat.com/content/dist/layered/rhel9/$(uname -m)/fast-datapath/os"
    check_gpg = true
    check_ssl = true
    system = false
    rhsm = true
    EOF
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令,将源添加到镜像构建器中:

    $ sudo composer-cli sources add rhocp-4.19.toml
    Copy to Clipboard Toggle word wrap
    $ sudo composer-cli sources add fast-datapath.toml
    Copy to Clipboard Toggle word wrap

验证

  • 运行以下命令确认源是否已正确添加:

    $ sudo composer-cli sources list
    Copy to Clipboard Toggle word wrap

    输出示例

    appstream
    baseos
    fast-datapath
    rhocp-4.19
    Copy to Clipboard Toggle word wrap

1.4. 将 MicroShift 服务添加到蓝图中

将 MicroShift RPM 软件包添加到镜像构建器蓝图中可启用使用 MicroShift 嵌入的 RHEL for Edge 镜像构建。

流程

  1. 使用安装在您的平台架构的 /usr/share/microshift/blueprint 目录中安装的蓝图。有关蓝图部分的说明,请参见以下示例片断:

    生成的镜像构建器蓝图示例片断

    name = "microshift_blueprint"
    description = "MicroShift 4.19.1 on x86_64 platform"
    version = "0.0.1"
    modules = []
    groups = []
    
    [[packages]] 
    1
    
    name = "microshift"
    version = "4.19.1"
    ...
    ...
    
    [customizations.services] 
    2
    
    enabled = ["microshift"]
    
    [customizations.firewall]
    ports = ["ssh"]
    ...
    ...
    
    [[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
    Copy to Clipboard Toggle word wrap

    1
    使用与 microshift-release-info RPM 兼容的同一版本,所有非可选 MicroShift RPM 软件包的引用。
    2
    有关在系统引导时自动启用 MicroShift 并应用默认网络设置的引用。
    3
    对离线部署所需的所有非可选 MicroShift 容器镜像的引用。SHA 取决于您正在使用的发行版本。
  2. 运行以下命令,将蓝图添加到镜像构建器中:

    $ sudo composer-cli blueprints push microshift_blueprint.toml
    Copy to Clipboard Toggle word wrap

验证

  1. 运行以下命令,验证镜像构建器配置只列出 MicroShift 软件包:

    $ sudo composer-cli blueprints depsolve microshift_blueprint | grep microshift
    Copy to Clipboard Toggle word wrap

    输出示例

    blueprint: microshift_blueprint v0.0.1
        microshift-release-info-4.19.1-202511250827.p0.g4105d3b.assembly.4.19.1.el9.noarch
        microshift-4.19.1-202511250827.p0.g4105d3b.assembly.4.19.1.el9.x86_64
    Copy to Clipboard Toggle word wrap

  2. 可选:运行以下命令来验证镜像构建器配置,该配置列出了要安装的所有组件:

    $ sudo composer-cli blueprints depsolve microshift_blueprint
    Copy to Clipboard Toggle word wrap

1.5. 在蓝图中添加其他软件包

将可选 RPM 软件包的引用添加到您的 ostree 蓝图中以启用它们。

先决条件

  • 您创建了镜像构建器蓝图文件。

流程

  1. 运行以下命令来编辑 ostree 蓝图:

    $ vi <microshift_blueprint.toml> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <microshift_blueprint.toml > 替换为用于 MicroShift 服务的蓝图文件的名称。
  2. 在蓝图中添加以下示例文本:

    [[packages]] 
    1
    
    name = "<microshift-additional-package-name>" 
    2
    
    version = "*"
    Copy to Clipboard Toggle word wrap
    1
    为每个要添加的其他服务包含一个小节。
    2
    <microshift-additional-package-name > 替换为您要包含的服务的 RPM 名称。例如,microshift-olm

后续步骤

  1. 根据需要,将自定义证书颁发机构添加到蓝图中。
  2. 将清单添加到蓝图后,您可以通过构建新的 ostree 系统并在客户端上部署它,将清单应用到活跃集群:

    • 创建 ISO。
    • 添加蓝图并构建 ISO。
    • 下载 ISO 并做好使用准备。
    • 执行所需的任何调配。

1.6. 添加证书颁发机构捆绑包

MicroShift 在客户端评估服务器证书时使用主机信任捆绑包。您还可以使用自定义安全证书链提高端点证书与特定于部署的客户端的兼容性。要做到这一点,您可以将带有 root 和中间证书的证书颁发机构(CA)捆绑包添加到 Red Hat Enterprise Linux for Edge (RHEL for Edge)系统范围的信任存储中。

您可以将其他可信证书颁发机构(CA)添加到 Red Hat Enterprise Linux for Edge (RHEL for Edge) rpm-ostree 镜像,方法是将它们添加到用于创建镜像的蓝图中。使用以下步骤设置在从镜像 registry 中拉取镜像时操作系统信任的额外 CA。

注意

此流程要求您在蓝图中配置 CA 捆绑包自定义,然后在 Kickstart 文件中添加步骤以启用该捆绑包。在以下步骤中,data 是键,< value& gt; 代表 PEM 编码的证书。

先决条件

  • 有访问构建主机的 root 用户。
  • 您的构建主机满足镜像构建器系统要求。
  • 已安装并设置镜像构建器和 composer-cli 工具。

流程

  1. 在蓝图中添加以下自定义值来添加目录。

    1. 在构建镜像的主机上添加指令以创建目录,例如: /etc/pki/ca-trust/source/anchors/ 用于您的证书捆绑包。

      [[customizations.directories]]
      path = "/etc/pki/ca-trust/source/anchors"
      Copy to Clipboard Toggle word wrap
    2. 镜像引导后,创建证书捆绑包,例如 /etc/pki/ca-trust/source/anchors/cert1.pem

      [[customizations.files]]
      path = "/etc/pki/ca-trust/source/anchors/cert1.pem"
      data = "<value>"
      Copy to Clipboard Toggle word wrap
  2. 要在系统范围的信任存储配置中启用证书捆绑包,请在您使用的镜像的主机中使用 update-ca-trust 命令,例如:

    $ sudo update-ca-trust
    Copy to Clipboard Toggle word wrap
    注意

    update-ca-trust 命令可能会包含在用于 MicroShift 主机安装的 Kickstart 文件的 %post 部分中,以便在第一次引导时启用所有必要的证书信任。在向 Kickstart 文件中添加步骤以启用该捆绑包前,您必须在蓝图中配置 CA 捆绑包自定义。

    %post
    # Update certificate trust storage in case new certificates were
    # installed at /etc/pki/ca-trust/source/anchors directory
    update-ca-trust
    %end
    Copy to Clipboard Toggle word wrap

1.7. 使用镜像构建器创建 RHEL for Edge 镜像

使用以下步骤创建 ISO。RHEL for Edge Installer 镜像从正在运行的容器拉取提交,并创建一个带有配置为使用嵌入的 rpm-ostree 提交的 Kickstart 文件的可安装的引导 ISO。

先决条件

  • 您的构建主机满足镜像构建器系统要求。
  • 已安装并设置镜像构建器和 composer-cli 工具。
  • 您 root-user 可以访问您的构建主机。
  • 已安装 podman 工具。

流程

  1. 运行以下命令启动 ostree 容器镜像构建:

    $ BUILDID=$(sudo composer-cli compose start-ostree --ref "rhel/{op-system-version-major}/$(uname -m)/edge" <microshift_blueprint> edge-container | awk '/^Compose/ {print $2}') 
    1
    Copy to Clipboard Toggle word wrap
    1
    <microshift_blueprint > 替换为蓝图的名称。

    此命令还会返回用于监控构建的标识(ID)。

  2. 您可以运行以下命令来定期检查构建的状态:

    $ sudo composer-cli compose status
    Copy to Clipboard Toggle word wrap

    正在运行的构建的输出示例

    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
    Copy to Clipboard Toggle word wrap

    已完成的构建的输出示例

    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
    Copy to Clipboard Toggle word wrap

    注意

    如果您熟悉如何启动和停止构建,您可以使用 watch 命令来监控您的构建。

  3. 运行以下命令,使用 ID 下载容器镜像并使镜像可供使用:

    $ sudo composer-cli compose image ${BUILDID}
    Copy to Clipboard Toggle word wrap
  4. 运行以下命令,将下载的容器镜像的所有权更改为当前用户:

    $ sudo chown $(whoami). ${BUILDID}-container.tar
    Copy to Clipboard Toggle word wrap
  5. 运行以下命令,将当前用户的读取权限添加到镜像中:

    $ sudo chmod a+r ${BUILDID}-container.tar
    Copy to Clipboard Toggle word wrap
  6. 通过完成以下步骤,在端口 8085 上引导要被 ISO 构建使用的 ostree 容器镜像的服务器:

    1. 运行以下命令来获取 IMAGEID 变量结果:

      $ IMAGEID=$(cat < "./${BUILDID}-container.tar" | sudo podman load | grep -o -P '(?<=sha256[@:])[a-z0-9]*')
      Copy to Clipboard Toggle word wrap
    2. 运行以下命令,使用 IMAGEID 变量结果来执行 podman 命令步骤:

      $ sudo podman run -d --name=minimal-microshift-server -p 8085:8080 ${IMAGEID}
      Copy to Clipboard Toggle word wrap

      此命令还会返回保存在 IMAGEID 变量中用于监控的容器 ID。

  7. 运行以下命令来生成安装程序蓝图文件:

    cat > microshift-installer.toml <<EOF
    name = "microshift-installer"
    
    description = ""
    version = "0.0.0"
    modules = []
    groups = []
    packages = []
    EOF
    Copy to Clipboard Toggle word wrap

1.8. 将蓝图添加到镜像构建器并构建 ISO

  1. 运行以下命令,将蓝图添加到镜像构建器中:

    $ sudo composer-cli blueprints push microshift-installer.toml
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令启动 ostree ISO 构建:

    $ BUILDID=$(sudo composer-cli compose start-ostree --url http://localhost:8085/repo/ --ref "rhel/9/$(uname -m)/edge" microshift-installer edge-installer | awk '{print $2}')
    Copy to Clipboard Toggle word wrap

    此命令还会返回用于监控构建的标识(ID)。

  3. 您可以运行以下命令来定期检查构建的状态:

    $ sudo composer-cli compose status
    Copy to Clipboard Toggle word wrap

    正在运行的构建的输出示例

    ID                                     Status     Time                      Blueprint              Version   Type               Size
    c793c24f-ca2c-4c79-b5b7-ba36f5078e8d   RUNNING    Wed Jun 7 13:22:20 2023   microshift-installer   0.0.0     edge-installer
    Copy to Clipboard Toggle word wrap

    已完成的构建的输出示例

    ID                                     Status     Time                      Blueprint              Version   Type               Size
    c793c24f-ca2c-4c79-b5b7-ba36f5078e8d   FINISHED   Wed Jun 7 13:34:49 2023   microshift-installer   0.0.0     edge-installer
    Copy to Clipboard Toggle word wrap

1.9. 下载 ISO 并为使用做准备

  1. 运行以下命令,使用 ID 下载 ISO:

    $ sudo composer-cli compose image ${BUILDID}
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令,将下载的容器镜像的所有权更改为当前用户:

    $ sudo chown $(whoami). ${BUILDID}-installer.iso
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令,将当前用户的读取权限添加到镜像中:

    $ sudo chmod a+r ${BUILDID}-installer.iso
    Copy to Clipboard Toggle word wrap

后续步骤

  • 使用 Kickstart 文件置备虚拟机。

1.9.1. 在 ISO 中嵌入 Kickstart 文件

您可以使用 MicroShift 提供的 Kickstart 文件,也可以更新现有的 RHEL for Edge Installer (ISO) Kickstart 文件。准备就绪后,将 Kickstart 文件嵌入到 ISO 中。您的 Kickstart 文件必须包含如何创建用户以及如何获取和部署 RHEL for Edge 镜像的详细信息。

先决条件

  • 您创建了包含带有 MicroShift 的 RHEL for Edge 提交的 RHEL for Edge Installer (ISO)镜像。
  • 您有一个现有的 Kickstart 文件可用于更新。您可以使用 MicroShift RPM 提供的 microshift-starter.ks Kickstart 文件。

流程

  1. 在 Kickstart 文件的主部分中,更新文件系统的设置,使其包含名为 rhel 的 LVM 卷组,至少有 10GB 系统 root。LVMS CSI 驱动程序保留可用空间,用于存储您的工作负载的数据。

    用于配置文件系统的 Kickstart 文件片段示例

    # Partition disk such that it contains an LVM volume group called `rhel` with a
    # 10GB+ system root but leaving free space for the LVMS CSI driver for storing data.
    #
    # For example, a 20GB disk would be partitioned in the following way:
    #
    # NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    # sda             8:0    0  20G  0 disk
    # ├─sda1          8:1    0 200M  0 part /boot/efi
    # ├─sda1          8:1    0 800M  0 part /boot
    # └─sda2          8:2    0  19G  0 part
    #  └─rhel-root  253:0    0  10G  0 lvm  /sysroot
    #
    ostreesetup --nogpg --osname=rhel --remote=edge \
    --url=file:///run/install/repo/ostree/repo --ref=rhel/<RHEL VERSION NUMBER>/x86_64/edge
    zerombr
    clearpart --all --initlabel
    part /boot/efi --fstype=efi --size=200
    part /boot --fstype=xfs --asprimary --size=800
    # Uncomment this line to add a SWAP partition of the recommended size
    #part swap --fstype=swap --recommended
    part pv.01 --grow
    volgroup rhel pv.01
    logvol / --vgname=rhel --fstype=xfs --size=10000 --name=root
    # To add users, use a line such as the following
    user --name=<YOUR_USER_NAME> \
    --password=<YOUR_HASHED_PASSWORD> \
    --iscrypted --groups=<YOUR_USER_GROUPS>
    Copy to Clipboard Toggle word wrap

  2. 在 Kickstart 文件的 %post 部分中,添加您的 pull secret 和强制防火墙规则。

    添加 pull secret 和防火墙规则的 Kickstart 文件片断示例

    %post --log=/var/log/anaconda/post-install.log --erroronfail
    
    # Add the pull secret to CRI-O and set root user-only read/write permissions
    cat > /etc/crio/openshift-pull-secret << EOF
    YOUR_OPENSHIFT_PULL_SECRET_HERE
    EOF
    chmod 600 /etc/crio/openshift-pull-secret
    
    # Configure the firewall with the mandatory rules for MicroShift
    firewall-offline-cmd --zone=trusted --add-source=10.42.0.0/16
    firewall-offline-cmd --zone=trusted --add-source=169.254.169.1
    
    %end
    Copy to Clipboard Toggle word wrap

  3. 运行以下命令安装 mkksiso 工具:

    $ sudo yum install -y lorax
    Copy to Clipboard Toggle word wrap
  4. 运行以下命令,使用您的新 Kickstart 文件更新 ISO:

    $ sudo mkksiso <your_kickstart>.ks <your_installer>.iso <updated_installer>.iso
    Copy to Clipboard Toggle word wrap

1.10. 如何访问 MicroShift 集群

使用本节中的步骤,通过 OpenShift CLI (oc)访问 MicroShift 集群。

  • 您可以从运行 MicroShift 服务的同一机器或从远程位置访问集群。
  • 您可以使用此访问权限来观察和管理工作负载。
  • 在执行以下步骤时,选择包含您要连接的主机名或 IP 地址的 kubeconfig 文件,并将其放在相关目录中。

1.10.1. 本地访问 MicroShift 集群

使用以下步骤,使用 kubeconfig 文件在本地访问 MicroShift 集群。

先决条件

  • 已安装 OpenShift CLI (oc)。

流程

  1. 可选:如果您的 Red Hat Enterprise Linux (RHEL)机器没有 ~/.kube/ 文件夹,请运行以下命令:

    $ mkdir -p ~/.kube/
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令,将生成的本地访问 kubeconfig 文件复制到 ~/.kube/ 目录中:

    $ sudo cat /var/lib/microshift/resources/kubeadmin/kubeconfig > ~/.kube/config
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令更新 ~/.kube/config 文件的权限:

    $ chmod go-r ~/.kube/config
    Copy to Clipboard Toggle word wrap

验证

  • 输入以下命令验证 MicroShift 是否正在运行:

    $ oc get pods -A
    Copy to Clipboard Toggle word wrap

    输出示例

    NAMESPACE                   NAME                                                     READY   STATUS   RESTARTS  AGE
    default                     i-06166fbb376f14a8bus-west-2computeinternal-debug-qtwcr  1/1     Running  0		    46m
    kube-system                 csi-snapshot-controller-5c6586d546-lprv4                 1/1     Running  0		    51m
    openshift-dns               dns-default-45jl7                                        2/2     Running  0		    50m
    openshift-dns               node-resolver-7wmzf                                      1/1     Running  0		    51m
    openshift-ingress           router-default-78b86fbf9d-qvj9s                          1/1     Running  0		    51m
    openshift-ovn-kubernetes    ovnkube-master-5rfhh                                     4/4     Running  0		    51m
    openshift-ovn-kubernetes    ovnkube-node-gcnt6                                       1/1     Running  0		    51m
    openshift-service-ca        service-ca-bf5b7c9f8-pn6rk                               1/1     Running  0		    51m
    openshift-storage           topolvm-controller-549f7fbdd5-7vrmv                      5/5     Running  0		    51m
    openshift-storage           topolvm-node-rht2m                                       3/3     Running  0		    50m
    Copy to Clipboard Toggle word wrap

    注意

    这个示例输出显示基本的 MicroShift。如果您安装了可选的 RPM,则您的输出中也会显示运行这些服务的 pod 状态。

1.10.2. 打开防火墙以远程访问 MicroShift 集群

使用以下步骤打开防火墙,以便远程用户可以访问 MicroShift 集群。必须在 workstation 用户可以访问集群前完成此步骤。

对于此过程,user@microshift 是 MicroShift 主机上的用户,负责设置该机器,使其可以被单独的工作站上的远程用户访问。

先决条件

  • 已安装 OpenShift CLI (oc)。
  • 您的帐户具有集群管理特权。

流程

  • 在 MicroShift 主机上以 user@microshift 的身份,运行以下命令来打开 Kubernetes API 服务器的防火墙端口 (6443/tcp):

    [user@microshift]$ sudo firewall-cmd --permanent --zone=public --add-port=6443/tcp && sudo firewall-cmd --reload
    Copy to Clipboard Toggle word wrap

验证

  • user@microshift 的身份,输入以下命令验证 MicroShift 是否正在运行:

    $ oc get pods -A
    Copy to Clipboard Toggle word wrap

    输出示例

    NAMESPACE                   NAME                                                     READY   STATUS   RESTARTS  AGE
    default                     i-06166fbb376f14a8bus-west-2computeinternal-debug-qtwcr  1/1     Running  0		    46m
    kube-system                 csi-snapshot-controller-5c6586d546-lprv4                 1/1     Running  0		    51m
    openshift-dns               dns-default-45jl7                                        2/2     Running  0		    50m
    openshift-dns               node-resolver-7wmzf                                      1/1     Running  0		    51m
    openshift-ingress           router-default-78b86fbf9d-qvj9s                          1/1     Running  0		    51m
    openshift-ovn-kubernetes    ovnkube-master-5rfhh                                     4/4     Running  0		    51m
    openshift-ovn-kubernetes    ovnkube-node-gcnt6                                       1/1     Running  0		    51m
    openshift-service-ca        service-ca-bf5b7c9f8-pn6rk                               1/1     Running  0		    51m
    openshift-storage           topolvm-controller-549f7fbdd5-7vrmv                      5/5     Running  0		    51m
    openshift-storage           topolvm-node-rht2m                                       3/3     Running  0		    50m
    Copy to Clipboard Toggle word wrap

    注意

    这个示例输出显示基本的 MicroShift。如果您安装了可选的 RPM,则您的输出中也会显示运行这些服务的 pod 状态。

1.10.3. 远程访问 MicroShift 集群

使用以下步骤,使用 kubeconfig 文件从远程位置访问 MicroShift 集群。

user@workstation 登录用于远程访问主机计算机。该流程中的 <user> 值是 user@workstation 登录到 MicroShift 主机所使用的用户名。

先决条件

  • 已安装 OpenShift CLI (oc)。
  • user@microshift 已打开来自本地主机的防火墙。

流程

  1. user@workstation 的身份,如果 Red Hat Enterprise Linux (RHEL)机器没有,使用以下命令创建一个 ~/.kube/ 文件夹:

    [user@workstation]$ mkdir -p ~/.kube/
    Copy to Clipboard Toggle word wrap
  2. user@workstation 的身份,运行以下命令来为您的 MicroShift 主机的主机名设置变量:

    [user@workstation]$ MICROSHIFT_MACHINE=<microshift_hostname> 
    1
    Copy to Clipboard Toggle word wrap
    1
    将值 & lt;MicroShift_hostname > 替换为运行 的主机的名称或 IP 地址。
  3. user@workstation 的身份,运行以下命令来复制生成的 kubeconfig 文件,该文件包含您要从运行 MicroShift 的 RHEL 机器连接到本地机器的主机名或 IP 地址:

    [user@workstation]$ ssh <user>@$MICROSHIFT_MACHINE "sudo cat /var/lib/microshift/resources/kubeadmin/$MICROSHIFT_MACHINE/kubeconfig" > ~/.kube/config 
    1
    Copy to Clipboard Toggle word wrap
    1
    <user > 替换为您的 SSH 登录凭证。
    注意

    要为此步骤生成 kubeconfig 文件,请参阅为远程访问生成额外的 kubeconfig 文件

  4. user@workstation 的身份,运行以下命令来更新 ~/.kube/config 文件的权限:

    $ chmod go-r ~/.kube/config
    Copy to Clipboard Toggle word wrap

验证

  • user@workstation 的身份,输入以下命令验证 MicroShift 是否正在运行:

    $ oc get pods -A
    Copy to Clipboard Toggle word wrap

    输出示例

    NAMESPACE                   NAME                                                     READY   STATUS   RESTARTS  AGE
    default                     i-06166fbb376f14a8bus-west-2computeinternal-debug-qtwcr  1/1     Running  0		    46m
    kube-system                 csi-snapshot-controller-5c6586d546-lprv4                 1/1     Running  0		    51m
    openshift-dns               dns-default-45jl7                                        2/2     Running  0		    50m
    openshift-dns               node-resolver-7wmzf                                      1/1     Running  0		    51m
    openshift-ingress           router-default-78b86fbf9d-qvj9s                          1/1     Running  0		    51m
    openshift-ovn-kubernetes    ovnkube-master-5rfhh                                     4/4     Running  0		    51m
    openshift-ovn-kubernetes    ovnkube-node-gcnt6                                       1/1     Running  0		    51m
    openshift-service-ca        service-ca-bf5b7c9f8-pn6rk                               1/1     Running  0		    51m
    openshift-storage           topolvm-controller-549f7fbdd5-7vrmv                      5/5     Running  0		    51m
    openshift-storage           topolvm-node-rht2m                                       3/3     Running  0		    50m
    Copy to Clipboard Toggle word wrap

    注意

    这个示例输出显示基本的 MicroShift。如果您安装了可选的 RPM,则您的输出中也会显示运行这些服务的 pod 状态。

rpm-ostree 提交中嵌入 MicroShift 容器意味着您可以在 air-gapped、断开连接或离线环境中运行集群。您可以将红帽构建的 MicroShift 容器嵌入到 Red Hat Enterprise Linux for Edge (RHEL for Edge)镜像中,以便容器引擎不需要从容器 registry 通过网络拉取镜像。工作负载可以在不网络连接的情况下立即启动。

2.1. 为离线部署嵌入 MicroShift 容器

您可以使用镜像构建器使用嵌入式 MicroShift 容器镜像创建 RHEL for Edge 镜像。要嵌入容器镜像,您必须将镜像引用添加到镜像构建器蓝图文件中。

先决条件

  • 您有访问构建主机的 root-user 访问权限。
  • 您的构建主机满足镜像构建器系统要求。
  • 已安装并设置镜像构建器和 composer-cli 工具。
  • 您创建了 RHEL for Edge 镜像蓝图。
  • 安装了 jq。

流程

  1. 获取您要部署的 MicroShift 版本使用的容器镜像引用列表。您可以按照以下步骤 2 来安装 microshift-release-info RPM 软件包,或按照以下步骤下载并解包 RPM。
  2. 安装 microshift-release-info RPM 软件包:

    1. 运行以下命令安装 microshift-release-info RPM 软件包:

      $ sudo dnf install -y microshift-release-info-<release_version>
      Copy to Clipboard Toggle word wrap

      使用整个版本号(如 4.19.1) 将 < release_version > 替换为您要部署的发行版本的数字值。

    2. 运行以下命令,列出 /usr/share/microshift/release 目录的内容,以验证发行信息文件是否存在:

      $ sudo ls /usr/share/microshift/release
      Copy to Clipboard Toggle word wrap

      输出示例

      release-x86_64.json
      release-aarch64.json
      Copy to Clipboard Toggle word wrap

      如果安装了 microshift-release-info RPM,请继续执行第 4 步。

  3. 如果您没有完成第 2 步,请下载并解包 microshift-release-info RPM,而不安装它:

    1. 运行以下命令来下载 RPM 软件包:

      $ sudo dnf download microshift-release-info-<release_version> 
      1
      Copy to Clipboard Toggle word wrap
      1
      使用整个版本号(如 4.19.1) 将 < release_version > 替换为您要部署的发行版本的数字值。

      RPM 输出示例

      microshift-release-info-4.18.1.-202511101230.p0.g7dc6a00.assembly.4.18.1.el9.noarch.rpm
      Copy to Clipboard Toggle word wrap

    2. 运行以下命令解包 RPM 软件包而不安装它:

      $ rpm2cpio <my_microshift_release_info> | cpio -idmv 
      1
      
      ./usr/share/microshift/release/release-aarch64.json
      ./usr/share/microshift/release/release-x86_64.json
      Copy to Clipboard Toggle word wrap
      1
      <my_microshift_release_info > 替换为上一步中的 RPM 软件包的名称。
  4. 运行以下命令,定义包含容器引用信息的 JSON 文件的位置:

    $ RELEASE_FILE=</path/to/your/release-$(uname -m).json> 
    1
    Copy to Clipboard Toggle word wrap
    1
    </path/to/your/release-$(uname -m).json > 替换为 JSON 文件的完整路径。请务必使用您的架构所需的文件。
  5. 运行以下命令,定义 TOML 文件的位置,其中包含构建镜像的说明:

    $ BLUEPRINT_FILE=</path/to/your/blueprint.toml> 
    1
    Copy to Clipboard Toggle word wrap
    1
    </path/to/your/blueprint.toml > 替换为 TOML 文件的完整路径。
  6. 运行以下命令,生成并嵌入蓝图 TOML 文件中的容器镜像引用:

    $  jq -r '.images | .[] | ("[[containers]]\nsource = \"" + . + "\"\n")' "${RELEASE_FILE}" >> "${BLUEPRINT_FILE}"
    Copy to Clipboard Toggle word wrap

    显示容器引用的 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"
    Copy to Clipboard Toggle word wrap

  7. 您可以使用以下示例将其添加到镜像构建器蓝图文件中来手动嵌入任何容器镜像:

    将容器镜像手动嵌入到蓝图中的示例

    [[containers]]
    source = "<my_image_pullspec_with_tag_or_digest>"
    Copy to Clipboard Toggle word wrap

    <my_image_pullspec_with_tag_or_digest > 替换为您要部署的 MicroShift 版本所使用的容器镜像的确切引用。

2.2. 添加 registry 身份验证以准备镜像构建

更新蓝图后,您必须为容器 registry 添加身份验证,以使用嵌入的 MicroShift 容器构建镜像。要做到这一点,请更新作为镜像构建器配置一部分的 systemd 服务文件之一。

先决条件

  • 您有访问构建主机的 root-user 访问权限。
  • 您的构建主机满足 Image Builder 系统要求。
  • 已安装并设置 Image Builder 和 composer-cli 工具。
注意

如果 /etc/osbuild-worker/osbuild-worker.toml 目录和配置文件不存在,您可以创建 /etc/osbuild-worker/osbuild-worker.toml 目录和配置文件。

流程

  1. 通过在 /etc/osbuild-worker/osbuild-worker.toml 配置文件的 [containers] 部分中设置 auth_file_path 来添加用于向 registry 进行身份验证的 pull secret:

    [containers]
    auth_file_path = "/etc/osbuild-worker/pull-secret.json"
    Copy to Clipboard Toggle word wrap
  2. 重启主机以应用配置更改。

2.3. 构建并使用 rpm-ostree 镜像进行离线部署

您可以使用镜像构建器创建带有嵌入式 MicroShift 容器镜像的 rpm-ostree 系统镜像。要嵌入容器镜像,您必须将镜像引用添加到镜像构建器蓝图中。您可以根据您的用例需要创建提交和 ISO。

将此处列出的先决条件添加到以下流程中包含的先决条件中。

2.3.1. 离线部署的额外先决条件

  • 您已创建了并更新了 RHEL for Edge 镜像蓝图以供离线使用。以下流程使用通过容器镜像创建的蓝图示例。您必须使用在 "Embedding MicroShift 容器中为离线部署"中创建的更新的蓝图。
  • 您已更新了 /etc/osbuild-worker/osbuild-worker.toml 配置文件,以离线使用。
重要

将以下流程中的 minimal-microshift.toml 替换为您更新的 TOML 的名称,以便离线使用 <my_blueprint_name>。

2.3.2. 将 MicroShift 服务添加到蓝图中

将 MicroShift RPM 软件包添加到镜像构建器蓝图中可启用使用 MicroShift 嵌入的 RHEL for Edge 镜像构建。

流程

  1. 使用安装在您的平台架构的 /usr/share/microshift/blueprint 目录中安装的蓝图。有关蓝图部分的说明,请参见以下示例片断:

    生成的镜像构建器蓝图示例片断

    name = "microshift_blueprint"
    description = "MicroShift 4.19.1 on x86_64 platform"
    version = "0.0.1"
    modules = []
    groups = []
    
    [[packages]] 
    1
    
    name = "microshift"
    version = "4.19.1"
    ...
    ...
    
    [customizations.services] 
    2
    
    enabled = ["microshift"]
    
    [customizations.firewall]
    ports = ["ssh"]
    ...
    ...
    
    [[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
    Copy to Clipboard Toggle word wrap

    1
    使用与 microshift-release-info RPM 兼容的同一版本,所有非可选 MicroShift RPM 软件包的引用。
    2
    有关在系统引导时自动启用 MicroShift 并应用默认网络设置的引用。
    3
    对离线部署所需的所有非可选 MicroShift 容器镜像的引用。SHA 取决于您正在使用的发行版本。
  2. 运行以下命令,将蓝图添加到镜像构建器中:

    $ sudo composer-cli blueprints push microshift_blueprint.toml
    Copy to Clipboard Toggle word wrap

验证

  1. 运行以下命令,验证镜像构建器配置只列出 MicroShift 软件包:

    $ sudo composer-cli blueprints depsolve microshift_blueprint | grep microshift
    Copy to Clipboard Toggle word wrap

    输出示例

    blueprint: microshift_blueprint v0.0.1
        microshift-release-info-4.19.1-202511250827.p0.g4105d3b.assembly.4.19.1.el9.noarch
        microshift-4.19.1-202511250827.p0.g4105d3b.assembly.4.19.1.el9.x86_64
    Copy to Clipboard Toggle word wrap

  2. 可选:运行以下命令来验证镜像构建器配置,该配置列出了要安装的所有组件:

    $ sudo composer-cli blueprints depsolve microshift_blueprint
    Copy to Clipboard Toggle word wrap

2.3.3. 使用镜像构建器创建 RHEL for Edge 镜像

使用以下步骤创建 ISO。RHEL for Edge Installer 镜像从正在运行的容器拉取提交,并创建一个带有配置为使用嵌入的 rpm-ostree 提交的 Kickstart 文件的可安装的引导 ISO。

先决条件

  • 您的构建主机满足镜像构建器系统要求。
  • 已安装并设置镜像构建器和 composer-cli 工具。
  • 您 root-user 可以访问您的构建主机。
  • 已安装 podman 工具。

流程

  1. 运行以下命令启动 ostree 容器镜像构建:

    $ BUILDID=$(sudo composer-cli compose start-ostree --ref "rhel/{op-system-version-major}/$(uname -m)/edge" <microshift_blueprint> edge-container | awk '/^Compose/ {print $2}') 
    1
    Copy to Clipboard Toggle word wrap
    1
    <microshift_blueprint > 替换为蓝图的名称。

    此命令还会返回用于监控构建的标识(ID)。

  2. 您可以运行以下命令来定期检查构建的状态:

    $ sudo composer-cli compose status
    Copy to Clipboard Toggle word wrap

    正在运行的构建的输出示例

    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
    Copy to Clipboard Toggle word wrap

    已完成的构建的输出示例

    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
    Copy to Clipboard Toggle word wrap

    注意

    如果您熟悉如何启动和停止构建,您可以使用 watch 命令来监控您的构建。

  3. 运行以下命令,使用 ID 下载容器镜像并使镜像可供使用:

    $ sudo composer-cli compose image ${BUILDID}
    Copy to Clipboard Toggle word wrap
  4. 运行以下命令,将下载的容器镜像的所有权更改为当前用户:

    $ sudo chown $(whoami). ${BUILDID}-container.tar
    Copy to Clipboard Toggle word wrap
  5. 运行以下命令,将当前用户的读取权限添加到镜像中:

    $ sudo chmod a+r ${BUILDID}-container.tar
    Copy to Clipboard Toggle word wrap
  6. 通过完成以下步骤,在端口 8085 上引导要被 ISO 构建使用的 ostree 容器镜像的服务器:

    1. 运行以下命令来获取 IMAGEID 变量结果:

      $ IMAGEID=$(cat < "./${BUILDID}-container.tar" | sudo podman load | grep -o -P '(?<=sha256[@:])[a-z0-9]*')
      Copy to Clipboard Toggle word wrap
    2. 运行以下命令,使用 IMAGEID 变量结果来执行 podman 命令步骤:

      $ sudo podman run -d --name=minimal-microshift-server -p 8085:8080 ${IMAGEID}
      Copy to Clipboard Toggle word wrap

      此命令还会返回保存在 IMAGEID 变量中用于监控的容器 ID。

  7. 运行以下命令来生成安装程序蓝图文件:

    cat > microshift-installer.toml <<EOF
    name = "microshift-installer"
    
    description = ""
    version = "0.0.0"
    modules = []
    groups = []
    packages = []
    EOF
    Copy to Clipboard Toggle word wrap

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat