Alauda Container Platform Registry
Image Registry Operator 安装并管理集群范围的 Alauda Container Platform Registry
实例。它从 Config/cluster 调和 Registry 运行时资源,并从 ImagePruner/cluster 调和计划的清理
资源。
目录
主要组件安装 Alauda Container Platform Registry从 OperatorHub 安装使用 YAML 安装先决条件升级 Alauda Container Platform Registry更改 Registry 管理状态Image Pruner 协调检查 Operator 和 Registry 状态检查 Registry 日志和指标访问常见 Operator 问题主要组件
安装 Alauda Container Platform Registry
当 Operator package 在 OperatorHub 中可用时,从 Web 控制台安装 Image Registry Operator,以部署 Alauda Container Platform Registry。仅当 Web 控制台不可用时,才应将 YAML 路径用于受控自动化或在支持人员指导下进行安装。
两种安装路径都要求目标 CatalogSource 中存在 cluster-image-registry-operator package。有关如何验证 package 并在缺失时上传 package,请参阅使用 YAML 安装。
从 OperatorHub 安装
- 登录 并导航到管理员页面。
- 在左侧导航栏中,单击 Marketplace > OperatorHub。
- 搜索 Alauda Container Platform Registry 或
cluster-image-registry-operator。 - 单击安装。
- 在安装页面中,除非您的版本指南另有说明,否则使用以下设置:
- 单击安装。
- 如果出现批准提示,请查看并批准生成的 install plan。
- 等待 Operator 状态变为已安装。
验证安装:
预期结果:
- 已安装的 CSV 为
Succeeded。 cluster-image-registry-operatorDeployment 可用。
使用 YAML 安装
先决条件
cluster-image-registry-operator package 必须已存在于目标 CatalogSource 中。
全新平台安装不包含该 package,且当 package 缺失时,check-subscription.cpaas.io admission
webhook 会拒绝 Subscription:
继续操作前验证 package:
如果缺失,请先按照平台的 Operator package 上传操作步骤 上传 Operator package。例如:
推送必须使用在目标 repositories 上具有 push 权限的 registry 账户。
仅具有拉取权限的账户会失败,并显示 requested access to the resource is denied。推送不会为 Operator 自身的
workloads 配置镜像拉取凭据;请参阅下面安装步骤中的拉取 Secret 注意事项。
如果安装 namespace 不存在,请创建它:
创建名为 image-registry-operator-subscription.yaml 的文件:
应用 Subscription:
批准生成的 InstallPlan:
等待 Operator:
随后,Operator 会创建 image-registry、image-api-server 和 node-ca workloads。这些
workloads 从平台 registry 拉取其镜像,因此 Operator 使用的 ServiceAccounts 必须携带可用的 registry 拉取 Secret。如果 workload
持续处于 ImagePullBackOff 状态并显示
insufficient_scope: authorization failed,请确认平台 registry 拉取 Secret
已附加到这些 ServiceAccounts:
如果 Secret 缺失,请附加该 Secret,然后重启 workloads:
升级 Alauda Container Platform Registry
通过 OperatorHub 升级 Image Registry Operator,以升级 Alauda Container Platform Registry。Operator 升级会更新
cluster-image-registry-operator Deployment,然后协调现有的 Config/cluster、ImagePruner/cluster、Registry、Image API 以及支持资源。
升级前,请确认当前 Registry 运行正常。
重要:对于早于
v4.4的 Alauda Container Platform Registry 版本(包括 ACP 4.3 及更早版本),请联系技术支持以获取升级和迁移计划。
在提供新的 Operator 软件包之前,将 Subscription 审批策略设置为 Manual:
在 管理员 > Marketplace > OperatorHub 中提供目标 Operator 软件包。 如果软件包不存在,请按照平台的 Operator 软件包上传操作步骤 操作,然后再继续。
在 OperatorHub 中打开 Alauda Container Platform Registry,选择目标频道和版本,
并查看待处理的升级。确认 Subscription 使用 Manual 审批后,再批准生成的 InstallPlan:
等待新的 CSV 和 Operator Deployment,然后验证 Registry 数据平面是否完成协调:
预期结果:
- 新的 CSV 为
Succeeded,且 Subscription 报告新的已安装 CSV。 cluster-image-registry-operator、image-registry和image-api-server可用。- 现有存储、路由、Image API 元数据和 ImagePruner 配置仍保持协调状态。
Config/cluster报告Available=True、Progressing=False和Degraded=False。
注意:CSV 升级会重新应用 Operator 的 ServiceAccount。如果在安装期间将 registry 拉取 Secret 附加到该 ServiceAccount,升级可能会清除该 Secret,导致新的
cluster-image-registry-operatorPod 保持在ImagePullBackOff状态并显示insufficient_scope: authorization failed。请重新附加该 Secret,然后重启 Deployment:
请勿在 Operator 升级过程中删除 Subscription、Config/cluster、存储对象或 Image API 元数据。如果升级未完成,请先检查 Subscription、InstallPlan、CSV
事件、Operator 日志和 Config/cluster.status.conditions,然后再采取进一步措施。
更改 Registry 管理状态
启用 Registry 前,请配置一个受支持的存储后端。如果
Config/cluster.spec.storage 为空,将 managementState 设置为 Managed 会使 Operator 保持在
StorageNotConfigured,且无法协调 Registry 数据平面。
通过将 Config/cluster.spec.managementState 设置为 Managed 来启用 Registry:
验证 Registry 数据平面是否可用:
预期结果:
Config/cluster报告Available=True、Progressing=False和Degraded=False。
警告:将管理状态设置为
Removed会停止 Registry 运行时组件。 Registry 被移除期间,推送和拉取流量以及 Image API 服务器均不可用。 Operator 还可能保留image-prunerCronJob,但会禁用已移除 Registry 的垃圾回收。 Registry 被移除期间,请勿依赖计划清理。 仅在维护窗口期间或根据支持人员指导进行恢复时使用此状态。
切换到 Removed 前,请备份所需的镜像数据,并检查存储管理模式:
仅当 spec.storage.managementState 为 Unmanaged,或存储管理员已确认后端存储回收策略会在 Registry 实例被移除后保留数据时,才能假定镜像数据会被保留。更改管理状态前,请备份所需的镜像数据。
要停止 Registry,请将管理状态设置为 Removed:
验证数据平面 Deployment 是否已移除:
预期结果:
- Registry 被移除期间,
image-registry和image-api-serverDeployment 不存在。
Image Pruner 协调
Operator 会将单例 ImagePruner/cluster 协调为 image-pruner 中的 image-registry-system CronJob。在 ImagePruner 资源中配置保留策略。请参阅设置和配置 Registry。
CronJob 默认使用 Registry 内部服务 URL。
检查 Operator 和 Registry 状态
本节假设已按照更改 Registry 管理状态中的说明,将 Config/cluster.spec.managementState 设置为 Managed,从而启用 Registry。spec.managementState 没有默认值。未设置该值时,Operator 会报告原因为 Removed 的 Available=True,并且 image-registry 和 image-api-server Deployment 不存在。
预期结果:
- Operator CSV 为
Succeeded。 cluster-image-registry-operator、image-registry和image-api-server可用。node-ca已在目标节点上就绪。APIService/v1.image.alauda.io为Available=True。Config/cluster报告Available=True、Progressing=False和Degraded=False。
检查 Registry 日志和指标访问
检查 Registry Pod:
查看 Registry 日志:
检查监控 ServiceAccount 的指标访问权限。
registry/metrics 是仅用于 RBAC 的资源。image.alauda.io/v1 API discovery 文档不会公开该资源,而 kubectl auth can-i 会通过 discovery 解析资源名称。因此,即使已授予权限,kubectl auth can-i get registry/metrics.image.alauda.io 也始终报告 no。请改用 SubjectAccessReview:
预期结果:
- 每个检查均报告
true。
Operator 通过 registry-monitoring ClusterRoleBinding 将 system:image-registry-metrics-reader 绑定到 prometheus-sa 和 vm-sa。这些 ServiceAccount 由监控插件创建,因此在安装监控之前,检查会报告 false。