管理访问权限和清理
使用此页面执行 Alauda Container Platform Registry 管理员和命名空间管理员任务, 包括命名空间镜像访问、使用情况报告、镜像清理、Registry 垃圾回收以及 镜像签名验证。
任务索引
先决条件
- Registry 已安装并可用。
- 你具有对目标集群的
kubectl和ac访问权限。 - 你具有在镜像命名空间中创建 RoleBinding 的权限。
- 你具有使用情况报告、镜像清理、Registry 垃圾回收和签名验证的管理员权限。
使用 ac 管理命令前,选择 ACP 4.4 Registry 后端:
预期结果:
- 后续的
acImage API、清理、垃圾回收和签名命令将使用 ACP 4.4 Registry。
授予命名空间权限
向用户授予拉取权限:
向用户授予推送权限:
向另一个命名空间中的 ServiceAccount 授予拉取权限:
验证 RoleBinding 和有效访问权限:
预期结果:
- Image 命名空间中存在 RoleBinding。
- 对于应拉取镜像的 ServiceAccount,
kubectl auth can-i命令返回yes。
Registry 使用 ImageStream 层授权:
system:image-pruner ClusterRole 专用于由 Operator 管理的 pruner ServiceAccount。
它不是命名空间访问角色。手动清理和垃圾回收需要相应的管理员权限。
对于 Pull 和 Push 以外的角色,请根据你的授权模型授予相应的平台角色或 ClusterRole,然后验证有效权限。指标权限是 集群范围的;其他检查(如适用)限定在镜像命名空间中:
预期结果:
- 对于具有相应有效权限的主体,每个命令均返回
yes。该 权限也可以由其他角色授予。
查看使用情况
显示 Image 的存储和使用统计信息:
显示 ImageStream 的存储和使用统计信息:
预期结果:
- 命令会输出当前管理员可见的 Image 或 ImageStream 资源的使用情况行。
验证 Image 签名
验证 Image 对象上记录的镜像签名身份:
将受信任条件保存回 Image 对象:
验证已保存的条件:
预期结果:
- Image 对象包含验证命令保存的受信任签名条件。
保存信任条件会更改 Image API 元数据。要回滚已保存的条件,请编辑 Image 对象并移除已保存的条件,或从已知良好的备份中恢复 Image 对象。
仅当不再需要签名记录时,才从 Image 对象中移除所有签名记录:
警告:
--remove-all会移除 Image 对象中的每条签名记录。通过 Registry 无法撤销此操作。执行命令后验证 Image 对象;如果错误地移除了记录,请从已知良好的备份中恢复 元数据。
清理 Image
确认执行清理可能会永久移除未使用的镜像元数据。如果同时运行 Registry 垃圾回收,则未引用的 Blob
可能会从存储中永久回收。请在维护时段运行这些命令,保留所需的备份,并在添加
--confirm 前查看试运行输出。
预览镜像清理:
预期结果:
- 试运行会列出清理候选项,但不会删除镜像元数据。
查看试运行输出后运行清理:
验证清理:
预期结果:
- 后续试运行不再列出已由确认命令清理的元数据。
使用 --whitelist 和允许列表模式排除存储库:
如需配置计划清理,请参阅设置和配置 Registry。
确认执行的清理不会自动还原。需要恢复时,请从备份中恢复已清理的元数据,从受信任的镜像源重新创建元数据,或重新导入镜像。
运行 Registry 垃圾回收
Registry 垃圾回收会从 Registry 存储中回收未被引用的 blob。确认后,无法从 Registry 中还原已回收的 blob。
在清理元数据后预览 Registry 垃圾回收:
预期结果:
- 命令会预览符合条件的未引用 blob,但不会删除它们。
仅在查看预览后运行 Registry 垃圾回收:
预期结果:
- 命令会从 Registry 存储中删除符合条件的未引用 blob。
也可以将 Registry 垃圾回收作为清理的一部分触发:
ac adm prune images 和 ac adm registry gc 默认都以试运行模式执行。请先查看预览,然后再添加 --confirm。确认回收 blob 后,无法从 Registry 中还原;如果所需的 blob 已被回收,请从存储备份中恢复数据,或从受信任的源重新复制镜像。
确认完成垃圾回收后,通过拉取或检查关键镜像来验证它们: