部署高可用的 ChartMuseum
ChartMuseum 是一个开源 Helm Chart Repository 服务器。本文将介绍如何部署高可用(即开启持久化存储,且副本数大于 1)的 ChartMuseum。
部署完成后您可以在应用管理的模板仓库中添加具有 管理 权限的 Helm Chart 仓库,对接至该 ChartMuseum,之后即可对仓库中的模板进行添加、管理版本、删除等操作。
前提条件
-
请确保待部署 ChartMuseum 应用的集群中已部署分布式存储,以实现模板的持久化存储。
-
部署 NFS 共享存储可参考 创建存储类:NFS 共享存储 。
-
如需开启 TLS,请提前在 Container Platform 相应命名空间下的 配置 > 保密字典 页面创建 TLS 类型的 Secret。
操作步骤
-
在左侧导航栏中,单击 应用商店管理 > 模板仓库。
-
单击系统预置的 public-charts,在应用模板区域的 chartmuseum 卡片上单击 部署模板。
-
配置基本信息,指定 项目、命名空间 及 模板版本。
-
参考以下说明,配置 basicConfiguration。本例中均保持默认值。
说明:您可以按需修改如下参数。如无特殊需求,均可使用默认值。
参数 说明 BaseDomain 组件注释或标签键值的关键字,为系统内部约定的字符串,固定为 cpass.io
,非特殊情况无需修改。Global Namespace global 系统的命名空间,固定为 cpass-system
,非特殊情况无需修改。镜像仓库地址 填写镜像仓库地址,默认为 harbor.alauda.cn
。如不修改该地址,部署后将会自动替换为目标集群的镜像仓库地址。镜像名称 填写镜像名称,默认为 3rdparty/chartmuseum
。镜像版本 填写镜像版本,默认为 v3.2
。副本数 填写 Pod 副本数,默认为 1
。部署高可用 ChartMuseum 时副本数需大于 1,通常建议配置为2
。允许匿名访问 Get 请求 默认关闭。开启之后可匿名获取 Chart 列表,下载某个 Chart 等。 是否部署模板仓库 默认关闭。当 ChartMuseum 被部署到 global 集群时,打开 是否部署模板仓库 开关,将会部署一个 ChartRepo 资源,此时被部署的 ChartMuseum 自动出现在 模板仓库 中。 BasicAuth Secret 名称 默认为空,表示无需用户名/密码即可访问模板仓库。您可以指定命名空间下已有的凭据;或单击 创建,快速创建所需的凭据。部署完成后可通过凭据中配置的用户名/密码访问模板仓库。 内部路由类型 默认为 NodePort,您可以按需选择 Cluster IP、ExternalName 或 LoadBalancer。 内部路由对外端口 默认为 8080。 内部路由主机端口 默认为 30021。您可以按需自定义,通常配置在 30000~32000 之间。 TLS Secret 名称 指定命名空间下已有的 TLS Secret,表示 ChartMuseum 将以 TLS 方式启动,启动时自动挂载该 Secret 中的证书和私钥。 -
配置 Ingress。默认不开启,开启后可通过域名访问 ChartMuseum 模板仓库。本例中保持默认值。
-
参考以下说明,配置 Persistence。
参数 说明 后端存储类型 选择 local 或 amazon。本例中选择 local。 Persistence 开启 默认不开启,此时 ChartMuseum 不支持高可用。本例中需 开启 持久化存储。 持久化访问模式 默认为 ReadWriteOnce,请根据存储支持的访问模式按需设置。 持久化存储大小 默认为 8Gi。 持久化存储目录 表示 ChartMuseum Pod 启动后容器内的存储路径,默认为 /storage。 持久化存储类名称 指定一个已存在的持久化存储类名称。 本地存储目录 表示 ChartMuseum 中模板在存储节点中实际存放的路径,默认为 /cpass/chartmuseum。 -
单击 部署。
系统将自动跳转至 Container Platform 的 应用管理 > 模板应用 页面,等待状态变为 部署成功 即可。
获取访问地址
ChartMuseum 模板部署成功后,单击 应用名称。在资源列表区域单击Service 类型 对应的资源名称,获取 ChartMuseum 的访问地址。
说明:若未配置 TLS Secret,则访问地址为 http://<节点 IP>:<主机端口>
;若配置 TLS Secret,则访问地址为 https://<节点 IP>:<主机端口>
。
如下图所示,本例中访问地址为 http://192.168.188.101:30023
或 http://192.168.188.51:30023
。

结果验证
使用 Helm V3 工具测试 ChartMuseum。
-
在本地添加 Chart 仓库。本例中为
helm repo add chartmuseum-repo http://192.168.188.101:30023
。# None Authentication helm repo add <chartmuseum-repo_name> http://<your_chartmuseum_address>:<your_chartmuseum_port> # Basic Authentication helm repo add --username=<user_name> --password=<user_paasword> <chartmuseum-repo_name> http://<your_chartmuseum_address>:<your_chartmuseum_port> # TLS Enabled and Basic Authentication helm repo add --ca-file=ca.pem --username=<user_name> --password=<user_paasword> <chartmuseum-repo_name> https://<your_chartmuseum_address>:<your_chartmuseum_port>
-
获取仓库列表,验证仓库是否添加成功。
helm repo list
-
创建并打包 Chart。
# 本例中 Chart 名称为 test;不指定版本时默认生成 0.1.0 版本,因此将生成 test-0.1.0.tgz helm create <your_chartname> helm package <your_chartname>
-
向 ChartMuseum 中上传 Chart 模板。
# 本例中将上传生成的 test-0.1.0.tgz;无认证时无需输入 -u <user_name>:<user_password> 字段 curl -u <user_name>:<user_password> --data-binary "@<your_chartname-0.1.0>.tgz" http://<your_chartmuseum_address>:<your_chartmuseum_port>/api/charts
-
查看 ChartMuseum 中的模板,上传成功则表示 ChartMuseum 可正常使用。
# Update repo helm repo update # Search helm search repo <chartmuseum-repo_name>
如下图所示,test-0.1.0.tgz 已成功上传至 ChartMuseum。