红帽通用基础映像(UBI)帮助构建和运行

容器是Linux操作系统用户空间的轻量级版本-实际上,这是最低的要求。 尽管如此,它仍然是一个成熟的操作系统,因此,此容器本身的质量与一个成熟的操作系统一样重要。 这就是为什么我们长期以来一直提供Red Hat Enterprise Linux(RHEL)映像的原因 ,以便用户可以拥有经过认证的,最新的,最新的企业级容器。 在容器主机上运行RHEL的容器映像RHEL提供了环境之间的兼容性和可移植性,更不用说这些已经是熟悉的工具。 但是,有一个问题。 您不能仅将这样的映像转移给其他人,即使它是使用Red Hat Enterprise Linux的客户或合作伙伴。



但是现在一切都变了

随着Red Hat Universal Base Image(UBI)的发布,无论您是否已订阅,您现在都可以获得熟悉的Red Hat容器映像的可靠性,安全性和高性能。 这意味着您可以在UBI上构建容器化的应用程序,将其放入您选择的容器注册表中,并与全世界共享。 红帽通用基础映像使您可以在任何环境中,无论您在何处,都可以在容器化应用程序上进行构建,共享和协作。



借助UBI,几乎可以在任何基础架构上发布和运行您的应用程序。 但是,如果在Red Hat OpenShift和Red Hat Enterprise Linux等Red Hat平台上运行它们,则可以获得更多好处(更多金!)。 在我们继续对UBI进行更详细的描述之前,让我提供一个简短的FAQ,说明为什么需要RHEL订阅。 那么,当您在RHEL / OpenShift平台上运行UBI映像时会发生什么?



现在我们对营销感到满意,让我们再谈谈UBI

使用UBI的原因


为了了解UBI对您有用,您需要感受的内容:

  • 我的开发人员希望使用可以在任何环境中分发和运行的容器映像。
  • 我的运营团队希望获得具有企业级生命周期的受支持的基本映像
  • 我的建筑师想向我的客户/最终用户提供Kubernetes Operator
  • 我的客户不想为其整个Red Hat环境获得企业级支持。
  • 我的社区想在任何地方共享,运行,发布,托管应用程序。

如果至少有一种情况适合您,那么您绝对应该注意UBI。

不只是基本外观


UBI并非完整的操作系统,但UBI具有三点重要的功​​能:

  1. 一组三个基本映像(ubi,ubi-minimal,ubi-init)
  2. 具有各种编程语言(nodejs,ruby,python,php,perl等)的现成运行时的图像
  3. YUM存储库中具有最常见依赖性的一组相关软件包




创建UBI作为云的基础-在容器中开发和交付本机和Web应用程序。 UBI中的所有内容都是RHEL的子集。 UBI中的所有软件包都通过RHEL渠道,并且在Red Hat支持的平台(例如OpenShift和RHEL)上启动时,像RHEL一样受到支持。



为了为容器提供质量支持,需要工程师,安全专家和其他额外资源的大量努力。 它不仅需要测试基本映像,还需要分析它们在任何受支持主机上的行为。

为了简化与升级相关的任务,红帽正在积极开发开发和支持,以便可以在例如RHEL 8主机上运行UBI 7,并在RHEL 7主机上运行UBI 8,从而在此过程中为用户提供必要的灵活性,信心和安心感。 ,例如,容器映像或使用的主机中的平台更新。 现在,所有这些都可以分为两个独立的项目。

三个基本图像




最小-为具有所有依赖项(Python,Node.js,.NET等)的应用程序设计

  • 最少的预装内容
  • 没有suid可执行文件
  • 最低软件包管理器工具箱(安装,更新和卸载)

平台-适用于RHEL上运行的任何应用程序

  • OpenSSL统一加密堆栈
  • YUM全栈
  • 包含有用的基本OS实用程序(tar,gzip,vi等)

