嵌入 RHEL for Edge 镜像
第 1 章 使用镜像构建器嵌入 RHEL for Edge 镜像 复制链接链接已复制到粘贴板!
您可以将 MicroShift 嵌入到 Red Hat Enterprise Linux for Edge (RHEL for Edge)镜像中。使用本指南构建包含 MicroShift 的 RHEL 镜像。
1.1. 准备镜像构建 复制链接链接已复制到粘贴板!
要为给定 CPU 架构构建 Red Hat Enterprise Linux for Edge (RHEL for Edge) 9.4 镜像,您需要一个满足 镜像构建器系统要求 的相同 CPU 架构的 RHEL 9.4 构建主机。
按照安装镜像构建器中的说明来安装 镜像构建器 和 composer-cli
工具。
1.2. 将 MicroShift 存储库添加到镜像构建器 复制链接链接已复制到粘贴板!
使用以下步骤将 MicroShift 存储库添加到构建主机上的镜像构建器中。
先决条件
- 您的构建主机满足镜像构建器系统要求。
-
已安装并设置镜像构建器和
composer-cli
工具。 - 您有访问构建主机的 root-user 访问权限。
流程
运行以下命令,创建一个镜像构建器配置文件来添加拉取 MicroShift RPM 所需的
rhocp-4.18
RPM 存储库源:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,创建镜像构建器配置文件来添加
fast-datapath
RPM 存储库:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将源添加到镜像构建器中:
sudo composer-cli sources add rhocp-4.18.toml
$ sudo composer-cli sources add rhocp-4.18.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo composer-cli sources add fast-datapath.toml
$ sudo composer-cli sources add fast-datapath.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令确认源是否已正确添加:
sudo composer-cli sources list
$ sudo composer-cli sources list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
appstream baseos fast-datapath rhocp-4.18
appstream baseos fast-datapath rhocp-4.18
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3. 将 MicroShift 服务添加到蓝图中 复制链接链接已复制到粘贴板!
将 MicroShift RPM 软件包添加到镜像构建器蓝图中可启用使用 MicroShift 嵌入的 RHEL for Edge 镜像构建。
- 从第 1 步开始,创建自己的最小蓝图文件,从而加快 MicroShift 安装的速度。
从第 2 步开始,使用生成的蓝图进行安装,其中包括所有 RPM 软件包和容器镜像。这是一个较长的安装过程,但启动速度会加快,因为容器引用在本地访问。
重要-
将以下流程中的 <
microshift_blueprint.toml
> 替换为您要使用的 TOML 文件的名称。 -
将以下流程中的 &
lt;microshift_blueprint
> 替换为您要用于蓝图的名称。
-
将以下流程中的 <
流程
使用以下示例创建自己的蓝图文件:
自定义镜像构建器蓝图示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选。使用安装在您的平台架构的
/usr/share/microshift/blueprint
目录中安装的蓝图。有关蓝图部分的说明,请参见以下示例片断:生成的镜像构建器蓝图示例片断
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将蓝图添加到镜像构建器中:
sudo composer-cli blueprints push <microshift_blueprint.toml>
$ sudo composer-cli blueprints push <microshift_blueprint.toml>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<microshift_blueprint.toml
> 替换为 TOML 文件的名称。
验证
运行以下命令,验证镜像构建器配置只列出 MicroShift 软件包:
sudo composer-cli blueprints depsolve <microshift_blueprint> | grep microshift
$ sudo composer-cli blueprints depsolve <microshift_blueprint> | grep microshift
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<microshift_blueprint
> 替换为蓝图的名称。
输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:通过运行以下命令验证镜像构建器配置列出了要安装的所有组件:
sudo composer-cli blueprints depsolve <microshift_blueprint>
$ sudo composer-cli blueprints depsolve <microshift_blueprint>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<microshift_blueprint
> 替换为蓝图的名称。
1.4. 在蓝图中添加其他软件包 复制链接链接已复制到粘贴板!
将可选 RPM 软件包的引用添加到您的 ostree
蓝图中以启用它们。
先决条件
- 您创建了镜像构建器蓝图文件。
流程
运行以下命令来编辑
ostree
蓝图:vi <microshift_blueprint.toml>
$ vi <microshift_blueprint.toml>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<microshift_blueprint.toml
> 替换为用于 MicroShift 服务的蓝图文件的名称。
在蓝图中添加以下示例文本:
[[packages]] name = "<microshift-additional-package-name>" version = "*"
[[packages]]
1 name = "<microshift-additional-package-name>"
2 version = "*"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
- 根据需要,将自定义证书颁发机构添加到蓝图中。
将清单添加到蓝图后,您可以通过构建新的
ostree
系统并在客户端上部署它,将清单应用到活跃集群:- 创建 ISO。
- 添加蓝图并构建 ISO。
- 下载 ISO 并做好使用准备。
- 执行所需的任何调配。
1.5. 添加证书颁发机构捆绑包 复制链接链接已复制到粘贴板!
MicroShift 在客户端评估服务器证书时使用主机信任捆绑包。您还可以使用自定义安全证书链提高端点证书与特定于部署的客户端的兼容性。要做到这一点,您可以将带有 root 和中间证书的证书颁发机构(CA)捆绑包添加到 Red Hat Enterprise Linux for Edge (RHEL for Edge)系统范围的信任存储中。
1.5.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"
[[customizations.directories]] path = "/etc/pki/ca-trust/source/anchors"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 镜像引导后,创建证书捆绑包,例如
/etc/pki/ca-trust/source/anchors/cert1.pem
:[[customizations.files]] path = "/etc/pki/ca-trust/source/anchors/cert1.pem" data = "<value>"
[[customizations.files]] path = "/etc/pki/ca-trust/source/anchors/cert1.pem" data = "<value>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要在系统范围的信任存储配置中启用证书捆绑包,请在您使用的镜像的主机中使用
update-ca-trust
命令,例如:sudo update-ca-trust
$ sudo update-ca-trust
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
%post
# Update certificate trust storage in case new certificates were
# installed at /etc/pki/ca-trust/source/anchors directory
update-ca-trust
%end
1.6. 创建 RHEL for Edge 镜像 复制链接链接已复制到粘贴板!
使用以下步骤创建 ISO。RHEL for Edge Installer 镜像从正在运行的容器拉取提交,并创建一个带有配置为使用嵌入的 rpm-ostree
提交的 Kickstart 文件的可安装的引导 ISO。
先决条件
- 您的构建主机满足 Image Builder 系统要求。
-
已安装并设置 Image Builder 和
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 '{print $2}')
$ BUILDID=$(sudo composer-cli compose start-ostree --ref "rhel/{op-system-version-major}/$(uname -m)/edge" <microshift_blueprint> edge-container | awk '{print $2}')
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<microshift_blueprint
> 替换为蓝图的名称。
此命令还会返回用于监控构建的标识(ID)。
您可以运行以下命令来定期检查构建的状态:
sudo composer-cli compose status
$ sudo composer-cli compose status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 正在运行的构建的输出示例
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 RUNNING Wed Jun 7 12:26:23 2023 microshift_blueprint 0.0.1 edge-container
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 已完成的构建的输出示例
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
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 Copied! Toggle word wrap Toggle overflow 注意如果您熟悉如何启动和停止构建,您可以使用
watch
命令来监控您的构建。运行以下命令,使用 ID 下载容器镜像并使镜像可供使用:
sudo composer-cli compose image ${BUILDID}
$ sudo composer-cli compose image ${BUILDID}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将下载的容器镜像的所有权更改为当前用户:
sudo chown $(whoami). ${BUILDID}-container.tar
$ sudo chown $(whoami). ${BUILDID}-container.tar
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将当前用户的读取权限添加到镜像中:
sudo chmod a+r ${BUILDID}-container.tar
$ sudo chmod a+r ${BUILDID}-container.tar
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过完成以下步骤,在端口 8085 上引导要被 ISO 构建使用的
ostree
容器镜像的服务器:运行以下命令来获取
IMAGEID
变量结果:IMAGEID=$(cat < "./${BUILDID}-container.tar" | sudo podman load | grep -o -P '(?<=sha256[@:])[a-z0-9]*')
$ IMAGEID=$(cat < "./${BUILDID}-container.tar" | sudo podman load | grep -o -P '(?<=sha256[@:])[a-z0-9]*')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用
IMAGEID
变量结果来执行 podman 命令步骤:sudo podman run -d --name=minimal-microshift-server -p 8085:8080 ${IMAGEID}
$ sudo podman run -d --name=minimal-microshift-server -p 8085:8080 ${IMAGEID}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令还会返回保存在
IMAGEID
变量中用于监控的容器 ID。
运行以下命令来生成安装程序蓝图文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7. 将蓝图添加到镜像构建器并构建 ISO 复制链接链接已复制到粘贴板!
运行以下命令,将蓝图添加到镜像构建器中:
sudo composer-cli blueprints push microshift-installer.toml
$ sudo composer-cli blueprints push microshift-installer.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令启动
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}')
$ 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 Copied! Toggle word wrap Toggle overflow 此命令还会返回用于监控构建的标识(ID)。
您可以运行以下命令来定期检查构建的状态:
sudo composer-cli compose status
$ sudo composer-cli compose status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 正在运行的构建的输出示例
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 RUNNING Wed Jun 7 13:22:20 2023 microshift-installer 0.0.0 edge-installer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 已完成的构建的输出示例
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
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 Copied! Toggle word wrap Toggle overflow
1.8. 下载 ISO 并为使用做准备 复制链接链接已复制到粘贴板!
运行以下命令,使用 ID 下载 ISO:
sudo composer-cli compose image ${BUILDID}
$ sudo composer-cli compose image ${BUILDID}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将下载的容器镜像的所有权更改为当前用户:
sudo chown $(whoami). ${BUILDID}-installer.iso
$ sudo chown $(whoami). ${BUILDID}-installer.iso
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将当前用户的读取权限添加到镜像中:
sudo chmod a+r ${BUILDID}-installer.iso
$ sudo chmod a+r ${BUILDID}-installer.iso
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.9. 为 MicroShift 置备机器 复制链接链接已复制到粘贴板!
使用 RHEL for Edge 文档中的流程置备带有 RHEL for Edge 镜像的机器。
要使用 MicroShift,您必须置备系统,使其满足以下要求:
- 您调配的计算机必须满足安装 MicroShift 的系统要求。
- 文件系统必须有一个逻辑卷管理器 (LVM) 卷组 (VG),且对工作负载的持久性卷 (PV) 有足够的容量。
-
Red Hat Hybrid Cloud Console 中的 pull secret 必须显示为
/etc/crio/openshift-pull-secret
,并具有 root 用户只读读/写权限。 - 防火墙必须配置有所需的设置。
如果您使用 Kickstart,如 RHEL for Edge Installer (ISO)镜像,您可以更新 Kickstart 文件来满足置备要求。
先决条件
您已创建了包含带有 MicroShift 的 RHEL for Edge 提交的 RHEL for Edge Installer (ISO)镜像。
- 这个要求包括制作 RFE 容器镜像的步骤、创建 RFE 安装程序蓝图、启动 RFE 容器以及制作 RFE 安装程序镜像。
创建一个 Kickstart 文件或使用现有的。在 Kickstart 文件中,您必须包括:
- 有关如何创建用户的详细信息。
- 如何获取和部署 RHEL for Edge 镜像。
如需更多信息,请参阅"附加资源"。
流程
在 Kickstart 文件的主部分中,更新文件系统的设置,使其包含名为
rhel
的 LVM 卷组,至少有 10GB 系统 root。LVMS CSI 驱动程序保留可用空间,用于存储您的工作负载的数据。用于配置文件系统的 kickstart 片段示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Kickstart 文件的
%post
部分中,添加您的 pull secret 和强制防火墙规则。添加 pull secret 和防火墙规则的 Kickstart 片断示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令安装
mkksiso
工具:sudo yum install -y lorax
$ sudo yum install -y lorax
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用新的 Kickstart 文件更新 ISO 中的 Kickstart 文件:
sudo mkksiso <your_kickstart>.ks <your_installer>.iso <updated_installer>.iso
$ sudo mkksiso <your_kickstart>.ks <your_installer>.iso <updated_installer>.iso
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.10. 如何访问 MicroShift 集群 复制链接链接已复制到粘贴板!
使用本节中的步骤,通过 OpenShift CLI (oc
)访问 MicroShift 集群。
- 您可以从运行 MicroShift 服务的同一机器或从远程位置访问集群。
- 您可以使用此访问权限来观察和管理工作负载。
-
在执行以下步骤时,选择包含您要连接的主机名或 IP 地址的
kubeconfig
文件,并将其放在相关目录中。
1.10.1. 本地访问 MicroShift 集群 复制链接链接已复制到粘贴板!
使用以下步骤,使用 kubeconfig
文件在本地访问 MicroShift 集群。
先决条件
-
已安装
oc
二进制文件。
流程
可选:如果您的 Red Hat Enterprise Linux (RHEL)机器没有
~/.kube/
文件夹,请运行以下命令:mkdir -p ~/.kube/
$ mkdir -p ~/.kube/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将生成的本地访问
kubeconfig
文件复制到~/.kube/
目录中:sudo cat /var/lib/microshift/resources/kubeadmin/kubeconfig > ~/.kube/config
$ sudo cat /var/lib/microshift/resources/kubeadmin/kubeconfig > ~/.kube/config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令更新
~/.kube/config
文件的权限:chmod go-r ~/.kube/config
$ chmod go-r ~/.kube/config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
输入以下命令验证 MicroShift 是否正在运行:
oc get all -A
$ oc get all -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.10.2. 打开防火墙以远程访问 MicroShift 集群 复制链接链接已复制到粘贴板!
使用以下步骤打开防火墙,以便远程用户可以访问 MicroShift 集群。必须在 workstation 用户可以访问集群前完成此步骤。
对于此过程,user@microshift
是 MicroShift 主机上的用户,负责设置该机器,使其可以被单独的工作站上的远程用户访问。
先决条件
-
已安装
oc
二进制文件。 - 您的帐户具有集群管理特权。
流程
在 MicroShift 主机上以
user@microshift
的身份,运行以下命令来打开 Kubernetes API 服务器的防火墙端口 (6443/tcp
):sudo firewall-cmd --permanent --zone=public --add-port=6443/tcp && sudo firewall-cmd --reload
[user@microshift]$ sudo firewall-cmd --permanent --zone=public --add-port=6443/tcp && sudo firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
以
user@microshift
的身份,输入以下命令验证 MicroShift 是否正在运行:oc get all -A
[user@microshift]$ oc get all -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.10.3. 远程访问 MicroShift 集群 复制链接链接已复制到粘贴板!
使用以下步骤,使用 kubeconfig
文件从远程位置访问 MicroShift 集群。
user@workstation
登录用于远程访问主机计算机。该流程中的 <user>
值是 user@workstation
登录到 MicroShift 主机所使用的用户名。
先决条件
-
已安装
oc
二进制文件。 -
user@microshift
已打开来自本地主机的防火墙。
流程
以
user@workstation
的身份,如果 Red Hat Enterprise Linux (RHEL)机器没有,使用以下命令创建一个~/.kube/
文件夹:mkdir -p ~/.kube/
[user@workstation]$ mkdir -p ~/.kube/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
user@workstation
的身份,运行以下命令来为您的 MicroShift 主机的主机名设置变量:MICROSHIFT_MACHINE=<name or IP address of MicroShift machine>
[user@workstation]$ MICROSHIFT_MACHINE=<name or IP address of MicroShift machine>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
user@workstation
的身份,运行以下命令来复制生成的kubeconfig
文件,该文件包含您要从运行 MicroShift 的 RHEL 机器连接到本地机器的主机名或 IP 地址:ssh <user>@$MICROSHIFT_MACHINE "sudo cat /var/lib/microshift/resources/kubeadmin/$MICROSHIFT_MACHINE/kubeconfig" > ~/.kube/config
[user@workstation]$ ssh <user>@$MICROSHIFT_MACHINE "sudo cat /var/lib/microshift/resources/kubeadmin/$MICROSHIFT_MACHINE/kubeconfig" > ~/.kube/config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要为此步骤生成
kubeconfig
文件,请参阅为远程访问生成额外的 kubeconfig 文件。以
user@workstation
的身份,运行以下命令来更新~/.kube/config
文件的权限:chmod go-r ~/.kube/config
$ chmod go-r ~/.kube/config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
以
user@workstation
的身份,输入以下命令验证 MicroShift 是否正在运行:oc get all -A
[user@workstation]$ oc get all -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 2 章 为断开连接的安装 mirror 容器镜像 复制链接链接已复制到粘贴板!
在断开连接的网络中部署 MicroShift 时,您可以使用自定义容器 registry。可以在没有直接互联网连接的受限网络中运行集群,方法是从私有 registry 中的镜像的容器镜像安装集群。
2.1. 将容器镜像镜像到现有 registry 中 复制链接链接已复制到粘贴板!
使用自定义 air-gapped 容器 registry 或镜像(mirror)是某些用户环境和工作负载要求所必需的。镜像功能允许向 air-gapped 环境传输容器镜像和更新,可在 MicroShift 实例上安装它们。
要为 MicroShift 容器创建 air-gapped 镜像 registry,您必须完成以下步骤:
- 获取要镜像的容器镜像列表。
- 配置镜像先决条件。
- 在可访问互联网的主机上下载镜像。
- 将下载的镜像目录复制到 air-gapped 站点。
- 将镜像上传到 air-gapped 站点中的镜像 registry。
- 将 MicroShift 主机配置为使用镜像 registry。
2.2. 获取镜像 registry 容器镜像列表 复制链接链接已复制到粘贴板!
要使用镜像 registry,您必须知道哪些容器镜像引用由 MicroShift 的特定版本使用。这些引用在作为 microshift
文件中提供。
-release-info
RPM 软件包一部分的 release-<arch>.json
要在断开连接的环境中镜像 Operator Lifecycle Manager (OLM),请添加 release-olm-$ARCH.json
中提供的引用,该引用包含在 microshift-olm
RPM 中,并按照相同的流程操作。使用 oc-mirror
来镜像 Operator 目录和 Operator。
先决条件
- 已安装 jq。
流程
使用以下方法之一访问容器镜像引用列表:
如果在 MicroShift 主机上安装了软件包,请运行以下命令获取文件的位置:
rpm -ql microshift-release-info
$ rpm -ql microshift-release-info
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
/usr/share/microshift/release/release-x86_64.json
/usr/share/microshift/release/release-x86_64.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 MicroShift 主机上没有安装该软件包,请运行以下命令在不安装 RPM 软件包的情况下下载并解包 RPM 软件包:
rpm2cpio microshift-release-info*.noarch.rpm | cpio -idmv
$ rpm2cpio microshift-release-info*.noarch.rpm | cpio -idmv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
/usr/share/microshift/release/release-x86_64.json
/usr/share/microshift/release/release-x86_64.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令,将容器镜像列表提取到
microshift-container-refs.txt
文件中:RELEASE_FILE=/usr/share/microshift/release/release-$(uname -m).json
$ RELEASE_FILE=/usr/share/microshift/release/release-$(uname -m).json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow jq -r '.images | .[]' ${RELEASE_FILE} > microshift-container-refs.txt
$ jq -r '.images | .[]' ${RELEASE_FILE} > microshift-container-refs.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 MicroShift 容器镜像列表创建 microshift-container-refs.txt
文件后,您可以在运行镜像步骤前附加文件与其他特定于用户的镜像引用。
2.3. 配置镜像先决条件 复制链接链接已复制到粘贴板!
您必须创建一个容器镜像 registry 凭证文件,该文件允许从互联网连接的镜像镜像到您的 air-gapped 镜像。按照"配置凭证"部分中提供的镜像"添加资源"链接中的说明进行操作。这些说明指导您在镜像 registry 主机上创建 ~/.pull-secret-mirror.json
文件,其中包含用于访问镜像的用户凭证。
2.3.1. mirror registry pull secret 条目示例 复制链接链接已复制到粘贴板!
例如,以下部分添加到 microshift_quay:8443
镜像 registry 的 pull secret 文件中,该文件使用 microshift:microshift
作为用户名和密码。
pull secret 文件的 mirror registry 部分示例
"<microshift_quay:8443>": { "auth": "<microshift_auth>", "email": "<microshift_quay@example.com>" },
"<microshift_quay:8443>": {
"auth": "<microshift_auth>",
"email": "<microshift_quay@example.com>"
},
2.4. 下载容器镜像 复制链接链接已复制到粘贴板!
找到容器列表并完成镜像先决条件后,将容器镜像下载到具有互联网访问的主机。
先决条件
- 通过访问互联网登录到主机。
-
您已确保
.pull-secret-mirror.json
文件和microshift-containers
目录的内容在本地可用。
流程
运行以下命令,安装用于复制容器镜像的
skopeo
工具:sudo dnf install -y skopeo
$ sudo dnf install -y skopeo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置指向 pull secret 文件的环境变量:
PULL_SECRET_FILE=~/.pull-secret-mirror.json
$ PULL_SECRET_FILE=~/.pull-secret-mirror.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置指向容器镜像列表的环境变量:
IMAGE_LIST_FILE=~/microshift-container-refs.txt
$ IMAGE_LIST_FILE=~/microshift-container-refs.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置指向用于存储下载数据的目标目录的环境变量:
IMAGE_LOCAL_DIR=~/microshift-containers
$ IMAGE_LOCAL_DIR=~/microshift-containers
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下脚本,将容器镜像下载到
${IMAGE_LOCAL_DIR}
目录中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将镜像集传送到目标环境,如 air-gapped 站点。然后,您可以将镜像集上传到镜像 registry 中。
2.5. 将容器镜像上传到镜像 registry 复制链接链接已复制到粘贴板!
要在 air-gapped 站点中使用容器镜像,请按照以下步骤将其上传到镜像 registry。
先决条件
-
通过访问
microshift-quay
登录主机。 -
.pull-secret-mirror.json
文件在本地可用。 -
microshift-containers
目录内容在本地可用。
流程
运行以下命令,安装用于复制容器镜像的
skopeo
工具:sudo dnf install -y skopeo
$ sudo dnf install -y skopeo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置指向 pull secret 文件的环境变量:
IMAGE_PULL_FILE=~/.pull-secret-mirror.json
$ IMAGE_PULL_FILE=~/.pull-secret-mirror.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置指向本地容器镜像目录的环境变量:
IMAGE_LOCAL_DIR=~/microshift-containers
$ IMAGE_LOCAL_DIR=~/microshift-containers
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置指向镜像 registry URL 的环境变量,以上传容器镜像:
TARGET_REGISTRY=<registry_host>:<port>
$ TARGET_REGISTRY=<registry_host>:<port>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<registry_host>
:<port> 替换为镜像 registry 服务器的主机名和端口。
运行以下脚本,将容器镜像上传到
${TARGET_REGISTRY}
镜像 registry:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6. 配置主机以进行镜像 registry 访问 复制链接链接已复制到粘贴板!
要将 MicroShift 主机配置为使用镜像 registry,您必须通过创建一个配置文件来将红帽 registry 主机名映射到镜像(mirror)来提供 MicroShift 主机对 registry 的访问。
先决条件
- 您的镜像主机可访问互联网。
- 镜像主机可以访问镜像 registry。
- 您已配置了镜像 registry 以在受限网络中使用。
- 您下载了 pull secret,并将其修改为包含镜像存储库的身份验证。
流程
- 登录到您的 MicroShift 主机。
通过完成以下步骤,在访问镜像 registry 的任何主机上启用 SSL 证书信任:
-
将
rootCA.pem
文件从镜像 registry (如 <registry_path>/quay-rootCA
)复制到/etc/pki/ca-trust/source/anchors
目录中的 MicroShift 主机。 运行以下命令,在系统范围的信任存储配置中启用证书:
sudo update-ca-trust
$ sudo update-ca-trust
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将
创建
/etc/containers/registries.conf.d/999-microshift-mirror.conf
配置文件,将红帽 registry 主机名映射到镜像 registry:镜像配置文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<registry_host>:<port
> 替换为镜像 registry 服务器的主机名和端口,例如 <microshift-quay:8443
>。
运行以下命令来启用 MicroShift 服务:
sudo systemctl enable microshift
$ sudo systemctl enable microshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来重启主机:
sudo reboot
$ sudo reboot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 3 章 嵌入在 RHEL for Edge 镜像中供离线使用 复制链接链接已复制到粘贴板!
在 rpm-ostree
提交中嵌入 MicroShift 容器意味着您可以在 air-gapped、断开连接或离线环境中运行集群。您可以在 Red Hat Enterprise Linux for Edge (RHEL for Edge)镜像中嵌入 MicroShift 容器,以便容器引擎不需要从容器 registry 通过网络拉取镜像。工作负载可以在不网络连接的情况下立即启动。
3.1. 为离线部署嵌入 MicroShift 容器 复制链接链接已复制到粘贴板!
您可以使用镜像构建器创建带有嵌入式 MicroShift 容器镜像的 rpm-ostree
系统镜像。要嵌入容器镜像,您必须将镜像引用添加到镜像构建器蓝图中。
先决条件
- 您有访问构建主机的 root-user 访问权限。
- 您的构建主机满足镜像构建器系统要求。
-
已安装并设置镜像构建器和
composer-cli
工具。 - 您已创建了 RHEL for Edge 镜像蓝图。
- 已安装 jq。
流程
-
获取您要部署的 MicroShift 版本使用的容器镜像引用列表。您可以按照以下步骤 2 来安装
microshift-release-info
RPM 软件包,或按照以下步骤下载并解包 RPM。 安装
microshift-release-info
RPM 软件包:运行以下命令安装
microshift-release-info
RPM 软件包:sudo dnf install -y microshift-release-info-<release_version>
$ sudo dnf install -y microshift-release-info-<release_version>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用整个版本号(如
4.18.1
)将 <release_version
> 替换为您要部署的发行版本的数字值。运行以下命令,列出
/usr/share/microshift/release
目录的内容,以验证发行信息文件是否存在:ls /usr/share/microshift/release
$ ls /usr/share/microshift/release
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
release-x86_64.json release-aarch64.json
release-x86_64.json release-aarch64.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果安装了
microshift-release-info
RPM,您可以继续第 4 步。
如果您没有完成第 2 步,请下载并解包
microshift-release-info
RPM,而不安装它:运行以下命令来下载 RPM 软件包:
sudo dnf download microshift-release-info-<release_version>
$ sudo dnf download microshift-release-info-<release_version>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用整个版本号(如
4.18.1
)将 <release_version
> 替换为您要部署的发行版本的数字值。rpm 示例
microshift-release-info-4.18.1.*.el9.noarch.rpm
microshift-release-info-4.18.1.*.el9.noarch.rpm
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
*
代表日期和时间 ID。您的输出应同时包含,如-202511101230.p0.g7dc6a00.assembly.4.18.1
。
运行以下命令解包 RPM 软件包而不安装它:
rpm2cpio <my_microshift_release_info> | cpio -idmv
$ 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 Copied! Toggle word wrap Toggle overflow - 1
- 将
<my_microshift_release_info
> 替换为上一步中的 RPM 软件包的名称。
运行以下命令,定义包含容器引用信息的 JSON 文件的位置:
RELEASE_FILE=</path/to/your/release-$(uname -m).json>
$ RELEASE_FILE=</path/to/your/release-$(uname -m).json>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
</path/to/your/release-$(uname -m).json
> 替换为 JSON 文件的完整路径。请务必使用您的架构所需的文件。运行以下命令,定义 TOML 文件的位置,其中包含构建镜像的说明:
BLUEPRINT_FILE=</path/to/your/blueprint.toml>
$ BLUEPRINT_FILE=</path/to/your/blueprint.toml>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
</path/to/your/blueprint.toml
> 替换为 JSON 文件的完整路径。运行以下命令,生成并嵌入蓝图 TOML 文件中的容器镜像引用:
jq -r '.images | .[] | ("[[containers]]\nsource = \"" + . + "\"\n")' "${RELEASE_FILE}" >> "${BLUEPRINT_FILE}"
$ jq -r '.images | .[] | ("[[containers]]\nsource = \"" + . + "\"\n")' "${RELEASE_FILE}" >> "${BLUEPRINT_FILE}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示容器引用的
<my_blueprint.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 = "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 Copied! Toggle word wrap Toggle overflow 您可以使用以下示例将其添加到镜像构建器蓝图中手动嵌入任何容器镜像:
将容器镜像手动嵌入到镜像构建器的示例
[[containers]] source = "<my_image_pullspec_with_tag_or_digest>"
[[containers]] source = "<my_image_pullspec_with_tag_or_digest>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<my_image_pullspec_with_tag_or_digest
> 替换为您要部署的 MicroShift 版本所使用的容器镜像的确切引用。
3.2. 更新 osbuilder worker 配置以准备镜像构建 复制链接链接已复制到粘贴板!
更新蓝图后,您必须更新 osbuilder worker 配置,以准备使用嵌入式 MicroShift 容器构建镜像。
先决条件
- 您有访问构建主机的 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
osbuilder worker 配置文件的[containers]
部分中设置auth_file_path
来添加用于向 registry 进行身份验证的 pull secret:[containers] auth_file_path = "/etc/osbuild-worker/pull-secret.json"
[containers] auth_file_path = "/etc/osbuild-worker/pull-secret.json"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
重启
osbuild-worker
,以通过重启主机来应用配置更改。重启主机可确保当前运行的所有osbuild-worker
服务都已重启。
3.3. 构建并使用 rpm-ostree 镜像进行离线部署 复制链接链接已复制到粘贴板!
您可以使用镜像构建器创建带有嵌入式 MicroShift 容器镜像的 rpm-ostree
系统镜像。要嵌入容器镜像,您必须将镜像引用添加到镜像构建器蓝图中。您可以根据您的用例需要创建提交和 ISO。
将此处列出的先决条件添加到以下流程中包含的先决条件中。
3.3.1. 离线部署的额外先决条件 复制链接链接已复制到粘贴板!
- 您已创建了并更新了 RHEL for Edge 镜像蓝图以供离线使用。以下流程使用通过容器镜像创建的蓝图示例。您必须使用在 "Embedding MicroShift 容器中为离线部署"中创建的更新的蓝图。
-
您已更新了
/etc/osbuild-worker/osbuild-worker.toml
配置文件,以离线使用。
将以下流程中的 minimal-microshift.toml
替换为您更新的 TOML 的名称,以便离线使用 <my_blueprint_name>。
3.3.2. 将 MicroShift 服务添加到蓝图中 复制链接链接已复制到粘贴板!
将 MicroShift RPM 软件包添加到镜像构建器蓝图中可启用使用 MicroShift 嵌入的 RHEL for Edge 镜像构建。
- 从第 1 步开始,创建自己的最小蓝图文件,从而加快 MicroShift 安装的速度。
从第 2 步开始,使用生成的蓝图进行安装,其中包括所有 RPM 软件包和容器镜像。这是一个较长的安装过程,但启动速度会加快,因为容器引用在本地访问。
重要-
将以下流程中的 <
microshift_blueprint.toml
> 替换为您要使用的 TOML 文件的名称。 -
将以下流程中的 &
lt;microshift_blueprint
> 替换为您要用于蓝图的名称。
-
将以下流程中的 <
流程
使用以下示例创建自己的蓝图文件:
自定义镜像构建器蓝图示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选。使用安装在您的平台架构的
/usr/share/microshift/blueprint
目录中安装的蓝图。有关蓝图部分的说明,请参见以下示例片断:生成的镜像构建器蓝图示例片断
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将蓝图添加到镜像构建器中:
sudo composer-cli blueprints push <microshift_blueprint.toml>
$ sudo composer-cli blueprints push <microshift_blueprint.toml>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<microshift_blueprint.toml
> 替换为 TOML 文件的名称。
验证
运行以下命令,验证镜像构建器配置只列出 MicroShift 软件包:
sudo composer-cli blueprints depsolve <microshift_blueprint> | grep microshift
$ sudo composer-cli blueprints depsolve <microshift_blueprint> | grep microshift
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<microshift_blueprint
> 替换为蓝图的名称。
输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:通过运行以下命令验证镜像构建器配置列出了要安装的所有组件:
sudo composer-cli blueprints depsolve <microshift_blueprint>
$ sudo composer-cli blueprints depsolve <microshift_blueprint>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<microshift_blueprint
> 替换为蓝图的名称。
3.3.3. 创建 RHEL for Edge 镜像 复制链接链接已复制到粘贴板!
使用以下步骤创建 ISO。RHEL for Edge Installer 镜像从正在运行的容器拉取提交,并创建一个带有配置为使用嵌入的 rpm-ostree
提交的 Kickstart 文件的可安装的引导 ISO。
先决条件
- 您的构建主机满足 Image Builder 系统要求。
-
已安装并设置 Image Builder 和
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 '{print $2}')
$ BUILDID=$(sudo composer-cli compose start-ostree --ref "rhel/{op-system-version-major}/$(uname -m)/edge" <microshift_blueprint> edge-container | awk '{print $2}')
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<microshift_blueprint
> 替换为蓝图的名称。
此命令还会返回用于监控构建的标识(ID)。
您可以运行以下命令来定期检查构建的状态:
sudo composer-cli compose status
$ sudo composer-cli compose status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 正在运行的构建的输出示例
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 RUNNING Wed Jun 7 12:26:23 2023 microshift_blueprint 0.0.1 edge-container
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 已完成的构建的输出示例
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
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 Copied! Toggle word wrap Toggle overflow 注意如果您熟悉如何启动和停止构建,您可以使用
watch
命令来监控您的构建。运行以下命令,使用 ID 下载容器镜像并使镜像可供使用:
sudo composer-cli compose image ${BUILDID}
$ sudo composer-cli compose image ${BUILDID}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将下载的容器镜像的所有权更改为当前用户:
sudo chown $(whoami). ${BUILDID}-container.tar
$ sudo chown $(whoami). ${BUILDID}-container.tar
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将当前用户的读取权限添加到镜像中:
sudo chmod a+r ${BUILDID}-container.tar
$ sudo chmod a+r ${BUILDID}-container.tar
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过完成以下步骤,在端口 8085 上引导要被 ISO 构建使用的
ostree
容器镜像的服务器:运行以下命令来获取
IMAGEID
变量结果:IMAGEID=$(cat < "./${BUILDID}-container.tar" | sudo podman load | grep -o -P '(?<=sha256[@:])[a-z0-9]*')
$ IMAGEID=$(cat < "./${BUILDID}-container.tar" | sudo podman load | grep -o -P '(?<=sha256[@:])[a-z0-9]*')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用
IMAGEID
变量结果来执行 podman 命令步骤:sudo podman run -d --name=minimal-microshift-server -p 8085:8080 ${IMAGEID}
$ sudo podman run -d --name=minimal-microshift-server -p 8085:8080 ${IMAGEID}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令还会返回保存在
IMAGEID
变量中用于监控的容器 ID。
运行以下命令来生成安装程序蓝图文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow