5.3. 部署后修改 QuayRegistry CR
安装 Red Hat Quay Operator 并创建了初始部署后,您可以修改 QuayRegistry
自定义资源(CR)以自定义或重新配置 Red Hat Quay 环境的各个方面。
Red Hat Quay 管理员可能会因为以下原因修改 QuayRegistry CR:
-
要更改组件管理 :将组件从
managed: true
切换到managed: false
,以便提供自己的基础架构。例如,您可以将kind: objectstorage
设置为 unmanaged 以集成外部对象存储平台,如 Google Cloud Storage 或 Nutanix。 -
要应用自定义配置 :更新或替换
configBundleSecret
以应用新的配置设置,如身份验证供应商、外部 SSL/TLS 设置、功能标记。 -
要启用或禁用功能 :通过修改
spec.components
列表来切换存储库镜像、Clair 扫描或 Pod 横向自动扩展等功能。 - 要扩展部署 :为 Quay 应用程序调整环境变量或副本计数。
- 要与外部服务集成:为外部 PostgreSQL、Redis 或 Clair 数据库提供配置,并更新端点或凭证。
QuayRegistry
可使用 OpenShift Container Platform Web 控制台进行修改。这样,您可以将受管组件设置为 unamanged (managed: false
),并使用您自己的基础架构。
先决条件
- 以具有 admin 权限的用户身份登录 OpenShift Container Platform。
- 已安装 Red Hat Quay Operator。
流程
-
在 OpenShift Container Platform web 控制台中,点 Operators
Installed Operators。 - 点 Red Hat Quay。
- 单击 Quay Registry。
- 点 Red Hat Quay registry 的名称,如 example-registry。
- 点 YAML。
-
将所需组件的
managed
字段调整为True
或False
。 点击 Save。
注意将组件设置为非受管(
managed: false
)可能需要进行额外的配置。有关在QuayRegistry
CR 中设置非受管组件的更多信息,请参阅 使用非受管组件进行依赖项。
5.3.2. 使用 CLI 修改 QuayRegistry CR 复制链接链接已复制到粘贴板!
QuayRegistry
CR 可以使用 CLI 修改。这样,您可以将受管组件设置为 unamanged (managed: false
),并使用您自己的基础架构。
先决条件
- 以具有 admin 权限的用户身份登录 OpenShift Container Platform 集群。
流程
输入以下命令编辑
QuayRegistry
CR:oc edit quayregistry <registry_name> -n <namespace>
$ oc edit quayregistry <registry_name> -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对
QuayRegistry
CR 进行所需的更改。注意将组件设置为非受管(
managed: false
)可能需要进行额外的配置。有关在QuayRegistry
CR 中设置非受管组件的更多信息,请参阅 使用非受管组件进行依赖项。- 保存更改。
5.3.3. 了解 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
自定义资源。
5.3.3.1. 使用 OpenShift Container Platform Web 控制台修改配置文件 复制链接链接已复制到粘贴板!
使用 OpenShift Container Platform Web 控制台修改 configBundleSecret
存储的 config.yaml
文件。
先决条件
- 以具有 admin 权限的用户身份登录 OpenShift Container Platform 集群。
流程
-
在 OpenShift Container Platform web 控制台中,点 Operators
Installed Operators Red Hat Quay。 - 单击 Quay Registry。
- 点 Red Hat Quay registry 的名称,如 example-registry。
- 在 QuayRegistry 详情页中,单击 Config Bundle Secret 的名称,如 example-registry-config-bundle。
-
点 Actions
Edit Secret。 在 Value 框中,添加所需的键/值对。例如,要将超级用户添加到 OpenShift Container Platform 部署的 Red Hat Quay 中,请添加以下引用:
SUPER_USERS: - quayadmin
SUPER_USERS: - quayadmin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点击 Save。
验证
验证更改是否已接受:
-
在 OpenShift Container Platform web 控制台中,点 Operators
Installed Operators Red Hat Quay。 - 单击 Quay Registry。
- 点 Red Hat Quay registry 的名称,如 example-registry。
单击 Events。如果成功,则会显示以下信息:
All objects created/updated successfully
All objects created/updated successfully
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
在 OpenShift Container Platform web 控制台中,点 Operators
在将其放在 Secret 之前,您必须对任何更新的 config.yaml 进行 base64 编码。确保 Secret 名称与 spec.configBundleSecret 指定的值匹配。更新 Secret 后,Operator 会检测到更改,并自动推出对 Red Hat Quay pod 的更新。
具体步骤请参阅"通过 Red Hat Quay UI 更新配置 secret"。
5.3.3.2. 使用 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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
对
config.yaml
文件进行所需的更改,然后将该文件保存为config.yaml
。 输入以下命令创建新的
configBundleSecret
YAML。touch <new_configBundleSecret_name>.yaml
$ touch <new_configBundleSecret_name>.yaml
Copy 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>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 其中
<config.yaml&
gt; 是您的base64 解码
的config.yaml
文件。
输入以下命令来创建
configBundleSecret
资源:oc create -n <namespace> -f <new_configBundleSecret_name>.yaml
$ oc create -n <namespace> -f <new_configBundleSecret_name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
secret/config-bundle created
secret/config-bundle created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令更新
QuayRegistry
YAML 文件来引用新的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 patched
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证
QuayRegistry
CR 已使用新的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 会自动协调更改。