多服务-简化在一个容器中启动多个服务的过程

  • 配置为在启动时运行systemd
  • 在构建阶段启用服务的能力

具有现成的编程语言运行时的容器图像


除了使您可以安装对编程语言的支持的基本映像之外,UBI还包括预组装的映像以及可用于多种编程语言的现成运行时。 许多开发人员可以简单地拍摄图像并开始处理他们正在开发的应用程序。

随着UBI的推出,红帽提供了两组图像-基于RHEL 7和RHEL8。它们分别基于Red Hat软件集合(RHEL 7)和应用程序流(RHEL 8)。 这些运行时保持最新状态,通常每年最多接收四个更新,因此始终有机会使用最新,最稳定的版本。

以下是UBI 7容器映像的列表:



以下是UBI 8的容器映像列表:



相关包装


使用现成的图像确实非常方便。 Red Hat会保持它们的相关性,并根据RHEL新版本的发布以及RHEL映像策略更新策略对重要的CVE更新进行更新,以便您可以获取其中一张映像并立即开始在应用程序上工作。



但是有时在创建应用程序时,您可能突然需要一些其他软件包。 或者,有时,要使应用程序正常运行,您需要更新特定的软件包。 这就是为什么UBI图像带有一组RPM的原因,这些RPM可通过yum获得,并通过快速且高度可访问的内容交付网络(您打包!)进行分发。 当您在发布的关键时刻在CI / CD上运行yum更新时,您可以确定它会起作用。

RHEL是基础


我们永远不会重复RHEL是一切的基础。 您知道Red Hat中的哪些团队正在创建基本图像吗? 例如,这些:

  • 一个工程团队负责确保核心库(例如glibc和OpenSSL)以及语言运行时(例如Python和Ruby)在容器中使用时提供一致的性能并可靠地处理工作负载。
  • 产品安全小组负责及时纠正图书馆和语言环境中的错误和安全问题,并使用特殊的容器健康指数等级对它们的性能进行评估。
  • 产品经理和工程师团队正在增加新功能并提供较长的产品生命周期,这使人们对可以用作基础的投资充满信心。

红帽企业Linux充当了容器的绝佳宿主和映像,但是对于许多开发人员而言,以多种格式使用系统的能力很重要,其中某些可能超出了使用Linux系统的支持方案。 通用的UBI映像在这里得以拯救。

假设现在,在此阶段,您只是在寻找基本图像以开始在简单的容器化应用程序上工作。 还是您距离未来更近,并通过构建和认证在OpenShift上运行的Operators从运行在容器引擎上的独立容器迁移到云原生历史。 无论如何,UBI都会为此提供良好的基础。



容器以新包装格式包括操作系统用户空间的轻量级版本。 UBI映像的发布为容器化开发树立了新的行业标准,所有用户,独立软件开发人员和开源社区都可以使用企业级容器。 尤其是,软件开发人员可以使用一个单一的,经过验证的基础为他们所有容器化应用程序(包括Kubernetes Operators)标准化其产品。 基于UBI的开发公司也可以使用Red Hat Container认证和Red Hat OpenShift操作员认证,从而可以连续验证在Red Hat平台(如OpenShift)上运行的软件。



如何开始使用图像


简而言之-非常简单。 Podman不仅在RHEL上可用,而且在Fedora,CentOS和其他几个Linux发行版上也可用。 您需要做的就是从以下存储库之一中上传图像,然后继续。

对于UBI 8:

podman pull registry.access.redhat.com/ubi8/ubi podman pull registry.access.redhat.com/ubi8/ubi-minimal podman pull registry.access.redhat.com/ubi8/ubi-init 

对于UBI 7:

 podman pull registry.access.redhat.com/ubi7/ubi podman pull registry.access.redhat.com/ubi7/ubi-minimal podman pull registry.access.redhat.com/ubi7/ubi-init 

好了,请参阅完整的《通用基础映像指南》

Source: https://habr.com/ru/post/zh-CN451090/


All Articles