首页 / 最佳实践 / 部署高可用的 ChartMuseum

部署高可用的 ChartMuseum

ChartMuseum 是一个开源 Helm Chart Repository 服务器。本文将介绍如何部署高可用(即开启持久化存储,且副本数大于 1)的 ChartMuseum。

部署完成后您可以在应用管理的模板仓库中添加具有 管理 权限的 Helm Chart 仓库,对接至该 ChartMuseum,之后即可对仓库中的模板进行添加、管理版本、删除等操作。

前提条件

操作步骤

  1. 在左侧导航栏中,单击 应用商店管理 > 模板仓库

  2. 单击系统预置的 public-charts,在应用模板区域的 chartmuseum 卡片上单击 部署模板

  3. 配置基本信息,指定 项目命名空间模板版本

  4. 参考以下说明,配置 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 中的证书和私钥。
  5. 配置 Ingress。默认不开启,开启后可通过域名访问 ChartMuseum 模板仓库。本例中保持默认值。

  6. 参考以下说明,配置 Persistence。

    参数 说明
    后端存储类型 选择 localamazon。本例中选择 local
    Persistence 开启 默认不开启,此时 ChartMuseum 不支持高可用。本例中需 开启 持久化存储。
    持久化访问模式 默认为 ReadWriteOnce,请根据存储支持的访问模式按需设置。
    持久化存储大小 默认为 8Gi。
    持久化存储目录 表示 ChartMuseum Pod 启动后容器内的存储路径,默认为 /storage。
    持久化存储类名称 指定一个已存在的持久化存储类名称。
    本地存储目录 表示 ChartMuseum 中模板在存储节点中实际存放的路径,默认为 /cpass/chartmuseum。
  7. 单击 部署

    系统将自动跳转至 Container Platform 的 应用管理 > 模板应用 页面,等待状态变为 部署成功 即可。

获取访问地址

ChartMuseum 模板部署成功后,单击 应用名称。在资源列表区域单击Service 类型 对应的资源名称,获取 ChartMuseum 的访问地址。

说明:若未配置 TLS Secret,则访问地址为 http://<节点 IP>:<主机端口>;若配置 TLS Secret,则访问地址为 https://<节点 IP>:<主机端口>

如下图所示,本例中访问地址为 http://192.168.188.101:30023http://192.168.188.51:30023

结果验证

使用 Helm V3 工具测试 ChartMuseum。

  1. 在本地添加 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>
  2. 获取仓库列表,验证仓库是否添加成功。

    helm repo list
  3. 创建并打包 Chart。

    # 本例中 Chart 名称为 test;不指定版本时默认生成 0.1.0 版本,因此将生成 test-0.1.0.tgz
    helm create <your_chartname>    
    helm package <your_chartname>
  4. 向 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  
  5. 查看 ChartMuseum 中的模板,上传成功则表示 ChartMuseum 可正常使用。

    # Update repo
    helm repo update
    
    # Search
    helm search repo <chartmuseum-repo_name>

    如下图所示,test-0.1.0.tgz 已成功上传至 ChartMuseum。