通过 YAML 安装
目录
何时使用此方法?前提条件通过 YAML 安装 Alauda Container Platform Registry操作步骤配置参考重要字段验证更新/卸载 Alauda Container Platform Registry更新卸载何时使用此方法?
推荐适用于:
- 高级用户,具备 Kubernetes 经验,且希望采用手动方式。
- 需要企业级存储(NAS、AWS S3、Ceph 等)的生产级部署。
- 需要对 TLS、Ingress 进行细粒度控制的环境。
- 需要针对高级配置进行完整 YAML 自定义。
前提条件
- 将 Alauda Container Platform Registry 集群插件 安装 到目标集群。
- 已配置 kubectl,能够访问目标 Kubernetes 集群。
- 具备创建集群级资源的 cluster admin 权限。
- 获取一个已注册的 域名(例如,registry.yourcompany.com)创建域
- 为 Registry 数据选择一种存储后端:
- 对于基于文件系统的存储,请提供有效的 NAS 存储 或其他 RWX StorageClass(例如,NFS、GlusterFS 等)。
- 对于对象存储,请提供有效的 S3 存储(例如,AWS S3、Ceph 等)。如果当前没有可用的 S3 存储,请在集群中部署一个 MinIO(内置 S3)实例 部署 MinIO。
通过 YAML 安装 Alauda Container Platform Registry
操作步骤
-
创建一个 YAML 配置文件,命名为 registry-plugin.yaml,并使用以下模板:
-
根据您的环境自定义以下字段:
选择一种存储配置:
- 对于基于文件系统的存储,保留
persistence,并将s3storage.enabled设置为false。 - 对于 S3 存储,删除整个
persistence块,并将s3storage.enabled设置为true。
基于文件系统的存储示例:
S3 存储示例:
- 对于基于文件系统的存储,保留
-
规划 Ingress controller 并配置 session affinity。
选择与您的网络环境、运维要求以及现有流量管理模型相匹配的 Ingress controller。当 Registry 使用多个副本并共享文件存储(例如 NFS 或其他 RWX StorageClass)时,请使用所选 Ingress controller 的原生机制来配置 session affinity。
一次镜像推送会发送多个
POST、PATCH、PUT、HEAD和 manifest 请求;这些请求应到达同一个 Registry Pod。Kubernetes Service 的sessionAffinity: ClientIP设置在 Ingress controller 直接负载均衡到 Pod 端点时,不能保证粘性。对于 ingress-nginx,请使用基于客户端地址的 upstream 哈希:
如果您的环境通过 ACP ALB 暴露 Registry,请使用源 IP 哈希亲和性:
对于其他 Ingress controller 或云负载均衡器,请使用其等效的源 IP 或基于哈希的 session affinity 策略。如果 controller 仅支持基于 cookie 的粘性,请在以多个副本运行 Registry 之前,先使用生产环境中的 OCI client 验证推送行为;否则,请为该访问路径使用一个 Registry 副本。
-
创建 S3 凭据 secret:
将
<S3-CREDENTIALS-SECRET>替换为您的 S3 凭据 secret 名称。 -
将配置应用到集群:
配置参考
重要字段
当 spec.config.s3storage.enabled 设置为 true 时,请不要配置 spec.config.persistence。persistence 块仅用于基于文件系统的存储。
验证
- 检查插件:
- 验证 registry Pod:
更新/卸载 Alauda Container Platform Registry
更新
在 global 集群上执行以下命令,并根据上面的参数说明更新资源中的值,以完成更新:
卸载
在 global 集群上执行以下命令: