部署高可用的 Docker Registry
Docker Registry 是一个镜像存储和分发的系统。本文将介绍如何部署、集成高可用的 Docker Registry,并分配指定项目使用,以实现镜像的展示与管理等功能。
前提条件
-
推荐使用 MinIO 对象存储,以实现镜像的持久化存储。请确保已部署对象存储,并完成了存储桶的创建,可正常上传/下载文件。具体步骤请参考 创建对象存储 。
-
请提前在待部署 Docker Registry 应用的命名空间下创建访问 MinIO 对象存储的 Secret。
# 创建一个名称为 s3-secret 的 secret 命令。 # 其中 access-key-id 和 secret-access-key 这两个 key 值为固定字符串,无需修改,分别表示用户名和密码;对应的 value 值(myaccesskey 和 mysecretaccesskey)需填写部署 MinIO 时配置的 Access Key 和 Secret Key。 kubectl create secret generic s3-secret \ --from-literal="access-key-id=myaccesskey" \ --from-literal="secret-access-key=mysecretaccesskey" -n <namespace>
-
如需开启 TLS,请提前在待部署 Docker Registry 应用的命名空间下创建 TLS 类型的 Secret。
# 创建一个名称为 tls-secret,类型为 tls 的 secret 命令。 # 其中 server.pem 和 server-key.pem 是通过自签名根证书 CA 颁发的证书和 key 文件。 kubectl create secret tls tls-secret --cert=server.pem --key=server-key.pem -n <namespace>
部署 docker-registry
-
在左侧导航栏中,单击 应用商店管理 > 模板仓库。
-
单击系统预置的 public-charts,在应用模板区域的 docker-registry 卡片上单击 部署模板。
-
配置基本信息,指定 项目、命名空间 及 模板版本。
-
参考以下说明,配置 basicConfiguration。
说明:本例中除主机地址修改为集群的某个节点地址外,其余参数均使用默认值。
参数 说明 BaseDomain 组件注释或标签键值的关键字,为系统内部约定的字符串,固定为 cpass.io
,非特殊情况无需修改。镜像仓库地址 填写镜像仓库地址,默认为 harbor.alauda.cn
。如不修改该地址,部署后将会自动替换为目标集群的镜像仓库地址。Pruner/Registry 镜像名称 填写镜像名称。Pruner 镜像名称默认为 3rdparty/docker-registry-pruner
,Registry 镜像名称默认为ait/registry
。Pruner/Registry 镜像版本 填写镜像版本,Pruner 镜像名称默认为 v3.10.0
,Registry 镜像名称默认为v2.7.1-alauda.6
。Pruner/Registry 镜像拉取策略 选择镜像拉取策略,默认为 IfNotPresent
。- Always:总是从远程仓库拉取镜像。
- Never:只使用本地镜像,从不去远程仓库拉取。
- IfNotPresent:本地有则使用本地镜像,本地没有则从远程仓库拉取镜像。
Basic 认证 默认不开启,表示无需用户名/密码即可访问镜像仓库。开启后,您需要配置 Basic 认证用户名及密码。部署完成后需通过配置的用户名/密码访问镜像仓库。 主机地址 指定一个可以访问到 Registry Nodeport 的主机地址,通常填写集群的任一节点地址即可。 GC 间隔时间(单位:秒) Registry GC 间隔时间,即每隔多久进行一次 GC 垃圾回收,默认为 604800
。内部路由类型 默认为 NodePort,您可以按需选择 Cluster IP、ExternalName 或 LoadBalancer。 内部路由对外端口 默认为 5000。 内部路由主机端口 默认为 30011。您可以按需自定义,通常配置在 30000~32000 之间。 TLS Secret 名称 指定命名空间下已有的 TLS Secret,表示 Docker Registry 将以 TLS 方式启动,启动时自动挂载该 Secret 中的证书和私钥。 -
配置 Ingress。默认不开启,开启后可通过域名访问 Docker Registry 镜像仓库。本例中保持默认值。
-
参考以下说明,配置 Persistence。
参数 说明 S3 存储 开启 默认关闭,本例中需开启 S3 存储。 高可用 开启 开启 S3 存储后默认开启高可用,此时 Pod 副本数为 2;关闭高可用时 Pod 副本数为 1。 端点(endpoint) 填写 MinIO 集群详情页面显示的 MinIO 访问地址。 S3 存储桶(bucket) 填写已创建的存储桶的名称。 S3 Secret 名称 选择提前创建的用于访问 MinIO 对象存储的 secret。 -
单击 部署。
系统将自动跳转至 Container Platform 的 应用管理 > 模板应用 页面,等待状态变为 部署成功 即可。
获取访问地址
Docker Registry 部署成功后,单击 应用名称。在资源列表区域单击 Service 类型 对应的资源名称,获取 Docker Registry 的访问地址。
说明:若未配置 TLS Secret,则访问地址为 http://<节点 IP>:<主机端口>
;若配置 TLS Secret,则访问地址为 https://<节点 IP>:<主机端口>
。
如下图所示,本例中访问地址为 http://192.168.176.154:30011
或 http://192.168.176.58:30011
。

上传镜像
登录集群控制节点,使用 docker push
命令上传镜像。

工具链集成
-
进入 平台管理 视图。
-
在左侧导航栏中,单击 工具链管理 > 工具链集成。
-
单击 集成,选择 制品管理 中的 Docker Registry。
-
参考以下说明,配置集成参数。
参数 说明 集成名称 输入集成工具的名称,请填写 docker-registry。 访问地址 工具的访问地址,请填写 Docker Registry 的访问地址。 API 地址 集成工具的服务地址,请填写 Docker Registry 的访问地址。 凭据 如果部署 Docker Registry 时开启了 Basic 认证,则需要创建凭据,配置登录 Docker Registry 时使用的用户名/密码。本例中无需配置。 -
单击 集成。
-
镜像上传成功后,项目列表中将显示现有的工具项目名称。单击
> 分配平台项目。
-
选择需要分配的项目,单击 分配。
结果验证
-
进入 Container Platform,选择指定项目。
-
在左侧导航栏中,单击 镜像仓库,可查看已分配给本项目的镜像地址列表。
-
创建原生应用或计算组件时,即可通过 选择 的方式从镜像仓库中筛选所需镜像。