今天,我们非常高兴地宣布正式推出红帽企业 Linux(RHEL)的镜像模式。借助镜像模式,用户能够使用容器镜像构建、部署和管理底层操作系统(OS),从而将 Linux 容器的应用范围扩展到应用之外。具体而言,一种名为 bootc(启动容器)的技术使容器镜像能够安装系统,这样,无论是在数据中心、裸机、边缘还是云中部署,用于应用的相同基础架构、流程和自动化都适用于操作系统镜像。这不仅是技术上的进步,也是文化层面的转变,它能够打破壁垒,实现跨团队的高效协作。
一个 RHEL,两种模式
所有 RHEL 订阅都附带镜像模式,并在版本 9.6 和 10 及更高版本中受支持。您可以选择按传统方式部署 RHEL(现在称为“软件包模式”),也可以选择使用镜像模式进行部署。我们鼓励大家都使用和尝试镜像模式,探索它在您的 IT 架构中的适用性。为了激发创造性思维,我们提供了关于常见用例和使用 GitOps 自动化的扩展阅读资料,供您参考。
如果您喜欢使用软件包模式,请不要担心。我们并无意取消该模式,也不会强迫用户改变模式。每种模式都有不同的优势,我们鼓励大家使用最适合自己工作负载和运维偏好的模式。
Podman Desktop 和 bootc 扩展
Podman Desktop 应用是在本地计算机上开始使用和体验镜像模式的绝佳方式。随着 RHEL 10 的发布,Podman Desktop 现已通过 RHEL 扩展存储库包含在 RHEL 中。对于那些尚未在笔记本电脑上运行 RHEL 的用户(我们没有忽略你们!),该软件以 Flatpak 的形式提供给 Mac、Windows 和其他 Linux 发行版。安装后,红帽扩展包会加载所有必要的扩展程序,以便您轻松地对镜像仓库进行身份验证并开始使用镜像模式。bootc 扩展经过多项改进,包括更简单的用户帐户和身份验证配置、将 Kickstart 注入安装程序 ISO 镜像,以及更便捷的菜单导航。最重要的一点可能是,它能够轻松地将镜像作为本地虚拟机启动:
此外,高级操作系统配置选项在 Podman Desktop 中也非常容易实现:
安全强化配置文件
许多用户都很熟悉在 RHEL 上轻松应用安全基线标准的过程。我们不仅经常更新合规工具,还可以通过安装程序和镜像构建器应用这些工具,并通过红帽卫星和红帽智能分析对其进行大规模管理。借助此版本,您可以在 Containerfile 中或通过应用自己的自定义配置文件,轻松应用 CIS、PCI-DSS、STIG、HIPAA 等基线强化配置文件。为实现该目标,您只需将以下内容添加到 Containerfile 中,并根据您的用例需求进行调整:
RUN dnf install -y openscap-utils scap-security-guide && dnf clean all
RUN oscap-im --profile pci-dss --results-arf /arf.xml /usr/share/xml/scap/ssg/content/ssg-rhel10-ds.xml提供机器可读和人类可读的报告。以下是 HTML 报告的部分内容:
基础镜像
与基于基础容器镜像(如红帽的 UBI 镜像)构建的应用一样,镜像模式也从基础镜像开始构建。这些镜像包含一个完整但精简的操作系统,因此可以轻松添加应用或任何其他所需内容。基础镜像位于红帽的容器目录中,并且包含在所有 RHEL 订阅中,包括免费开发人员订阅。对于希望将次要版本的生命周期延长至 24 个月的用户,我们很高兴地宣布,延长更新支持(EUS)rhel-bootc 镜像现已推出。
此外,我们现在还提供了所需工具,供您使用 bootc-base-imagectl 命令从头开始创建自己的基础镜像。这使您能够轻松应对受限环境,或者获得对基础镜像更大的掌控力,以自定义操作系统内容。
我们还添加了两个功能更强大的工具。
第一个是容器 linting,它可以帮助检查构建过程中的常见问题和最佳实践。只需将以下内容添加到 Containerfiles 的末尾即可:
RUN bootc container lint在构建过程中,根据需要按照提示操作,更正您可能出现的任何错误。
第二个是 bootc-base-imagectlrechunk,它一种高级的后处理工具,可将镜像中的 RPM 内容拆分为单独的层,这本身与我们构建基础镜像的方式类似。尽管表面上看,压缩镜像似乎很有效,但通过分层镜像处理,我们可以高效地在容器镜像构建之间重新共享层,并帮助优化网络利用率。此工具可在已完成构建的容器镜像上执行。有关详细信息,请参阅此文档。
此外,现在还可以在基础镜像内使用 RUN dnf -y upgrade kernel(及相关命令)直接升级、降级或切换内核。
管理
镜像模式在管理策略方面具有更大的灵活性,可与红帽卫星 6.17 无缝衔接。此版本使您能够在基于镜像的客户端的整个生命周期(从初始置备到广泛的 Day2 运维)内对其进行管理。此外,集成的容器镜像仓库可用于镜像更新,具体方式与红帽卫星发布 RPM 内容的方式类似。
- 如果您是想要采用镜像模式的现有卫星用户:此版本提供了一条既符合现有技术生态,又无缝整合新功能的演进途径。您可以扩展熟悉的卫星工作流,以利用不可变基础架构的优势。
- 如果您的基础架构倾向于红帽智能分析和红帽 Ansible 自动化平台:红帽卫星为镜像模式提供强大支持。利用现有的工具和专业知识,有效管理基于镜像的系统。
在认识到人们对构建自动化日益增长的需求后,我们整理了将镜像模式集成到热门 GitOps 和 CI/CD 管道中的一些实用示例。我们的专用存储库支持 GitHub Actions、GitLab CI、Tekton、Jenkins 和 Ansible 自动化平台,为简化构建流程并驱动生产系统一致高效运行提供了宝贵的起点。探索一些出色的示例,了解更多可能性。
云实例重新置备
构建容器通常比创建、上传、发布以及后续维护云镜像和虚拟机镜像更快。此版本提供了一个名为 system-reinstall-bootc 的新工具,可大幅简化 bootc 镜像的部署过程。现在,您可以将默认的云镜像作为安装程序,以开始启动实例。您能够以交互方式运行 system-reinstall-bootc,或者使用工具的输出,通过 cloud-init 全面自动化该过程。
这种模式的一个显著优势在于,它完全不需要从容器镜像生成磁盘镜像,从而简化了构建和部署过程。虽然这一过程对于迭代构建和防止磁盘镜像蔓延非常有效,但我们认识到,部署可直接启动到所需状态的磁盘镜像可以使许多用例受益。
bootc-image-builder 工具持续为所有主流超大规模云服务商和虚拟化平台提供将 bootc 容器镜像转换为磁盘镜像的快捷方式。
隐藏的优势
在此版本中,我们利用 sudo dnf install --transient 命令使测试操作系统临时更改变得更加轻松。具体用例包括应用修补程序、故障排除,以及在启动时运行 Ansible 的设置。请注意,这是一项特权命令,操作将在启动时重置。
bootc-image-builder 工具仍然是为所有主要虚拟化平台和超大规模云服务商生成专用裸机安装程序和原生磁盘镜像的强大工具。该工具现在已得到全面支持,新版本还优化了用户体验和进度条。此外,现在使用挂载单元取代传统的 /etc/fstab 文件,以定义文件系统挂载。这克服了以往将更改合并到单个文件的限制。
后续步骤
如果没有出色的早期采用者和社区,我们不可能取得现在的成就。感谢大家的积极反馈,我们才得以完善镜像模式以满足实际需求,并弥合 DevOps 鸿沟。加入我们,探索 RHEL 中的镜像模式如何彻底变革应用交付方式并助力团队加速创新!
我们鼓励大家通过 Podman Desktop 或我们的交互式实验室来试用镜像模式。您也可以阅读官方镜像模式文档,并查看关于镜像模式的真实 CI/CD 示例。
关于作者
Ben Breard is a Senior Principal Product Manager at Red Hat, focusing on Red Hat Enterprise Linux and Edge Offerings.