
# Helm Chart仓库
#### 操作场景
容器镜像服务企业版支持托管[Helm Chart](https://helm.sh/)。您可以在同一个命名空间内同时管理容器镜像和Helm Chart，实现在业务项目内同时使用容器镜像和Helm Chart。
#### 背景信息
Kubernetes提供了统一模式的API，能以YAML格式的文件定义Kubernetes集群中的资源，包括Pod、Service、Deployment、StatefulSet、Job等等。这些资源种类繁多，且分散的kubernetes应用配置文件难以管理、编辑和更新，因此云原生社区衍生了一个更高维度的概念及其实现工具，即Chart和Helm。
- Chart是描述相关的一组Kubernetes集群内资源的文件集合。
- Helm是一个命令行程序，用于管理这些Chart，以及其运行态Release。
 
#### 约束与限制
Helm版本必须为 3.7.0 及版本以上。
#### 使用Helm客户端上传及下载Helm Chart
容器镜像服务企业版支持通过Helm客户端管理Helm Chart，允许用户在本地终端直接推送、下载和更新Chart包，实现与Kubernetes集群的无缝集成
#### 安装Helm客户端
本文以在Linux操作系统的节点上安装为例，如在其他平台安装请下载对应安装包。关于安装Helm的更多信息，请参见[Installing Helm](https://helm.sh/docs/intro/install/)。
**操作步骤**
1. 执行以下命令安装Helm 3： 
   ```
   curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
   chmod 700 get_helm.sh
   ./get_helm.sh
   ```
   ![](https://support.huaweicloud.com/usermanual2-swr/public_sys-resources/note_3.0-zh-cn.png)
   "get_helm.sh"安装脚本默认拉取最新版本，如需安装其他版本，请从官方下载需要的[Helm版本](https://github.com/helm/helm/releases)。
   
   
2. 验证安装： 
   ```
   helm version
   ```
   
   
#### 添加Helm仓库
需要将企业版Chart仓库添加为本地Helm客户端的远程仓库。
**操作步骤**
1. 获取长期访问凭证，详见[创建长期凭证](https://support.huaweicloud.com/usermanual2-swr/swr_02_0422.html#swr_02_0422__section193533819537)。
2. 执行以下命令添加仓库： 
   ```
   helm repo add {本地仓库名称} https://<命名空间>.swr.<region>.myhuaweicloud.com/chartrepo/<命名空间> --username <AccessKey> --password <SecretKey>
   ```
   - 示例：
     ```
     helm repo add group https://test-01-2v8iom.swr.cn-east-3.myhuaweicloud.com/chartrepo/group --username 0504186e6a8010e01f3ec00111122a --password <SecretKey>
     ```
     
   
   
   
   
3. 验证添加： 
   ```
   helm repo list
   ```
   
   
 
#### 推送Helm Chart
需要将本地Chart包推送至企业版仓库。
**操作步骤**
1. 安装Helm Push插件。 
   ![](https://support.huaweicloud.com/usermanual2-swr/public_sys-resources/note_3.0-zh-cn.png)
   在安装Helm Push插件前，需要预先安装Git。
   ```
   helm plugin install https://github.com/chartmuseum/helm-push
   ```
   
   
2. 在节点上执行如下命令，创建一个Chart。 
   ```
   helm create [Chart名称]
   ```
   示例：**helm create chart-demo**
   
   
3. 推送Chart： 
   - 目录方式：**helm push \[Chart名称\] \[本地仓库名称\]**
     ```
     helm push chart-demo group
     ```
     
   
   - 压缩包方式：**helm push \[Chart名称\]-\[Chart版本\].tgz \[本地仓库名称\]**
     ```
     # 压缩Chart文件
     tar zcvf chart-demo-1.0.0.tgz chart-demo/  
     # 上传Chart压缩包
     helm push chart-demo-1.0.0.tgz group
     ```
     
   
   
   
   
 
#### 下载Helm Chart
需要从企业版仓库下载指定版本的Chart包。
1. 更新仓库Chart信息。 
   ```
   helm repo update
   ```
   
   
2. 下载指定版本Chart。 
   **helm pull \[本地仓库名称\]/\[Chart名称\] --version \[Chart版本\]**
   示例：
   ```
   helm pull group/chart-demo --version 1.0.0
   ```
   
   
 
