在 OpenShift Container Platform 上部署 Red Hat Quay Operator
在 OpenShift Container Platform 上部署 Red Hat Quay Operator
摘要
前言 复制链接链接已复制到粘贴板!
Red Hat Quay 是一个企业级容器 registry。使用 Red Hat Quay 构建和存储容器镜像,然后将其能够在您的企业中部署。
Red Hat Quay Operator 提供了在 OpenShift 集群中部署和管理 Red Hat Quay 的简单方法。
随着 Red Hat Quay 3.4.0 的发布,Red Hat Quay Operator 被重新编写,以提供更好的体验并添加更多对第 2 天操作的支持。因此,Red Hat Quay Operator 现在更易于使用,并更明确。Red Hat Quay 3.4.0 之前版本的主要区别包括:
-
QuayEcosystem自定义资源已被QuayRegistry自定义资源替代。 默认安装选项生成完全支持的 Red Hat Quay 环境,以及所有受管依赖项,如数据库、缓存、对象存储等,支持在生产环境中使用。
注意有些组件可能不是高可用性。
- 用于 Red Hat Quay 配置的新验证库。
对象存储现在可以由 Red Hat Quay Operator 使用
ObjectBucketClaimKubernetes API 管理注意Red Hat OpenShift Data Foundation 可用于在 OpenShift Container Platform 上提供此 API 的支持实现。
- 自定义部署容器集用于测试和开发场景的容器镜像。
第 1 章 Red Hat Quay Operator 简介 复制链接链接已复制到粘贴板!
使用本章中的内容执行以下操作:
- 使用 Red Hat Quay Operator 在 OpenShift Container Platform 上安装 Red Hat Quay
- 配置受管或非受管对象存储
- 配置非受管组件,如数据库、Redis、route、TLS 等
- 使用 Red Hat Quay Operator 在 OpenShift Container Platform 上部署 Red Hat Quay registry
- 使用 Red Hat Quay 支持的高级功能
- 使用 Red Hat Quay Operator 升级 Red Hat Quay registry
1.1. Red Hat Quay on OpenShift Container Platform 配置概述 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 上使用 Operator 部署 Red Hat Quay 时,配置通过 QuayRegistry 自定义资源(CR)声明性地管理。此模型允许集群管理员定义 Red Hat Quay 部署的所需状态,包括启用哪些组件、存储后端、SSL/TLS 配置和其他核心功能。
使用 Operator 在 OpenShift Container Platform 上部署 Red Hat Quay 后,管理员可以通过更新 config.yaml 文件并在 Kubernetes secret 中引用它来进一步自定义其 registry。此配置捆绑包通过 configBundleSecret 字段链接到 QuayRegistry CR。
Operator 会协调 QuayRegistry CR 中定义的状态及其关联的配置,根据需要自动部署或更新 registry 组件。
本指南涵盖了 QuayRegistry CR 背后的基本概念,并在 OpenShift Container Platform 部署上的 Red Hat Quay 上修改 config.yaml 文件。在 OpenShift Container Platform 上部署 Red Hat Quay Operator 中,请参阅 在 QuayRegistry CR 中部署 Red Hat Quay Operator,如在 QuayRegistry CR 中使用非受管组件。
1.2. 受管组件 复制链接链接已复制到粘贴板!
默认情况下,Operator 处理 Red Hat Quay 管理组件所需的所有配置和安装。
如果 Red Hat Quay Operator 执行的 opinionated 部署不适合您的环境,您可以为 Red Hat Quay Operator 提供 非受管 资源,或覆盖,如 使用非受管组件 中所述。
| 字段 | 类型 | 描述 |
|---|---|---|
|
| 布尔值 |
包含覆盖用于在 OpenShift Container Platform 上部署 Red Hat Quay,如环境变量和副本数。此组件不能设置为 unmanaged ( |
|
| 布尔值 | 用于存储 registry 元数据目前使用 PostgreSQL 版本 13。 |
|
| 布尔值 | 提供镜像漏洞扫描。 |
|
| 布尔值 | 存储实时构建器日志和垃圾回收所需的锁定机制。 |
|
| 布尔值 |
根据您的内存和 CPU 消耗来调整 |
|
| 布尔值 |
存储镜像层 Blob。当设置为 |
|
| 布尔值 | 从 OpenShift Container Platform 外部为 Red Hat Quay registry 提供外部入口点。 |
|
| 布尔值 | 配置存储库镜像 worker 以支持可选存储库镜像。 |
|
| 布尔值 |
功能包括 Grafana 仪表板、访问单个指标以及频繁重启 |
|
| 布尔值 | 配置 SSL/TLS 是否自动处理。 |
|
| 布尔值 | 配置受管 Clair 数据库。这是部署 Red Hat Quay 的 PostgreSQL 数据库的独立数据库。 |
以下示例显示了 Red Hat Quay Operator 提供的 QuayRegistry 自定义资源的默认配置。它包括在 OpenShift Container Platform Web 控制台中。
QuayRegistry 自定义资源示例
1.3. 将非受管组件用于依赖项 复制链接链接已复制到粘贴板!
如果您有要与 Red Hat Quay 搭配使用的现有组件,如 PostgreSQL、Red Hat Quay 或对象存储,则首先在 Red Hat Quay 配置捆绑包或 config.yaml 文件中配置它们。然后,必须在您的 QuayRegistry 捆绑包中将其引用为 Kubernetes Secret,同时指示哪些组件是非受管的。
如果您使用非受管 PostgreSQL 数据库,且版本是 PostgreSQL 10,则强烈建议您升级到 PostgreSQL 13。PostgreSQL 10 在 2022 年 11 月 10 日已发布,并不再被支持。如需更多信息,请参阅 PostgreSQL 版本策略。
有关配置非受管组件,请参见以下小节:
1.4. 了解 configBundleSecret 复制链接链接已复制到粘贴板!
spec.configBundleSecret 字段是对与 QuayRegistry 资源相同的命名空间中的 Secret 名称的可选引用。此 Secret 必须包含 config.yaml 键/值对,其中值为 Red Hat Quay 配置文件。
configBundleSecret 存储 config.yaml 文件。Red Hat Quay 管理员可以通过 config.yaml 文件定义以下设置:
- 身份验证后端(如 OIDC、LDAP)
- 外部 TLS 终止设置
- 仓库创建策略
- 功能标记
- 通知设置
Red Hat Quay 可能会因为以下原因更新此 secret:
- 启用一个新的验证方法
- 添加自定义 SSL/TLS 证书
- 启用功能
- 修改安全扫描设置
如果省略此字段,Red Hat Quay Operator 会自动根据默认值和受管组件设置生成配置 secret。如果提供了字段,则 config.yaml 的内容将用作基础配置,并且与来自受管组件的值合并,以组成最终配置,该配置被挂载到 quay 应用程序 Pod 中。
如何配置 QuayRegistry CR,决定哪些字段必须包含在 OpenShift Container Platform 上的 Red Hat Quay 的 configBundleSecret's 'config.yaml 文件中。以下示例显示,当所有组件都由 Operator 管理时,您是一个默认的 config.yaml 文件。请注意,此示例根据组件是管理的还是非受管(受管:false)而不同。
带有 Operator 管理的所有组件的 YAML 示例
在某些情况下,您可以选择自己管理某些组件,如对象存储。在这种情况下,您将修改 QuayRegistry CR,如下所示:
Unmanaged objectstorage 组件
# ...
- kind: objectstorage
managed: false
# ...
# ...
- kind: objectstorage
managed: false
# ...
如果您要管理自己的组件,则必须将部署配置为包含该组件的必要信息或资源。例如,如果 objectstorage 组件被设置为 managed: false,您可以根据 config.yaml 文件中的存储供应商包含相关信息。以下示例显示了使用 Google Cloud Storage 的分布式存储配置:
objectstorage 非受管时所需的信息
同样,如果您要管理 horizontalpodautoscaler 组件,您必须创建一个附带的 HorizontalPodAutoscaler 自定义资源。
1.5. OpenShift Container Platform 上的 Red Hat Quay 的先决条件 复制链接链接已复制到粘贴板!
在使用 Red Hat Quay Operator 在 OpenShift Container Platform 上部署 Red Hat Quay 前,请考虑以下先决条件。
1.5.1. OpenShift Container Platform 集群 复制链接链接已复制到粘贴板!
要部署 Red Hat Quay Operator,您必须有一个 OpenShift Container Platform 4.5 或更高版本的集群,并可以访问管理帐户。管理帐户必须具有在集群范围内创建命名空间的功能。
1.5.2. 资源要求 复制链接链接已复制到粘贴板!
每个 Red Hat Quay 应用程序 pod 都具有以下资源要求:
- 8 Gi 内存
- 2000 millicore CPU
Red Hat Quay Operator 的每个 Red Hat Quay 部署至少创建一个应用程序 pod。确保 OpenShift Container Platform 集群有足够的计算资源来满足这些要求。
1.5.3. 对象存储 复制链接链接已复制到粘贴板!
默认情况下,Red Hat Quay Operator 使用 ObjectBucketClaim Kubernetes API 来置备对象存储。消耗此 API 将 Red Hat Quay Operator 与任何特定于供应商的实现分离。Red Hat OpenShift Data Foundation 通过其 NooBaa 组件提供此 API,该组件在整个文档中用作示例。
Red Hat Quay 可以手动配置为使用多个存储云供应商,包括:
- Amazon S3 (请参阅 S3 IAM Bucket 策略 以了解为 Red Hat Quay 配置 S3 存储桶策略的详情)
- Microsoft Azure Blob Storage
- Google Cloud Storage
- Ceph 对象网关(RADOS)
- OpenStack Swift
- CloudFront + S3
如需对象存储提供程序的完整列表,Quay Enterprise 3.x 支持列表。
1.5.4. StorageClass 复制链接链接已复制到粘贴板!
当使用 Red Hat Quay Operator 部署 Quay 和 Clair PostgreSQL 数据库时,集群中配置了默认 StorageClass。
Red Hat Quay Operator 使用的默认 StorageClass 置备 Quay 和 Clair 数据库所需的持久性卷声明。这些 PVC 用于持久存储数据,确保 Red Hat Quay registry 和 Clair 漏洞扫描程序仍然可用,并在重启或失败时保持其状态。
在继续安装前,请验证集群中是否配置了默认 StorageClass,以确保为 Quay 和 Clair 组件无缝置备存储。
第 2 章 从 OperatorHub 安装 Red Hat Quay Operator 复制链接链接已复制到粘贴板!
使用以下步骤从 OpenShift Container Platform OperatorHub 安装 Red Hat Quay Operator。
流程
- 使用 OpenShift Container Platform 控制台,选择 Operators → OperatorHub。
- 在搜索框中,键入 Red Hat Quay 并选择红帽提供的官方 Red Hat Quay Operator。这会将您定向到 安装 页面,其中概述了功能、先决条件和部署信息。
- 选择 Install。这会将您定向到 Operator 安装 页面。
以下选项可用于自定义安装:
-
更新频道 : 选择更新频道,例如
stable-3作为最新版本。 安装模式:
-
如果您希望 Red Hat Quay Operator 在集群范围内可用,请选择
All namespaces on the cluster。建议您在集群范围安装 Red Hat Quay Operator。如果您选择了单个命名空间,则监控组件默认不可用。 如果您希望仅在单一命名空间中部署它,选择
A specific namespace on the cluster。- Approval Strategy: 选择批准自动或手动更新。建议自动更新策略。
-
如果您希望 Red Hat Quay Operator 在集群范围内可用,请选择
-
更新频道 : 选择更新频道,例如
- 选择 Install。
第 3 章 在部署前配置 Red Hat Quay 复制链接链接已复制到粘贴板!
当在 OpenShift Container Platform 上部署时,Red Hat Quay Operator 可以管理所有 Red Hat Quay 组件。这是默认配置,但当您希望对设置进行更多控制时,您可以在外部管理一个或多个组件。
使用以下模式配置非受管 Red Hat Quay 组件。
流程
使用适当的设置创建
config.yaml配置文件。对最小配置使用以下引用:touch config.yaml
$ touch config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令,使用配置文件创建
Secret:oc create secret generic --from-file config.yaml=./config.yaml config-bundle-secret
$ oc create secret generic --from-file config.yaml=./config.yaml config-bundle-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个
quayregistry.yaml文件,识别非受管组件并引用所创建的Secret,例如:QuayRegistryYAML 文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令使用
quayregistry.yaml文件部署 registry:oc create -n quay-enterprise -f quayregistry.yaml
$ oc create -n quay-enterprise -f quayregistry.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1. 自动化的预配置选项 复制链接链接已复制到粘贴板!
Red Hat Quay 提供了配置选项,可让 registry 管理员自动执行早期设置任务和 API 可访问性。这些选项对新部署很有用,并控制如何发出 API 调用。以下选项支持自动化和管理控制。
| 字段 | 类型 | 描述 |
|---|---|---|
| FEATURE_USER_INITIALIZE | 布尔值 |
在新部署的 Red Hat Quay registry 中启用初始用户 bootstrap。当在部署前在 注意
与需要现有机构中 OAuth 应用程序的 OAuth 2 访问令牌 生成的所有其他 registry API 调用不同, |
| BROWSER_API_CALLS_XHR_ONLY | 布尔值 |
控制 registry API 是否只接受来自浏览器的调用。要允许基于浏览器的常规访问 API,管理员必须将此字段设置为 |
| SUPER_USERS | 字符串 |
定义管理用户列表或超级用户,其具有对 registry 的完整特权和不受限制的访问权限。在部署前,Red Hat Quay 管理员应该在 |
| FEATURE_USER_CREATION | 布尔值 |
当此字段设置为 |
以下 YAML 展示了推荐的自动化配置:
推荐的自动化配置
3.2. 配置对象存储 复制链接链接已复制到粘贴板!
在安装 Red Hat Quay 前,您需要配置对象存储,无论您是否允许 Red Hat Quay Operator 管理存储或自己管理它。
如果您希望 Red Hat Quay Operator 负责管理存储,请参阅 Managed 存储中的部分来安装和配置 NooBaa 和 Red Hat OpenShift Data Foundation Operator。
如果您使用单独的存储解决方案,请在配置 Operator 时将 objectstorage 设置为 unmanaged。请参见以下部分。非受管存储,以了解配置现有存储的详细信息。
3.2.1. 使用非受管存储 复制链接链接已复制到粘贴板!
本节为方便起见,为非受管存储提供了配置示例。有关如何设置对象存储的完整说明,请参阅 Red Hat Quay 配置指南。
3.2.1.1. AWS S3 存储 复制链接链接已复制到粘贴板!
在为 Red Hat Quay 部署配置 AWS S3 存储时,请使用以下示例。
3.2.1.2. AWS Cloudfront 存储 复制链接链接已复制到粘贴板!
在为 Red Hat Quay 部署配置 AWS Cloudfront 时,请使用以下示例。
在配置 AWS Cloudfront 存储时,必须满足以下条件才能正确使用 Red Hat Quay:
-
您必须设置一个 Origin 路径,该路径 与
config.yaml文件中定义的 Red Hat Quay 的存储路径一致。如果无法满足这一要求,在拉取镜像时会导致403错误。如需更多信息,请参阅 Origin 路径。 - 您必须配置 Bucket 策略和 跨源资源共享(CORS) 策略。
-
您必须设置一个 Origin 路径,该路径 与
CloudFront S3 示例 YAML
bucket 策略示例
3.2.1.3. Google Cloud 存储 复制链接链接已复制到粘贴板!
在为 Red Hat Quay 部署配置 Google Cloud 存储时,请使用以下示例。
- 1
- 可选。从连接时抛出超时异常的时间(以秒为单位)。默认值为
60秒。另外,还包括时间(以秒为单位),直到尝试进行连接时抛出超时异常。默认值为60秒。
3.2.1.4. Microsoft Azure 存储 复制链接链接已复制到粘贴板!
在为 Red Hat Quay 部署配置 Microsoft Azure 存储时,请使用以下示例。
- 1
- Microsoft Azure 存储的
endpoint_url参数是可选的,可用于 Microsoft Azure Government (MAG)端点。如果留空,则endpoint_url将连接到正常的 Microsoft Azure 区域。从 Red Hat Quay 3.7 开始,您必须使用 MAG Blob 服务的主端点。使用 MAG Blob 服务的二级端点将导致以下错误:
AuthenticationErrorDetail:Cannot find the claimed account when trying the account whusc8-secondary。
3.2.1.5. Ceph/RadosGW 存储 复制链接链接已复制到粘贴板!
在为 Red Hat Quay 部署配置 Ceph/RadosGW 存储时,请使用以下示例。
3.2.1.6. Swift 存储 复制链接链接已复制到粘贴板!
在为 Red Hat Quay 部署配置 Swift 存储时,请使用以下示例。
3.2.1.7. NooBaa 非受管存储 复制链接链接已复制到粘贴板!
使用以下步骤将 NooBaa 部署为您的非受管存储配置。
流程
- 在 Red Hat Quay 控制台中,导航到 Storage → Object Bucket Claims,在 Red Hat Quay 控制台中创建一个 NooBaa Object Bucket Claim。
- 检索 Object Bucket Claim 数据详情,包括 Access Key, Bucket Name, Endpoint (hostname)和 Secret Key。
创建
config.yaml配置文件,该文件使用 Object Bucket Claim 的信息:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
有关配置对象 Bucket 声明的更多信息,请参阅 Object Bucket Claim。
3.2.2. 使用非受管 NooBaa 实例 复制链接链接已复制到粘贴板!
使用以下步骤将非受管 NooBaa 实例用于 Red Hat Quay 部署。
流程
- 在控制台的 Storage → Object Bucket Claims 中创建 NooBaa Object Bucket Claim。
-
检索 Object Bucket Claim 数据详细信息,包括
Access Key、Bucket Name、Endpoint (hostname)和Secret Key。 使用 Object Bucket Claim 的信息创建
config.yaml配置文件。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.3. 受管存储 复制链接链接已复制到粘贴板!
如果您希望 Red Hat Quay Operator 管理 Red Hat Quay 的对象存储,您的集群需要能够通过 ObjectBucketClaim API 提供对象存储。使用 Red Hat OpenShift Data Foundation Operator,有两个支持的选项:
由本地 Kubernetes
PersistentVolume存储支持的 Multi-Cloud Object Gateway 的独立实例- 不提供高可用性
- 包括在 Red Hat Quay 订阅中
- Red Hat OpenShift Data Foundation 不需要单独的订阅
使用扩展对象服务和 Ceph 的生产环境部署 Red Hat OpenShift Data Foundation
- 高可用性
- Red Hat OpenShift Data Foundation 需要单独的订阅
要使用 standalone 实例选项,请继续阅读以下内容。对于 Red Hat OpenShift Data Foundation 的生产环境部署,请参阅 官方文档。
Object storage 磁盘空间由 Red Hat Quay Operator 自动分配 50 GiB。这个数字代表了大多数中小型 Red Hat Quay 安装的可用存储,但可能不足以满足您的用例。Red Hat OpenShift Data Foundation 重新定义大小目前没有被 Red Hat Quay Operator 处理。如需了解更多详细信息,请参见以下有关重新定义受管存储大小的部分。
作为 Red Hat Quay 订阅的一部分,用户可以使用 Red Hat OpenShift Data Foundation Operator 的 Multicloud Object Gateway 组件(以前称为 OpenShift Container Storage Operator)。此网关组件允许您为基于 Kubernetes PersistentVolume的块存储支持的 Red Hat Quay 提供 S3 兼容对象存储接口。使用量仅限于由 Operator 管理的 Red Hat Quay 部署,以及 multicloud Object Gateway 实例的确切规格,如下所述。
因为 Red Hat Quay 不支持本地文件系统存储,所以用户可以使用网关与 Kubernetes PersistentVolume 存储结合使用,以提供受支持的部署。PersistentVolume 直接在网关实例上挂载,作为对象存储的后备存储,支持任何基于块的 StorageClass。
按照 PersistentVolume 的性质,这不是横向扩展、高度可用的解决方案,且不会取代 Red Hat OpenShift Data Foundation 等横向扩展的存储系统。只有网关的一个实例正在运行。如果因为重新调度、更新或计划外停机而运行网关的 pod 不可用,这会导致连接的 Red Hat Quay 实例的临时降级。
使用 Red Hat OpenShift Data Foundation 在 OpenShift Container Platform 上部署 Red Hat Quay 要求您下载 Local Storage Operator、Red Hat OpenShift Data Foundation Operator,然后使用 OpenShift Container Platform UI 多云对象网关。有关这些步骤,请参阅以下 Red Hat OpenShift Data Foundation 文档:
第 4 章 配置流量入口 复制链接链接已复制到粘贴板!
4.1. 配置 SSL/TLS 和路由 复制链接链接已复制到粘贴板!
通过新的受管组件 tls 添加了对 OpenShift Container Platform 边缘终止路由 的支持。这会将 路由 组件与 SSL/TLS 分开,并允许用户单独配置它们。
EXTERNAL_TLS_TERMINATION: true 是建议的设置。
-
Managed
tls表示使用默认集群通配符证书。 -
Unmanaged
tls意味着用户提供的密钥和证书对注入到路由中。
ssl.cert 和 ssl.key 现在被移到一个单独的持久 secret 中,这样可确保每次协调时不会重新生成密钥和证书对。密钥和证书对现在格式化为 边缘路由,并挂载到 Quay 容器中的同一目录。
在配置 SSL/TLS 和路由时,可以有多个 permutations,但会应用以下规则:
-
如果
管理SSL/TLS,则您的路由还必须管理。 -
如果 SSL/TLS 是
非受管状态,则必须直接在 config 捆绑包中提供证书。
下表描述了有效选项:
| 选项 | Route | TLS | 提供的证书 | 结果 |
|---|---|---|---|---|
| 我自己的负载均衡器处理 TLS | 受管 | 受管 | 否 | 带有默认通配符证书的边缘路由 |
| Red Hat Quay 处理 TLS | 受管 | Unmanaged | 是 | 使用挂载到 pod 中的证书传递路由 |
| Red Hat Quay 处理 TLS | Unmanaged | Unmanaged | 是 |
证书在 |
4.1.1. 使用 SSL/TLS 证书和密钥对创建配置捆绑包 secret 复制链接链接已复制到粘贴板!
使用以下步骤创建包含您自己的 SSL/TLS 证书和密钥对的配置捆绑包 secret。
流程
输入以下命令来创建包含您自己的 SSL/TLS 证书和密钥对的配置捆绑包 secret:
oc create secret generic --from-file config.yaml=./config.yaml --from-file ssl.cert=./ssl.cert --from-file ssl.key=./ssl.key config-bundle-secret
$ oc create secret generic --from-file config.yaml=./config.yaml --from-file ssl.cert=./ssl.cert --from-file ssl.key=./ssl.key config-bundle-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 5 章 在 OpenShift Container Platform 中为受管组件配置资源 复制链接链接已复制到粘贴板!
您可以为运行 pod 的以下组件手动调整 OpenShift Container Platform 上的 Red Hat Quay 资源:
-
Quay -
clair -
镜像 -
clairpostgres -
postgres
此功能允许用户运行较小的测试集群,或者请求更多资源前期,以避免部分降级的 Quay pod。限制和请求可根据 Kubernetes 资源单元 设置。
不应设置以下组件小于其最低要求。这可能会导致部署出现问题,在某些情况下会导致 pod 的部署失败。
-
Quay: 最小 6 GB、2vCPU -
Clair:建议 2 GB 内存,2 个 vCPU -
clairpostgres:最小 200 MB
您可以在 OpenShift Container Platform UI 上配置资源请求,或者直接通过更新 QuayRegistry YAML 来配置资源请求。
为这些组件设置的默认值是推荐的值。设置资源请求过高或太低可能会导致资源利用率低低,或者分别降低资源利用率或性能下降。
5.1. 使用 OpenShift Container Platform UI 配置资源请求 复制链接链接已复制到粘贴板!
使用以下步骤使用 OpenShift Container Platform UI 配置资源。
流程
- 在 OpenShift Container Platform 开发人员控制台中,点 Operators → Installed Operators → Red Hat Quay。
- 单击 QuayRegistry。
- 点 registry 的名称,如 example-registry。
- 点 YAML。
在
spec.components字段中,您可以通过设置.overrides.resources.limits和overrides.resources.requests字段的值来覆盖quay、clair、mirrorclairpostgres和postgres资源的资源。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2. 通过编辑 QuayRegistry YAML 来配置资源请求 复制链接链接已复制到粘贴板!
在部署 registry 后,您可以重新配置 Red Hat Quay 来配置资源请求。这可以通过直接编辑 QuayRegistry YAML 文件,然后重新部署 registry 来完成。
流程
可选:如果您没有
QuayRegistryYAML 文件的本地副本,请输入以下命令来获取该文件:oc get quayregistry <registry_name> -n <namespace> -o yaml > quayregistry.yaml
$ oc get quayregistry <registry_name> -n <namespace> -o yaml > quayregistry.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 打开从此流程的第 1 步中创建的
quayregistry.yaml,并进行所需的更改。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存更改。
运行以下命令,使用更新的配置应用 Red Hat Quay registry:
oc replace -f quayregistry.yaml
$ oc replace -f quayregistry.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
quayregistry.quay.redhat.com/example-registry replaced
quayregistry.quay.redhat.com/example-registry replacedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 6 章 配置数据库 复制链接链接已复制到粘贴板!
6.1. 使用现有的 PostgreSQL 数据库 复制链接链接已复制到粘贴板!
如果使用外部管理的 PostgreSQL 数据库,则必须手动启用 pg_trgm 扩展才能成功部署。
您不能为 Red Hat Quay 和 Clair 部署使用相同的外部管理的 PostgreSQL 数据库。您的 PostgreSQL 数据库还必须与其他工作负载共享,因为在连接密集型工作负载(如 Red Hat Quay 或 Clair)时,它可能会耗尽 PostgreSQL 端的自然连接限制。另外,Red Hat Quay 或 Clair 不支持 pgBouncer,因此这不是解决这个问题的选项。
使用以下步骤部署现有的 PostgreSQL 数据库。
流程
使用所需的数据库字段创建
config.yaml文件。例如:config.yaml文件示例:DB_URI: postgresql://test-quay-database:postgres@test-quay-database:5432/test-quay-database
DB_URI: postgresql://test-quay-database:postgres@test-quay-database:5432/test-quay-databaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用配置文件创建
Secret:kubectl create secret generic --from-file config.yaml=./config.yaml config-bundle-secret
$ kubectl create secret generic --from-file config.yaml=./config.yaml config-bundle-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个
QuayRegistry.yaml文件,将postgres组件标记为非受管,并引用所创建的Secret。例如:quayregistry.yaml文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
- 继续以下部分来部署 registry。
6.1.1. 数据库配置字段 复制链接链接已复制到粘贴板!
本节论述了 Red Hat Quay 部署可用的数据库配置字段。
6.1.1.1. 数据库 URI 复制链接链接已复制到粘贴板!
使用 Red Hat Quay 时,使用所需的 DB_URI 字段配置与数据库的连接。
下表描述了 DB_URI 配置字段:
| 字段 | 类型 | 描述 |
|---|---|---|
|
DB_URI | 字符串 | 用于访问数据库的 URI,包括任何凭据。
postgresql://quayuser:quaypass@quay-server.example.com:5432/quay |
数据库 URI 示例
# ... DB_URI: postgresql://quayuser:quaypass@quay-server.example.com:5432/quay # ...
# ...
DB_URI: postgresql://quayuser:quaypass@quay-server.example.com:5432/quay
# ...
6.1.1.2. 数据库连接参数 复制链接链接已复制到粘贴板!
可选的连接参数由 DB_CONNECTION_ARGS 参数配置。DB_CONNECTION_ARGS 中定义的一些键值对是通用的,另一些则特定于数据库。
| 字段 | 类型 | 描述 |
|---|---|---|
| DB_CONNECTION_ARGS | 对象 | 数据库的可选连接参数,如超时和 SSL/TLS。 |
| .autorollback | 布尔值 |
是否使用 thread-local 连接。 |
| .threadlocals | 布尔值 |
是否使用自动滚动连接。 |
数据库连接参数示例
6.1.1.2.1. SSL/TLS 连接参数 复制链接链接已复制到粘贴板!
使用 SSL/TLS 时,配置取决于您部署的数据库。
sslmode 选项决定是否使用,安全 SSL/TLS TCP/IP 连接的优先级将与服务器协商。有六个模式:
| 模式 | 描述 |
|---|---|
| sslmode | 决定是否以及哪个优先级是安全的 SSL/TLS 或 TCP/IP 连接与服务器协商。 |
| *: disable | 您的配置只尝试非 SSL/TLS 连接。 |
| *: allow | 您的配置首先会尝试非 SSL/TLS 连接。失败时,尝试 SSL/TLS 连接。 |
|
*: 首选 | 您的配置首先会尝试 SSL/TLS 连接。失败时,尝试非 SSL/TLS 连接。 |
| *: require | 您的配置只尝试 SSL/TLS 连接。如果存在 root CA 文件,它将像指定了 verify-ca 一样验证证书。 |
| *: verify-ca | 您的配置只尝试 SSL/TLS 连接,并验证服务器证书是否由可信证书颁发机构(CA)发布。 |
| *: verify-full | 仅尝试 SSL/TLS 连接,并验证服务器证书是否由可信 CA 发布,并且请求的服务器主机名与证书中的主机名匹配。 |
有关 PostgreSQL 有效参数的更多信息,请参阅 数据库连接控制功能。
PostgreSQL SSL/TLS 配置
# ... DB_CONNECTION_ARGS: sslmode: <value> sslrootcert: path/to/.postgresql/root.crt # ...
# ...
DB_CONNECTION_ARGS:
sslmode: <value>
sslrootcert: path/to/.postgresql/root.crt
# ...
6.1.2. 使用受管 PostgreSQL 数据库 复制链接链接已复制到粘贴板!
使用 Red Hat Quay 3.9 时,如果您的数据库由 Red Hat Quay Operator 管理,从 Red Hat Quay 3.8 → 3.9 更新会自动处理将 PostgreSQL 10 升级到 PostgreSQL 13。
- 需要具有受管数据库的用户才能将其 PostgreSQL 数据库从 10 到 13 升级。
- 如果您的 Red Hat Quay 和 Clair 数据库由 Operator 管理,则每个组件的数据库升级必须成功进行 3.9.0 升级。如果任何一个数据库升级失败,则整个 Red Hat Quay 版本升级会失败。这是预期的行为。
如果您不希望 Red Hat Quay Operator 从 PostgreSQL 10 → 13 升级 PostgreSQL 部署,您必须在 quayregistry.yaml 文件中将 PostgreSQL 参数设置为 managed: false。有关将数据库设置为非受管的更多信息,请参阅使用现有的 Postgres 数据库。
- 强烈建议您升级到 PostgreSQL 13。PostgreSQL 10 在 2022 年 11 月 10 日已发布,并不再被支持。如需更多信息,请参阅 PostgreSQL 版本策略。
如果您希望 PostgreSQL 数据库与 Red Hat Enterprise Linux (RHEL)系统相同的版本,请参阅 迁移到 RHEL 8 的 RHEL 8 版本 ,或迁移到 RHEL 9 的 PostgreSQL 版本。
有关 Red Hat Quay 3.8 → 3.9 流程的更多信息,请参阅升级 Red Hat Quay Operator 概述。
6.1.2.1. PostgreSQL 数据库建议 复制链接链接已复制到粘贴板!
Red Hat Quay 团队推荐以下用于管理 PostgreSQL 数据库。
- 数据库备份应该定期使用 PostgreSQL 镜像中提供的工具或您自己的备份基础架构来执行。Red Hat Quay Operator 目前没有确保备份 PostgreSQL 数据库。
-
必须使用 PostgreSQL 工具和程序从备份中恢复 PostgreSQL 数据库。请注意,您的
Quaypod 在数据库恢复过程中不应运行。 - 数据库磁盘空间由 Red Hat Quay Operator 自动分配 50 GiB。这个数字代表了大多数中小型 Red Hat Quay 安装的可用存储,但可能不足以满足您的用例。Red Hat Quay Operator 当前不会处理数据库卷的大小。
6.2. 配置外部 Redis 复制链接链接已复制到粘贴板!
使用本节中的内容设置外部 Redis 部署。
6.2.1. 使用非受管 Redis 数据库 复制链接链接已复制到粘贴板!
使用以下步骤设置外部 Redis 数据库。
流程
使用以下 Redis 字段创建
config.yaml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令使用配置文件创建 secret:
oc create secret generic --from-file config.yaml=./config.yaml config-bundle-secret
$ oc create secret generic --from-file config.yaml=./config.yaml config-bundle-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个
quayregistry.yaml文件,将 Redis 组件设置为非受管组件并引用所创建的 secret:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 部署 Red Hat Quay registry。
6.2.2. 使用非受管 Horizontal Pod Autoscaler 复制链接链接已复制到粘贴板!
Pod 横向自动扩展(HPA)现在包含在 Clair、Quay 和 Mirror pod 中,以便它们现在会在负载激增过程中自动扩展。
由于 HPA 默认配置为 managed,因此 Clair、Quay 和 Mirror pod 的数量被设置为 2。这有助于避免在通过 Operator 或重新调度事件更新或重新配置 Red Hat Quay 时造成停机。
禁用 HorizontalPodAutoscaler 组件并尝试编辑 HPA 资源本身并增加 minReplicas 字段的值时,存在一个已知问题。当尝试此设置时,Quay 应用程序 pod 由非受管 HPA 扩展,并在 60 秒后扩展,副本数由 Red Hat Quay Operator 协调。因此,HPA pod 会持续创建,然后由 Operator 删除。
要解决这个问题,您应该将 Red Hat Quay 部署升级到至少版本 3.12.5 或 3.13.1,然后使用以下示例来避免问题。
此问题将在 Red Hat Quay 以后的版本中解决。如需更多信息,请参阅 PROJQUAY-6474。
6.2.2.1. 禁用 Horizontal Pod Autoscaler 复制链接链接已复制到粘贴板!
要禁用自动扩展或创建自己的 HorizontalPodAutoscaler 组件,请在 QuayRegistry 自定义资源定义中将组件指定为 unmanaged。要避免上面记录的已知问题,您必须修改 QuayRegistry CRD 对象,并将 quay、clair 和 mirror 组件的副本等于 null。
流程
编辑
QuayRegistryCRD,为quay组件包含以下replicas: null:oc edit quayregistry <quay_registry_name> -n <quay_namespace>
$ oc edit quayregistry <quay_registry_name> -n <quay_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在
QuayRegistryCRD 中设置replicas: null后,可能会生成新的副本集,因为Quay应用程序的部署清单被replicas: 1更改。
验证
创建自定义
HorizontalPodAutoscalersCRD,并将minReplicas量增加到更高的值,用于考试pe,3:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令来确保
QuayRegistry应用程序成功启动:oc get pod | grep quay-app
$ oc get pod | grep quay-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
quay-registry-quay-app-5b8fd49d6b-7wvbk 1/1 Running 0 34m quay-registry-quay-app-5b8fd49d6b-jslq9 1/1 Running 0 3m42s quay-registry-quay-app-5b8fd49d6b-pskpz 1/1 Running 0 43m quay-registry-quay-app-upgrade-llctl 0/1 Completed 0 51m
quay-registry-quay-app-5b8fd49d6b-7wvbk 1/1 Running 0 34m quay-registry-quay-app-5b8fd49d6b-jslq9 1/1 Running 0 3m42s quay-registry-quay-app-5b8fd49d6b-pskpz 1/1 Running 0 43m quay-registry-quay-app-upgrade-llctl 0/1 Completed 0 51mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令来确保
HorizontalPodAutoscalers可以成功启动:oc get hpa
$ oc get hpaCopy to Clipboard Copied! Toggle word wrap Toggle overflow NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE quay-registry-quay-app Deployment/quay-registry-quay-app 67%/90%, 54%/90% 3 20 3 51m
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE quay-registry-quay-app Deployment/quay-registry-quay-app 67%/90%, 54%/90% 3 20 3 51mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2.3. 禁用 Route 组件 复制链接链接已复制到粘贴板!
使用以下步骤防止 Red Hat Quay Operator 创建路由。
流程
在
quayregistry.yaml文件中将组件设置为managed: false:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
config.yaml文件,以指定 Red Hat Quay 处理 SSL/TLS。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您没有正确配置非受管路由,则返回以下错误:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
禁用默认路由意味着您现在负责 创建路由、服务或 Ingress 以访问 Red Hat Quay 实例。此外,您使用的任何 DNS 都必须与 Red Hat Quay 配置中的 SERVER_HOSTNAME 匹配。
6.2.4. 禁用监控组件 复制链接链接已复制到粘贴板!
如果在单一命名空间中安装 Red Hat Quay Operator,则监控组件会自动设置为 managed: false。使用以下引用来显式禁用监控。
非受管监控
当在单一命名空间中安装 Red Hat Quay Operator 时,无法启用监控。
6.2.5. 禁用镜像组件 复制链接链接已复制到粘贴板!
要禁用镜像,请使用以下 YAML 配置:
非受管镜像 YAML 配置示例
第 7 章 使用 Operator 部署 Red Hat Quay 复制链接链接已复制到粘贴板!
Red Hat Quay on OpenShift Container Platform 可以使用命令行界面或 OpenShift Container Platform 控制台进行部署。这些步骤基本是相同的。
7.1. 从命令行部署 Red Hat Quay 复制链接链接已复制到粘贴板!
使用以下步骤使用命令行界面(CLI)从 部署 Red Hat Quay。
先决条件
- 已使用 CLI 登录 OpenShift Container Platform。
流程
输入以下命令创建一个命名空间,如
quay-enterprise:oc new-project quay-enterprise
$ oc new-project quay-enterpriseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选的。如果要预配置 Red Hat Quay 部署的任何方面,请为配置捆绑包创建一个
Secret:oc create secret generic quay-enterprise-config-bundle --from-file=config-bundle.tar.gz=/path/to/config-bundle.tar.gz
$ oc create secret generic quay-enterprise-config-bundle --from-file=config-bundle.tar.gz=/path/to/config-bundle.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在名为
quayregistry.yaml的文件中创建QuayRegistry自定义资源对于最小部署,使用所有默认值:
quayregistry.yaml:
apiVersion: quay.redhat.com/v1 kind: QuayRegistry metadata: name: example-registry namespace: quay-enterprise
apiVersion: quay.redhat.com/v1 kind: QuayRegistry metadata: name: example-registry namespace: quay-enterpriseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选的。如果要有一些未管理的组件,请在
spec字段中添加此信息。最小部署可能类似以下示例:带有非受管组件的 quayregistry.yaml 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选的。如果您已创建了配置捆绑包,如
init-config-bundle-secret,请在quayregistry.yaml文件中引用它:带有配置捆绑包的 quayregistry.yaml 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选的。如果您配置了代理,您可以使用 Red Hat Quay、Clair 和 mirror 覆盖添加信息:
配置了代理的 quayregistry.yaml 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
输入以下命令在指定命名空间中创建
QuayRegistry:oc create -n quay-enterprise -f quayregistry.yaml
$ oc create -n quay-enterprise -f quayregistry.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令来查看何时填充
status.registryEndpoint:oc get quayregistry -n quay-enterprise example-registry -o jsonpath="{.status.registryEndpoint}" -w$ oc get quayregistry -n quay-enterprise example-registry -o jsonpath="{.status.registryEndpoint}" -wCopy to Clipboard Copied! Toggle word wrap Toggle overflow
其他资源
- 有关如何跟踪 Red Hat Quay 部署的进度的更多信息,请参阅监控和调试部署过程。
7.1.1. 使用 API 创建第一个用户 复制链接链接已复制到粘贴板!
使用以下步骤在 Red Hat Quay 组织中创建第一个用户。
先决条件
-
配置选项
FEATURE_USER_INITIALIZE必须设为True。 - 数据库中不能已存在任何用户。
此流程通过指定 "access_token": true 来请求 OAuth 令牌。
打开 Red Hat Quay 配置文件并更新以下配置字段:
FEATURE_USER_INITIALIZE: true SUPER_USERS: - quayadminFEATURE_USER_INITIALIZE: true SUPER_USERS: - quayadminCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令停止 Red Hat Quay 服务:
sudo podman stop quay
$ sudo podman stop quayCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令启动 Red Hat Quay 服务:
sudo podman run -d -p 80:8080 -p 443:8443 --name=quay -v $QUAY/config:/conf/stack:Z -v $QUAY/storage:/datastorage:Z {productrepo}/{quayimage}:{productminv}$ sudo podman run -d -p 80:8080 -p 443:8443 --name=quay -v $QUAY/config:/conf/stack:Z -v $QUAY/storage:/datastorage:Z {productrepo}/{quayimage}:{productminv}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下
CURL命令以使用用户名、密码、电子邮件和访问令牌生成新用户:curl -X POST -k http://quay-server.example.com/api/v1/user/initialize --header 'Content-Type: application/json' --data '{ "username": "quayadmin", "password":"quaypass12345", "email": "quayadmin@example.com", "access_token": true}'$ curl -X POST -k http://quay-server.example.com/api/v1/user/initialize --header 'Content-Type: application/json' --data '{ "username": "quayadmin", "password":"quaypass12345", "email": "quayadmin@example.com", "access_token": true}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果成功,命令会返回带有用户名、电子邮件和加密密码的对象。例如:
{"access_token":"6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED", "email":"quayadmin@example.com","encrypted_password":"1nZMLH57RIE5UGdL/yYpDOHLqiNCgimb6W9kfF8MjZ1xrfDpRyRs9NUnUuNuAitW","username":"quayadmin"} # gitleaks:allow{"access_token":"6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED", "email":"quayadmin@example.com","encrypted_password":"1nZMLH57RIE5UGdL/yYpDOHLqiNCgimb6W9kfF8MjZ1xrfDpRyRs9NUnUuNuAitW","username":"quayadmin"} # gitleaks:allowCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果用户已在数据库中,则返回错误:
{"message":"Cannot initialize user in a non-empty database"}{"message":"Cannot initialize user in a non-empty database"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您的密码至少不是八个字符或包含空格,则返回错误:
{"message":"Failed to initialize user: Invalid password, password must be at least 8 characters and contain no whitespace."}{"message":"Failed to initialize user: Invalid password, password must be at least 8 characters and contain no whitespace."}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令登录到您的 Red Hat Quay 部署:
sudo podman login -u quayadmin -p quaypass12345 http://quay-server.example.com --tls-verify=false
$ sudo podman login -u quayadmin -p quaypass12345 http://quay-server.example.com --tls-verify=falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Login Succeeded!
Login Succeeded!Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.2. 使用命令行查看创建的组件 复制链接链接已复制到粘贴板!
使用以下步骤查看部署的 Red Hat Quay 组件。
先决条件
- 您已在 OpenShift Container Platform 上部署了 Red Hat Quay。
流程
输入以下命令查看部署的组件:
oc get pods -n quay-enterprise
$ oc get pods -n quay-enterpriseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.3. Pod 横向自动扩展 复制链接链接已复制到粘贴板!
默认部署显示以下正在运行的 pod:
-
两个用于 Red Hat Quay 应用程序本身的 pod (
example-registry-quay-app可以') -
一个 Red Hat Quay 日志记录的 Redis pod (
example-registry-quay-redis可以) -
一个数据库 pod for PostgreSQL,供 Red Hat Quay 用于元数据存储(
example-registry-quay-database114) -
两个
Quay镜像 pod (example-registry-quay-mirror114) -
Clair 应用程序的两个 pod (
example-registry-clair-app114) -
用于 Clair 的 PostgreSQL pod (
example-registry-clair-postgres suppress)
水平 PPod 自动扩展默认配置为 受管,Quay 的 pod 数量,Clair 和存储库镜像设置为 2。这有助于在通过 Red Hat Quay Operator 更新或重新调度事件期间更新或重新配置 Red Hat Quay 时停机。您可以输入以下命令来查看 HPA 对象的信息:
oc get hpa -n quay-enterprise
$ oc get hpa -n quay-enterprise
输出示例
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE example-registry-clair-app Deployment/example-registry-clair-app 16%/90%, 0%/90% 2 10 2 13d example-registry-quay-app Deployment/example-registry-quay-app 31%/90%, 1%/90% 2 20 2 13d example-registry-quay-mirror Deployment/example-registry-quay-mirror 27%/90%, 0%/90% 2 20 2 13d
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
example-registry-clair-app Deployment/example-registry-clair-app 16%/90%, 0%/90% 2 10 2 13d
example-registry-quay-app Deployment/example-registry-quay-app 31%/90%, 1%/90% 2 20 2 13d
example-registry-quay-mirror Deployment/example-registry-quay-mirror 27%/90%, 0%/90% 2 20 2 13d
7.1.4. 监控和调试部署过程 复制链接链接已复制到粘贴板!
用户现在可以在部署阶段排除问题。QuayRegistry 对象中的状态可帮助您在部署期间监控组件的健康状况,以帮助您调试可能会出现任何问题。
流程
输入以下命令检查部署的状态:
oc get quayregistry -n quay-enterprise -o yaml
$ oc get quayregistry -n quay-enterprise -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
部署后,Quay
Registry对象将显示基本配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
oc get pods命令查看部署组件的当前状态:oc get pods -n quay-enterprise
$ oc get pods -n quay-enterpriseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在部署进行时,Quay
Registry对象将显示当前状态。在这个实例中,数据库迁移会被发生,其他组件会等到完成为止:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当部署过程成功完成时,QuayRegistry 对象中的状态不会显示不健康的组件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2. 从 OpenShift Container Platform 控制台部署 Red Hat Quay 复制链接链接已复制到粘贴板!
-
创建一个命名空间,如
quay-enterprise。 - 选择 Operators → Installed Operators,然后选择 Quay Operator 以导航到 Operator 详情视图。
- 在 'Provided APIs' 下的 'quay Registry' 上点 'Create Instance'。
-
(可选)更改
QuayRegistry的 'Name'。这将影响 registry 的主机名。所有其他字段都已填充默认值。 -
点 'Create' 提交
QuayRegistry以供 Quay Operator 部署。 -
您应该被重定向到
QuayRegistry列表视图。点您刚才创建的QuayRegistry以查看详情视图。 - 在 'Registry Endpoint' 有值后,可以在 UI 中点来访问新的 Quay registry。现在,您可以选择"Create Account"来创建用户并登录。
7.2.1. 使用 Red Hat Quay UI 创建第一个用户 复制链接链接已复制到粘贴板!
使用以下步骤,通过 Red Hat Quay UI 创建第一个用户。
此流程假设 FEATURE_USER_CREATION 配置选项没有设置为 false。如果为 False,则 UI 上的 Create Account 功能将被禁用,您必须使用 API 来创建第一个用户。
流程
- 在 OpenShift Container Platform 控制台中,使用适当的命名空间 / 项目导航到 Operators → Installed Operators。
点新安装的
QuayRegistry对象查看详情。例如:
-
在
Registry Endpoint有值后,导航到浏览器中的这个 URL。 在 Red Hat Quay registry UI 中,选择 Create Account 来创建用户。例如:
输入用户名、密码、电子邮件 的详细信息,然后单击 Create Account。例如:
创建第一个用户后,会自动登录到 Red Hat Quay registry。例如:
第 8 章 查看 QuayRegistry 对象的状态 复制链接链接已复制到粘贴板!
给定 Red Hat Quay 部署的生命周期可观察性会在对应的 QuayRegistry 对象的 status 部分中报告。Red Hat Quay Operator 持续更新本节,这应该是第一个位置,用于查找 Red Hat Quay 或其受管依赖项中的任何问题或状态更改。
8.1. 查看 registry 端点 复制链接链接已复制到粘贴板!
当 Red Hat Quay 准备好使用后,status.registryEndpoint 字段将填充 registry 的公开可用主机名。
8.2. 查看正在使用的 Red Hat Quay 版本 复制链接链接已复制到粘贴板!
运行的 Red Hat Quay 的当前版本将报告为 status.currentVersion。
8.3. 查看 Red Hat Quay 部署的条件 复制链接链接已复制到粘贴板!
某些条件将在 status.conditions 中报告。
第 9 章 在 OpenShift Container Platform 上自定义 Red Hat Quay 复制链接链接已复制到粘贴板!
部署后,您可以通过编辑 Red Hat Quay 配置捆绑包 secret spec.configBundleSecret 来自定义 Red Hat Quay 应用程序。您还可以更改组件的受管状态,并为 QuayRegistry 资源的 spec.components 对象中某些组件配置资源请求。
使用以下步骤编辑 OpenShift Container Platform 控制台中的配置捆绑包 secret。
流程
在 Red Hat Quay Registry 概述屏幕上,单击 Config Bundle Secret 的链接。
要编辑 secret,请点击 Actions → Edit Secret。
修改配置并保存更改。
- 监控部署以确保成功完成,并且配置更改已生效。
9.2. 确定 QuayRegistry 端点和 secret 复制链接链接已复制到粘贴板!
使用以下步骤查找 QuayRegistry 端点和 secret。
流程
您可以通过输入以下命令来查找当前的端点和 secret,使用
oc describe quayregistry或oc get quayregistry -o yaml检查QuayRegistry资源:oc get quayregistry example-registry -n quay-enterprise -o yaml
$ oc get quayregistry example-registry -n quay-enterprise -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.3. 使用 CLI 修改配置文件 复制链接链接已复制到粘贴板!
您可以使用 CLI 下载现有配置来修改 configBundleSecret 存储的 config.yaml 文件。进行更改后,您可以重新上传 configBundleSecret 资源,以更改 Red Hat Quay registry。
修改 configBundleSecret 资源存储的 config.yaml 文件是一个多步骤,需要 base64 解码现有配置文件,然后上传更改。在大多数情况下,使用 OpenShift Container Platform Web 控制台对 config.yaml 文件进行更改更为简单。
先决条件
- 以具有 admin 权限的用户身份登录 OpenShift Container Platform 集群。
流程
输入以下命令描述
QuayRegistry资源:oc describe quayregistry -n <quay_namespace>
$ oc describe quayregistry -n <quay_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ... ...
# ... Config Bundle Secret: example-registry-config-bundle-v123x # ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令来获取 secret 数据:
oc get secret -n <quay_namespace> <example-registry-config-bundle-v123x> -o jsonpath='{.data}'$ oc get secret -n <quay_namespace> <example-registry-config-bundle-v123x> -o jsonpath='{.data}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{ "config.yaml": "RkVBVFVSRV9VU0 ... MDAwMAo=" }{ "config.yaml": "RkVBVFVSRV9VU0 ... MDAwMAo=" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过传递 >>
config.yaml 标志,将数据解码到当前目录中。例如:echo 'RkVBVFVSRV9VU0 ... MDAwMAo=' | base64 --decode >> config.yaml
$ echo 'RkVBVFVSRV9VU0 ... MDAwMAo=' | base64 --decode >> config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
对
config.yaml文件进行所需的更改,然后将该文件保存为config.yaml。 输入以下命令创建新的
configBundleSecretYAML。touch <new_configBundleSecret_name>.yaml
$ touch <new_configBundleSecret_name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令来创建新的
configBundleSecret资源,传递config.yaml文件':oc -n <namespace> create secret generic <secret_name> \ --from-file=config.yaml=</path/to/config.yaml> \ --dry-run=client -o yaml > <new_configBundleSecret_name>.yaml
$ oc -n <namespace> create secret generic <secret_name> \ --from-file=config.yaml=</path/to/config.yaml> \1 --dry-run=client -o yaml > <new_configBundleSecret_name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 其中
<config.yaml> 是您的base64 解码的config.yaml文件。
输入以下命令来创建
configBundleSecret资源:oc create -n <namespace> -f <new_configBundleSecret_name>.yaml
$ oc create -n <namespace> -f <new_configBundleSecret_name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
secret/config-bundle created
secret/config-bundle createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令更新
QuayRegistryYAML 文件来引用新的configBundleSecret对象:oc patch quayregistry <registry_name> -n <namespace> --type=merge -p '{"spec":{"configBundleSecret":"<new_configBundleSecret_name>"}}'$ oc patch quayregistry <registry_name> -n <namespace> --type=merge -p '{"spec":{"configBundleSecret":"<new_configBundleSecret_name>"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
quayregistry.quay.redhat.com/example-registry patched
quayregistry.quay.redhat.com/example-registry patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证
QuayRegistryCR 已使用新的configBundleSecret更新:oc describe quayregistry -n <quay_namespace>
$ oc describe quayregistry -n <quay_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
... ...
# ... Config Bundle Secret: <new_configBundleSecret_name> # ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 修补 registry 后,Red Hat Quay Operator 会自动协调更改。
此内容已移至 保护 Red Hat Quay。本章将在以后的 Red Hat Quay 版本中删除。