通过容器镜像服务企业版的Helm Chart功能,您可以高效便捷地托管和分发Kubernetes集群内的各种资源。在安装并配置Helm Chart客户端和配置企业版实例之后,您才可以推送和拉取Chart。

背景信息

Kubernetes提供了统一模式的API,能以YAML格式的文件定义Kubernetes集群内的资源。这些资源的种类繁多,例如无状态应用的部署 Deployment、有状态应用的部署StatefulSet、配置项ConfigMap等。

在这个基于YAML文件的软件交付体系不断完善过程中,云原生社区衍生了一个更高维度的概念及其实现工具,即Chart和Helm。

  • Chart是一系列Kubernetes集群内资源描述文件的组合,一个Chart可以是一个WordPress和MySQL的组合,也可以是一个etcd集群的组合。
  • Helm是一个命令行程序,用于管理这些Chart,以及其运行态Release。

容器镜像服务企业版支持托管v2和v3版本的Helm Chart,帮助您在云上便捷管理云原生资产。在企业版实例概览页开启Charts组件,待组件状态变为运行中,即可开始托管Chart类型仓库。

开启Chart

安装并配置客户端

  1. 从官方下载需要的Helm Chart版本
    说明 请确保客户端为v2或者v3版本,可以通过执行helm version -c命令查看客户端版本。以下为v2.14.2版本的使用示例。
    # 解压缩
    tar -zxvf helm-v2.14.2-linux-amd64.tgz
    # 移动至指定位置
    mv linux-amd64/helm /usr/local/bin/helm                    
  2. 安装Helm插件。
    说明 在安装Helm插件前,需要预先安装git。
    • 如果您位于海外或访问Github比较流畅,执行以下命令安装Helm插件。
      helm plugin install https://github.com/AliyunContainerService/helm-acr
    • 如果您位于国内且为Linux操作系统,执行以下命令安装Helm插件。
      git clone https://github.com/AliyunContainerService/helm-acr.git
      sed -i 's/github.com/helm-acr-releases.oss-cn-hangzhou.aliyuncs.com/g' helm-acr/scripts/install_plugin.sh
      helm plugin install helm-acr
    • 如果您位于国内且为Mac操作系统,执行以下命令安装Helm插件。
      git clone https://github.com/AliyunContainerService/helm-acr.git
      sed -i '' 's/github.com/helm-acr-releases.oss-cn-hangzhou.aliyuncs.com/g' helm-acr/scripts/install_plugin.sh
      helm plugin install helm-acr
  3. 初始化Helm环境。
    • 如果你当前在容器服务集群节点上,默认已经有初始化完成的Tiller,只需要初始化Client。并且希望避免访问Google Chart源,可以使用以下命令初始化Helm环境。
      helm init --client-only --skip-refresh
    • 如果你当前在自建的Kubernetes集群节点上,并且希望避免访问Google Chart源,可以使用以下命令初始化Helm环境。
      helm init --skip-refresh

配置企业版实例

  1. 配置访问凭证。

    在企业版实例管理的访问凭证页面,通过设置固定密码或者临时密码作为访问凭证的密码,控制台右侧获取访问凭证的账号名。这对账号名与密码将作为后续Helm Chart的访问凭证。

    获取凭证
  2. 配置访问控制策略。

    在企业版实例管理的访问控制页面,可以打开公网访问或者添加指定VPC打开专有网络访问,保证后续Helm Chart的上传。

    添加VPC打开公网访问入口
  3. 配置访问格式。
    在命名空间namespace下,创建一个Chart仓库repository,如下图所示。配置访问格式

    当命名空间开启了自动创建仓库功能后,无需提前在界面创建Chart仓库,可直接在终端Helm Push Chart仓库。

    企业版中Chart仓库的格式为 <实例名称>-chart.<Region ID>.cr.aliyuncs.com/<命名空间>/<Chart 仓库名>,Chart仓库的版本为<Chart 名称>-<版本号>。如果您希望使用VPC内网访问,则Chart仓库的格式为<实例名称>-chart-vpc.<Region ID>.cr.aliyuncs.com/<命名空间>/<Chart 仓库名>

  4. 配置本地仓库映射

    需要指定一个本地仓库名称,映射到线上的某一个命名空间下的某一个Chart仓库。

    export HELM_REPO_USERNAME='<企业版实例访问凭证中账号>';
    export HELM_REPO_PASSWORD='<企业版实例访问凭证中密码>';
    helm repo add <本地仓库名称> acr://<实例名称>-chart.<Region ID>.cr.aliyuncs.com/<命名空间>/<Chart 仓库> --username ${HELM_REPO_USERNAME} --password ${HELM_REPO_PASSWORD}            
    配置本地仓库映射

推送 Chart

# 本地创建一个Chart
helm create <Chart 名称>

# 推送Chart目录
helm push <Chart 名称> <本地仓库名称>

# 或者推送Chart压缩包
helm push <Chart 名称>-<Chart 版本>.tgz <本地仓库名称>            
推送chart

返回企业版实例控制台,可以看到Chart仓库新增一个版本,如下图所示。

版本列表

拉取 Chart

# 从线上Chart仓库更新本地Chart索引
helm repo update

# 拉取Chart
helm fetch <本地仓库名称>/<Chart 名称> --version <Chart 版本>

# 或者直接安装Chart
helm install -f values.yaml <本地仓库名称>/<Chart 名称> --version <Chart 版本>