第 13 章 开放容器项目支持和 Red Hat Quay

Red Hat Quay 等容器注册表最初设计为支持 Docker 镜像格式的容器镜像。为了促进在 Docker 外使用额外的运行时,创建了开放容器项目(OCI)以提供与容器运行时和镜像格式相关的标准化。大多数容器 registry 支持 OCI 标准化,因为它基于 Docker 镜像清单 V2、Schema 2 格式。

除了容器镜像外,还出现各种工件,它们不仅支持单独的应用程序,还存在 Kubernetes 平台作为一个整体的支持。这些范围包括用于安全性和监管的 Open Policy Agent (OPA)策略到 Helm chart 和 Operator,以帮助应用程序部署。

Red Hat Quay 是一个私有容器 registry,它不仅存储容器镜像,而且支持整个工具生态系统,以帮助管理容器。在版本 3.6 之前,Red Hat Quay 只支持 Helm,它被视为 Kubernetes 的事实 软件包管理器。

Helm 简化了应用程序的打包和部署方式。Helm 使用名为 Charts 的打包格式,其中包含代表应用程序的 Kubernetes 资源。可以为存储库中的常规分发和使用提供 chart。Helm 仓库是一个 HTTP 服务器,它提供 index.yaml 元数据文件,也可以选择一组打包的 chart。从 Helm 版本 3 开始,支持以替代传统仓库的方式在 OCI registry 中分发 chart。

作为对 Helm 支持的增强,Red Hat Quay 引入了从版本 3.6 中对基于 OCI 的工件的支持,使其包含对 cosign、ZStandard 压缩方案和其他 OCI 介质类型的支持。现在,在 FEATURE_GENERAL_OCI_SUPPORT 配置字段中默认启用 Helm 和其他 OCI 工件的支持,并使用 ALLOWED_OCI_ARTIFACT_TYPESIGNORE_UNKNOWN_MEDIATYPES 字段扩展到其他工件类型。

由于增加了 FEATURE_GENERAL_OCI_SUPPORTALLOWED_OCI_ARTIFACT_TYPESIGNORE_UNKNOWN_MEDIATYPESFEATURE_HELM_OCI_SUPPORT 配置字段已弃用。此配置字段不再被支持,并将在以后的 Red Hat Quay 版本中删除。

13.1. Helm 和 OCI 的先决条件

在启用 Helm 和其他开放容器项目(OCI)工件类型之前,您必须满足以下条件:

13.1.1. 安装 Helm

使用以下步骤安装 Helm 客户端。

流程

  1. 从 Helm 发行版本页面下载最新版本的 Helm
  2. 输入以下命令解包 Helm 二进制文件:

    $ tar -zxvf helm-v3.8.2-linux-amd64.tar.gz
  3. 将 Helm 二进制文件移到所需位置:

    $ mv linux-amd64/helm /usr/local/bin/helm

有关安装 Helm 的更多信息,请参阅安装 Helm 文档。

13.1.2. 升级到 Helm 3.8

对 OCI registry chart 的支持要求 Helm 已升级到至少 3.8。如果您已经下载了 Helm,且需要升级到 Helm 3.8,请参阅 Helm 升级 文档。

13.1.3. 启用您的系统信任 Red Hat Quay 使用的 SSL/TLS 证书

通过 HTTPS 促进 Helm 客户端和 Red Hat Quay 之间的通信。从 Helm 3.5 开始,支持仅适用于通过 HTTPS 与可信证书通信的 registry。另外,操作系统必须信任 registry 公开的证书。您必须确保您的操作系统已配置为信任 Red Hat Quay 使用的证书。使用以下步骤使您的系统信任自定义证书。

流程

  1. 输入以下命令将 rootCA.pem 文件复制到 /etc/pki/ca-trust/source/anchors/ 文件夹:

    $ sudo cp rootCA.pem   /etc/pki/ca-trust/source/anchors/
  2. 输入以下命令更新 CA 信任存储:

    $ sudo update-ca-trust extract

13.1.4. 在 Red Hat Quay 中为 Helm 创建机构

建议您在下载 Helm 客户端后创建一个新机构,以便在 Red Hat Quay 中存储 Helm chart。使用以下步骤,使用 Red Hat Quay UI 创建新机构。

流程

  1. 登录到您的 Red Hat Quay 部署。
  2. 单击 Create New Organization
  3. 输入机构的名称,如 helm。然后,单击 Create Organization