跳过至主要内容

一个带有“bootc”标签的文章

查看所有标签

使用 Podman 桌面创建 MicroShift 可启动镜像

·阅读时间:7 分钟
Charlie Drage
软件工程师

banner

如果您不熟悉 BootC,它提供了一种令人印象深刻的方法,可以从单个 Containerfile 或预先存在的 bootc 支持的镜像直接将应用程序部署到裸机。

一个“可启动”镜像,称为 BootC 容器镜像,允许您使用简单的容器镜像创建完整的可启动操作系统,无论是 raw 虚拟机镜像还是用于 USB 安装的 iso

这种功能非常适合各种用途,从简单的 HTTP 服务器到为全栈应用程序供电的操作系统。

在本教程中,我们将部署一个名为 MicroShift 的 OpenShift 派生版本,它是 OpenShift 的边缘优化版本,专为资源受限配置的单节点设置而设计。可以把它看作 OpenShift 的精简版!

整个过程都是使用单个 Containerfile(或 Dockerfile)完成的。

要求

在开始本教程之前,请确保您拥有

构建 BootC 容器镜像

首先,我们将从初始 BootC 容器镜像构建,稍后我们将使用它创建可启动操作系统。

登录 Red Hat 注册表

在继续之前,请从目录中下载 Red Hat 身份验证扩展,以启用对 Red Hat 注册表的访问

red hat login

然后登录您的帐户

red hat login sign in

下载您的 OpenShift Hybrid Cloud 拉取密钥

下载您的 拉取密钥

它将以 pull-secret.txt 的形式下载。将其放在安全位置。

创建 Containerfile(或 Dockerfile)

Containerfile 对创建可启动镜像至关重要。

重要的是要注意,我们在构建过程中将提供 *一个* 参数,即 **密码**,以便访问将通过 redhat 用户名登录的虚拟机。

我们将使用来自 MicroShift 镜像模式 GitHub 文档 的 Containerfile。

将 Containerfile 从上述链接复制到一个新文件,我们将在 Podman 桌面中使用它来构建。

$ curl https://raw.githubusercontent.com/openshift/microshift/main/docs/config/Containerfile.bootc-rhel9 -o Containerfile

使用 Podman 桌面构建

选择 Containerfile 并在 Podman 桌面中进行构建。

您需要提供

  • 用于在 Containerfile 中创建的 redhat 用户的密码。

在构建页面参数中将参数作为 USER_PASSWD 传递。

build

使用 BootC Podman 桌面扩展构建可启动镜像

安装

从扩展目录中安装 BootC Podman 桌面扩展

install

构建镜像

现在,从我们的容器镜像创建可启动镜像!

单击导航栏上的新 BootC 图标,然后转到构建

build_button

构建完成后,您将在仪表板上看到确认信息。

接下来,选择我们构建的镜像,并选择适合的输出格式以测试可启动镜像。**RAW** 是在本地使用 QEMU 和其他 VM 软件(如 libvirt)进行测试的常见选择。

测试镜像

探索各种方法来测试您的镜像,可以使用本地软件或云平台。以下是一些使用 **RAW** 输出可启动镜像的常见步骤。

运行虚拟机

本指南不涵盖运行虚拟机的所有方法,但以下是最常见的

使用 Hyper-V 时,使用 BootC 创建 .vhd 镜像

  1. 构建时,选择 .vhd 选项。
  2. 安装 Hyper-V
  3. 导入虚拟机

配置和验证 MicroShift

启动虚拟机后,您现在可以配置 MicroShift 并验证连接。

复制 OpenShift 拉取密钥

在继续验证 OpenShift 之前,必须复制 OpenShift 拉取密钥,以便 MicroShift 可以下载 Red Hat 注册表身份验证的容器镜像。

下面我们将把您之前下载的 OpenShift 密钥复制到虚拟机。

  1. 下载您的 OpenShift 拉取密钥,它将以 pull-secret.txt 的形式下载

  2. 使用 scp 复制到虚拟机

$ scp -P 2222 pull-secret.txt redhat@localhost:~/
  1. SSH 登录 VM
$ ssh redhat@localhost -p 2222
  1. 将密钥移至 /etc/crio/openshift-pull-secret
$ sudo mv pull-secret.txt /etc/crio/openshift-pull-secret
  1. 重启 microshift 服务
$ sudo systemctl restart microshift

列出 Pod

下面我们将 SSH 登录到虚拟机,并确认 MicroShift 是否正在正确部署 Pod

  1. SSH 登录 VM
$ ssh redhat@localhost -p 2222
  1. 将生成的 kubeconfig 文件复制到 ~/.kube/config
$ mkdir -p ~/.kube
$ sudo cp /var/lib/microshift/resources/kubeadmin/kubeconfig ~/.kube/config
$ sudo chown redhat ~/.kube/config
  1. 使用 ockubectl 验证 Pod 是否正在运行
$ kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system csi-snapshot-controller-856bb8b9bc-9n7lj 1/1 Running 1 3d23h
kube-system csi-snapshot-webhook-7c64d4d4d7-98v6l 1/1 Running 1 3d23h
openshift-dns dns-default-n2td4 2/2 Running 2 3d23h
openshift-dns node-resolver-7cslg 1/1 Running 1 3d23h
openshift-ingress router-default-7cbc67954b-nqqc6 1/1 Running 1 3d23h
openshift-ovn-kubernetes ovnkube-master-zcqw5 4/4 Running 5 3d23h
openshift-ovn-kubernetes ovnkube-node-crnn9 1/1 Running 2 3d23h
openshift-service-ca service-ca-6799f567-k7lsc 1/1 Running 1 3d23h

使用 Podman 桌面验证 MicroShift

或者,您可以将 MicroShift 配置文件复制到本地机器,并在 Podman 桌面中远程测试它。

  1. 在本地机器上,如果不存在,则创建 .kube 目录
$ mkdir ~/.kube
  1. 将远程 kubeconfig 文件复制到本地配置文件

在 MicroShift 中,kubeconfig 文件会自动创建在 /var/lib/microshift/resources/kubeadmin/kubeconfig 中。

将文件复制到本地系统

scp -P 2222 redhat@localhost:/var/lib/microshift/resources/kubeadmin/kubeconfig ~/config

如果您已经有 ~/.kube/config,请将 config 的内容复制到 ~/.kube/config 文件中。

  1. 使用 Podman 桌面验证 MicroShift 集群

Podman 桌面会自动检测您的 .kube/config 文件。

注意:您可能需要修改 .kube/config 文件以反映集群的正确域名或 IP 地址。

cluster

存储配置

默认情况下,存储配置 需要 LVM 分区,并且不会部署 LVMS 存储管理器。这是因为在构建 RAW 镜像时存在限制。需要替代的非本地存储解决方案才能将 OpenShift 工件与存储功能一起使用。在 此拉取请求 中跟踪添加 LVM 支持的功能。

结论

本教程提供了一个分步指南,介绍如何使用 Podman Desktop 和 BootC 扩展部署可启动的 MicroShift 镜像。通过利用 BootC 和 Podman 等工具,我们简化了创建轻量级且功能完备的 OpenShift 环境的过程,该环境适合单节点边缘计算场景。

感谢您的参与,祝您部署愉快!