嵌入 RHEL for Edge 镜像
第 1 章 使用镜像构建器嵌入 RHEL for Edge 镜像 复制链接链接已复制到粘贴板!
使用本指南构建包含 MicroShift 的 RHEL 镜像。
1.1. 准备镜像构建 复制链接链接已复制到粘贴板!
使用镜像构建器工具制作为边缘部署优化的自定义 Red Hat Enterprise Linux for Edge (RHEL for Edge)镜像。您可以在 RHEL for Edge 虚拟机上使用应用程序运行 MicroShift 集群,首先进行开发和测试,然后在边缘生产环境中使用整个解决方案。
使用以下 RHEL 文档了解 RHEL for Edge 的完整详情:
- 阅读 RHEL for Edge 镜像简介。
- 要为给定 CPU 架构构建 Red Hat Enterprise Linux for Edge (RHEL for Edge) 9.6 镜像,您需要一个满足 镜像构建器系统要求 的相同 CPU 架构的 RHEL 9.6 构建主机。
-
按照安装镜像构建器中的说明来安装 镜像构建器 和
composer-cli工具。
1.2. 为镜像构建启用扩展支持存储库 复制链接链接已复制到粘贴板!
如果您有 MicroShift 或 Red Hat Enterprise Linux (RHEL)的扩展支持(EUS)版本,则必须启用 RHEL EUS 软件仓库才能使用镜像构建器。如果您没有 EUS 版本,您可以跳过这些步骤。
先决条件
- 具有 MicroShift 或 RHEL 的 EUS 版本,或正在更新到一个。
- 您有访问构建主机的 root-user 访问权限。
- 您已查看了 Red Hat Device Edge 发行版本兼容性列表。
在受支持的 Red Hat Device Edge 配置中保留组件版本可能需要同时更新 MicroShift 和 RHEL。确保您的 RHEL 版本与您要升级到的 MicroShift 版本兼容,特别是在两个次版本间更新 MicroShift 时。否则,您可以创建不支持的配置、破坏集群或两者。如需更多信息,请参阅 Red Hat Device Edge 发行版本兼容性列表。
流程
运行以下命令来创建
/etc/osbuild-composer/repositories目录:$ sudo mkdir -p /etc/osbuild-composer/repositories运行以下命令,将
/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使用以下值修改
/etc/osbuild-composer/repositories/rhel-9.6.json文件来更新baseos源:# ... "baseurl": "https://cdn.redhat.com/content/eus/rhel9/9.6//baseos/os",1 # ...- 1
- 如果与本例中的值不同,您可以使用的主 RHEL 版本替换 9,并将 9.6 替换为 < major.minor > 版本。请确定您选择的 RHEL 版本与您使用的 MicroShift 版本兼容。
可选:运行以下命令来应用
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.json1 - 1
- 如果与本例中的值不同,您可以使用的主 RHEL 版本替换 9,并将 9.6 替换为 < major.minor > 版本。请确定您选择的 RHEL 版本与您使用的 MicroShift 版本兼容。
使用以下值修改
/etc/osbuild-composer/repositories/rhel-<major.minor>.json文件来更新appstream源:# ... "baseurl": "https://cdn.redhat.com/content/eus/rhel9/9.6//appstream/os",1 # ...- 1
- 如果与本例中的值不同,您可以使用的主 RHEL 版本替换 9,并将 9.6 替换为 < major.minor > 版本。请确定您选择的 RHEL 版本与您使用的 MicroShift 版本兼容。
可选。运行以下命令来应用
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.json1 - 1
- 如果与本例中的值不同,您可以使用的主 RHEL 版本替换 9,并将 9.6 替换为 < major.minor > 版本。请确定您选择的 RHEL 版本与您使用的 MicroShift 版本兼容。
验证
您可以使用 composer-cli 工具显示源信息来验证存储库。
运行以下命令验证
baseos源:$ sudo composer-cli sources info baseos | grep 'url ='输出示例
url = "https://cdn.redhat.com/content/eus/rhel9/9.6/x86_64/baseos/os"运行以下命令验证
appstream源:$ sudo composer-cli sources info appstream | grep 'url ='输出示例
url = "https://cdn.redhat.com/content/eus/rhel9/9.6/x86_64/appstream/os"
1.3. 将 MicroShift 存储库添加到镜像构建器 复制链接链接已复制到粘贴板!
使用以下步骤将 MicroShift 存储库添加到构建主机上的镜像构建器中。
先决条件
- 您的构建主机满足镜像构建器系统要求。
-
已安装并设置镜像构建器和
composer-cli工具。 - 您有访问构建主机的 root-user 访问权限。
流程
运行以下命令,创建一个镜像构建器配置文件来添加拉取 MicroShift RPM 所需的
rhocp-4.19RPM 存储库源: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运行以下命令,创建镜像构建器配置文件来添加
fast-datapathRPM 存储库: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运行以下命令,将源添加到镜像构建器中:
$ sudo composer-cli sources add rhocp-4.19.toml$ sudo composer-cli sources add fast-datapath.toml
验证
运行以下命令确认源是否已正确添加:
$ sudo composer-cli sources list输出示例
appstream baseos fast-datapath rhocp-4.19
1.4. 将 MicroShift 服务添加到蓝图中 复制链接链接已复制到粘贴板!
将 MicroShift RPM 软件包添加到镜像构建器蓝图中可启用使用 MicroShift 嵌入的 RHEL for Edge 镜像构建。
流程
使用安装在您的平台架构的
/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运行以下命令,将蓝图添加到镜像构建器中:
$ sudo composer-cli blueprints push microshift_blueprint.toml
验证
运行以下命令,验证镜像构建器配置只列出 MicroShift 软件包:
$ sudo composer-cli blueprints depsolve microshift_blueprint | grep microshift输出示例
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可选:运行以下命令来验证镜像构建器配置,该配置列出了要安装的所有组件:
$ sudo composer-cli blueprints depsolve microshift_blueprint
1.5. 在蓝图中添加其他软件包 复制链接链接已复制到粘贴板!
将可选 RPM 软件包的引用添加到您的 ostree 蓝图中以启用它们。
先决条件
- 您创建了镜像构建器蓝图文件。
流程
运行以下命令来编辑
ostree蓝图:$ vi <microshift_blueprint.toml>1 - 1
- 将
<microshift_blueprint.toml> 替换为用于 MicroShift 服务的蓝图文件的名称。
在蓝图中添加以下示例文本:
[[packages]]1 name = "<microshift-additional-package-name>"2 version = "*"
后续步骤
- 根据需要,将自定义证书颁发机构添加到蓝图中。
将清单添加到蓝图后,您可以通过构建新的
ostree系统并在客户端上部署它,将清单应用到活跃集群:- 创建 ISO。
- 添加蓝图并构建 ISO。
- 下载 ISO 并做好使用准备。
- 执行所需的任何调配。
1.6. 添加证书颁发机构捆绑包 复制链接链接已复制到粘贴板!
MicroShift 在客户端评估服务器证书时使用主机信任捆绑包。您还可以使用自定义安全证书链提高端点证书与特定于部署的客户端的兼容性。要做到这一点,您可以将带有 root 和中间证书的证书颁发机构(CA)捆绑包添加到 Red Hat Enterprise Linux for Edge (RHEL for Edge)系统范围的信任存储中。
1.6.1. 将证书颁发机构捆绑包添加到 rpm-ostree 镜像 复制链接链接已复制到粘贴板!
您可以将其他可信证书颁发机构(CA)添加到 Red Hat Enterprise Linux for Edge (RHEL for Edge) rpm-ostree 镜像,方法是将它们添加到用于创建镜像的蓝图中。使用以下步骤设置在从镜像 registry 中拉取镜像时操作系统信任的额外 CA。
此流程要求您在蓝图中配置 CA 捆绑包自定义,然后在 Kickstart 文件中添加步骤以启用该捆绑包。在以下步骤中,data 是键,< value& gt; 代表 PEM 编码的证书。
先决条件
- 有访问构建主机的 root 用户。
- 您的构建主机满足镜像构建器系统要求。
-
已安装并设置镜像构建器和
composer-cli工具。
流程
在蓝图中添加以下自定义值来添加目录。
在构建镜像的主机上添加指令以创建目录,例如:
/etc/pki/ca-trust/source/anchors/用于您的证书捆绑包。[[customizations.directories]] path = "/etc/pki/ca-trust/source/anchors"镜像引导后,创建证书捆绑包,例如
/etc/pki/ca-trust/source/anchors/cert1.pem:[[customizations.files]] path = "/etc/pki/ca-trust/source/anchors/cert1.pem" data = "<value>"
要在系统范围的信任存储配置中启用证书捆绑包,请在您使用的镜像的主机中使用
update-ca-trust命令,例如:$ sudo update-ca-trust注意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
1.7. 使用镜像构建器创建 RHEL for Edge 镜像 复制链接链接已复制到粘贴板!
使用以下步骤创建 ISO。RHEL for Edge Installer 镜像从正在运行的容器拉取提交,并创建一个带有配置为使用嵌入的 rpm-ostree 提交的 Kickstart 文件的可安装的引导 ISO。
先决条件
- 您的构建主机满足镜像构建器系统要求。
-
已安装并设置镜像构建器和
composer-cli工具。 - 您 root-user 可以访问您的构建主机。
-
已安装
podman工具。
流程
运行以下命令启动
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 - 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
1.8. 将蓝图添加到镜像构建器并构建 ISO 复制链接链接已复制到粘贴板!
运行以下命令,将蓝图添加到镜像构建器中:
$ sudo composer-cli blueprints push microshift-installer.toml运行以下命令启动
ostreeISO 构建:$ 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}')此命令还会返回用于监控构建的标识(ID)。
您可以运行以下命令来定期检查构建的状态:
$ sudo composer-cli compose status正在运行的构建的输出示例
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已完成的构建的输出示例
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
1.9. 下载 ISO 并为使用做准备 复制链接链接已复制到粘贴板!
运行以下命令,使用 ID 下载 ISO:
$ sudo composer-cli compose image ${BUILDID}运行以下命令,将下载的容器镜像的所有权更改为当前用户:
$ sudo chown $(whoami). ${BUILDID}-installer.iso运行以下命令,将当前用户的读取权限添加到镜像中:
$ sudo chmod a+r ${BUILDID}-installer.iso
后续步骤
- 使用 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.ksKickstart 文件。
流程
在 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>在 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运行以下命令安装
mkksiso工具:$ sudo yum install -y lorax运行以下命令,使用您的新 Kickstart 文件更新 ISO:
$ sudo mkksiso <your_kickstart>.ks <your_installer>.iso <updated_installer>.iso
1.10. 如何访问 MicroShift 集群 复制链接链接已复制到粘贴板!
使用本节中的步骤,通过 OpenShift CLI (oc)访问 MicroShift 集群。
- 您可以从运行 MicroShift 服务的同一机器或从远程位置访问集群。
- 您可以使用此访问权限来观察和管理工作负载。
-
在执行以下步骤时,选择包含您要连接的主机名或 IP 地址的
kubeconfig文件,并将其放在相关目录中。
1.10.1. 本地访问 MicroShift 集群 复制链接链接已复制到粘贴板!
使用以下步骤,使用 kubeconfig 文件在本地访问 MicroShift 集群。
先决条件
-
已安装 OpenShift CLI (
oc)。
流程
可选:如果您的 Red Hat Enterprise Linux (RHEL)机器没有
~/.kube/文件夹,请运行以下命令:$ mkdir -p ~/.kube/运行以下命令,将生成的本地访问
kubeconfig文件复制到~/.kube/目录中:$ sudo cat /var/lib/microshift/resources/kubeadmin/kubeconfig > ~/.kube/config运行以下命令更新
~/.kube/config文件的权限:$ chmod go-r ~/.kube/config
验证
输入以下命令验证 MicroShift 是否正在运行:
$ oc get pods -A输出示例
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注意这个示例输出显示基本的 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
验证
以
user@microshift的身份,输入以下命令验证 MicroShift 是否正在运行:$ oc get pods -A输出示例
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注意这个示例输出显示基本的 MicroShift。如果您安装了可选的 RPM,则您的输出中也会显示运行这些服务的 pod 状态。
1.10.3. 远程访问 MicroShift 集群 复制链接链接已复制到粘贴板!
使用以下步骤,使用 kubeconfig 文件从远程位置访问 MicroShift 集群。
user@workstation 登录用于远程访问主机计算机。该流程中的 <user> 值是 user@workstation 登录到 MicroShift 主机所使用的用户名。
先决条件
-
已安装 OpenShift CLI (
oc)。 -
user@microshift已打开来自本地主机的防火墙。
流程
以
user@workstation的身份,如果 Red Hat Enterprise Linux (RHEL)机器没有,使用以下命令创建一个~/.kube/文件夹:[user@workstation]$ mkdir -p ~/.kube/以
user@workstation的身份,运行以下命令来为您的 MicroShift 主机的主机名设置变量:[user@workstation]$ MICROSHIFT_MACHINE=<microshift_hostname>1 - 1
- 将值 & lt;MicroShift_hostname > 替换为运行 的主机的名称或 IP 地址。
以
user@workstation的身份,运行以下命令来复制生成的kubeconfig文件,该文件包含您要从运行 MicroShift 的 RHEL 机器连接到本地机器的主机名或 IP 地址:[user@workstation]$ ssh <user>@$MICROSHIFT_MACHINE "sudo cat /var/lib/microshift/resources/kubeadmin/$MICROSHIFT_MACHINE/kubeconfig" > ~/.kube/config1 - 1
- 将 <user > 替换为您的 SSH 登录凭证。
注意要为此步骤生成
kubeconfig文件,请参阅为远程访问生成额外的 kubeconfig 文件。以
user@workstation的身份,运行以下命令来更新~/.kube/config文件的权限:$ chmod go-r ~/.kube/config
验证
以
user@workstation的身份,输入以下命令验证 MicroShift 是否正在运行:$ oc get pods -A输出示例
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注意这个示例输出显示基本的 MicroShift。如果您安装了可选的 RPM,则您的输出中也会显示运行这些服务的 pod 状态。
第 2 章 嵌入在 RHEL for Edge 镜像中供离线使用 复制链接链接已复制到粘贴板!
在 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。
流程
-
获取您要部署的 MicroShift 版本使用的容器镜像引用列表。您可以按照以下步骤 2 来安装
microshift-release-infoRPM 软件包,或按照以下步骤下载并解包 RPM。 安装
microshift-release-infoRPM 软件包:运行以下命令安装
microshift-release-infoRPM 软件包:$ sudo dnf install -y microshift-release-info-<release_version>使用整个版本号(如
4.19.1)将 <release_version> 替换为您要部署的发行版本的数字值。运行以下命令,列出
/usr/share/microshift/release目录的内容,以验证发行信息文件是否存在:$ sudo ls /usr/share/microshift/release输出示例
release-x86_64.json release-aarch64.json如果安装了
microshift-release-infoRPM,请继续执行第 4 步。
如果您没有完成第 2 步,请下载并解包
microshift-release-infoRPM,而不安装它:运行以下命令来下载 RPM 软件包:
$ sudo dnf download microshift-release-info-<release_version>1 - 1
- 使用整个版本号(如
4.19.1)将 <release_version> 替换为您要部署的发行版本的数字值。
RPM 输出示例
microshift-release-info-4.18.1.-202511101230.p0.g7dc6a00.assembly.4.18.1.el9.noarch.rpm运行以下命令解包 RPM 软件包而不安装它:
$ rpm2cpio <my_microshift_release_info> | cpio -idmv1 ./usr/share/microshift/release/release-aarch64.json ./usr/share/microshift/release/release-x86_64.json- 1
- 将
<my_microshift_release_info> 替换为上一步中的 RPM 软件包的名称。
运行以下命令,定义包含容器引用信息的 JSON 文件的位置:
$ RELEASE_FILE=</path/to/your/release-$(uname -m).json>1 - 1
- 将
</path/to/your/release-$(uname -m).json> 替换为 JSON 文件的完整路径。请务必使用您的架构所需的文件。
运行以下命令,定义 TOML 文件的位置,其中包含构建镜像的说明:
$ BLUEPRINT_FILE=</path/to/your/blueprint.toml>1 - 1
- 将
</path/to/your/blueprint.toml> 替换为 TOML 文件的完整路径。
运行以下命令,生成并嵌入蓝图 TOML 文件中的容器镜像引用:
$ jq -r '.images | .[] | ("[[containers]]\nsource = \"" + . + "\"\n")' "${RELEASE_FILE}" >> "${BLUEPRINT_FILE}"显示容器引用的 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"您可以使用以下示例将其添加到镜像构建器蓝图文件中来手动嵌入任何容器镜像:
将容器镜像手动嵌入到蓝图中的示例
[[containers]] source = "<my_image_pullspec_with_tag_or_digest>"将
<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 目录和配置文件。
流程
通过在
/etc/osbuild-worker/osbuild-worker.toml配置文件的[containers]部分中设置auth_file_path来添加用于向 registry 进行身份验证的 pull secret:[containers] auth_file_path = "/etc/osbuild-worker/pull-secret.json"- 重启主机以应用配置更改。
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 镜像构建。
流程
使用安装在您的平台架构的
/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运行以下命令,将蓝图添加到镜像构建器中:
$ sudo composer-cli blueprints push microshift_blueprint.toml
验证
运行以下命令,验证镜像构建器配置只列出 MicroShift 软件包:
$ sudo composer-cli blueprints depsolve microshift_blueprint | grep microshift输出示例
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可选:运行以下命令来验证镜像构建器配置,该配置列出了要安装的所有组件:
$ sudo composer-cli blueprints depsolve microshift_blueprint
2.3.3. 使用镜像构建器创建 RHEL for Edge 镜像 复制链接链接已复制到粘贴板!
使用以下步骤创建 ISO。RHEL for Edge Installer 镜像从正在运行的容器拉取提交,并创建一个带有配置为使用嵌入的 rpm-ostree 提交的 Kickstart 文件的可安装的引导 ISO。
先决条件
- 您的构建主机满足镜像构建器系统要求。
-
已安装并设置镜像构建器和
composer-cli工具。 - 您 root-user 可以访问您的构建主机。
-
已安装
podman工具。
流程
运行以下命令启动
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 - 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