# 通过Helm v3客户端部署应用
#### 前提条件
- 在CCE中创建的Kubernetes集群已对接kubectl，具体请参见[步骤一：下载kubectl](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html#cce_10_0107__section37321625113110)。
- 部署Helm时如果需要拉取公网镜像，请提前为节点绑定弹性公网IP。
 
 #### 安装Helm v3
本文以Helm v3.3.0为例进行演示。
如需选择其他合适的版本，请访问<https://github.com/helm/helm/releases>。
1. 在连接集群的虚拟机上下载[v3.3.0版本](https://get.helm.sh/helm-v3.3.0-linux-amd64.tar.gz)的Helm客户端。
   
   ```
   wget https://get.helm.sh/helm-v3.3.0-linux-amd64.tar.gz
   ```
   
   
2. 解压Helm包。 
   ```
   tar -xzvf helm-v3.3.0-linux-amd64.tar.gz
   ```
   
   
3. 将Helm复制到系统path路径下，以下为/usr/local/bin/helm。 
   ```
   mv linux-amd64/helm /usr/local/bin/helm
   ```
   
   
4. 查看Helm版本。 
   ```
   helm version
   ```
   回显如下：
   ```
   version.BuildInfo{Version:"v3.3.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}
   ```
   
   
 
#### 安装Helm模板包
您可以使用Helm安装模板包（Chart），在使用Helm命令安装模板包前，您可能需要了解三大概念帮助您更好地使用Helm。
- 模板包（Chart）：模板包中含有Kubernetes应用的资源定义以及大量的配置文件。
- 仓库（Repository）：仓库是用于存放共享模板包的地方，您可以从仓库中下载模板包至本地安装，也可以选择直接在线安装。
- 实例（Release）：实例是Helm在Kubernetes集群中安装模板包后的运行结果。一个模板包通常可以在一个集群中安装多次，每次安装都会创建一个新的实例。以MySQL模板包为例，如果您想在集群中运行两个数据库，可以安装该模板包两次，每一个数据库都会拥有自己的release 和release name。
更多关于Helm命令的使用方法请参见[使用Helm](https://helm.sh/zh/docs/intro/using_helm/)。
1. 从Helm官方推荐的仓库[Artifact Hub](https://artifacthub.io/packages/search?kind=0)中查找模板包，并配置Helm仓库。
   
   ```
   helm repo add {repo_name} {repo_addr}
   ```
   例如，以[WordPress模板包](https://artifacthub.io/packages/helm/bitnami/wordpress)为例：
   ```
   helm repo add bitnami https://charts.bitnami.com/bitnami
   ```
   
   
2. 使用**helm install** 命令安装模板包。
   
   ```
   helm install {release_name} {chart_name} --set key1=val1
   ```
   例如，以安装WordPress为例，[步骤1]添加的仓库中WordPress的模板包为bitnami/wordpress，并将实例自定义命名为my-wordpress，同时指定一些配置参数。
   ```
   helm install my-wordpress bitnami/wordpress \
        --set mariadb.primary.persistence.enabled=true \
        --set mariadb.primary.persistence.storageClass=csi-disk \
        --set mariadb.primary.persistence.size=10Gi \
        --set persistence.enabled=false
   ```
   您可以使用**helm show values** ***{chart_name}*** 命令查看模板可配置的选项。例如，查看WordPress的可配置项：
   ```
   helm show values bitnami/wordpress
   ```
   
   
3. 查看已安装的模板实例。 
   ```
   helm list
   ```
   
   
 
#### 常见问题
- **在操作系统为EulerOS 2.9或Huawei Cloud EulerOS的节点执行yum install socat --y，如报如下错误：**
  ```
  No match for argument: socat
  Error: Unable to find a match: socat
  ```
  说明节点镜像未自带socat镜像，请手动下载rpm包后，执行以下命令安装，其中rpm包名请根据实际情况进行替换：
  ```
  rpm -i socat-1.7.3.2-8.oe1.x86_64.rpm
  ```
  表1socat镜像rpm包下载地址 
  | 操作系统                   | 下载地址                                                                                                                                                                                                                                                                                                                                                                                                     |
  |:---|:---|
  | EulerOS 2.9             | - [x86](https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS-SP3/everything/x86_64/Packages/socat-1.7.3.2-8.oe1.x86_64.rpm)  - [ARM](https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS-SP3/everything/aarch64/Packages/socat-1.7.3.2-8.oe1.aarch64.rpm)   |
  | Huawei Cloud EulerOS 2.0   | - [x86](https://repo.huaweicloud.com/hce/2.0/os/x86_64/Packages/socat-1.7.3.2-8.hce2.x86_64.rpm)  - [ARM](https://repo.huaweicloud.com/hce/2.0/os/aarch64/Packages/socat-1.7.3.2-8.hce2.aarch64.rpm)                                                                     |
  | Huawei Cloud EulerOS 1.1 | [x86](https://repo.huaweicloud.com/hce/1.1/os/x86_64/Packages/socat-1.7.3.2-2.hce1c.x86_64.rpm)                                                                                                                                                                                                                                                                                                          |
     
  
- **对接云存储后，存储未创建成功。**
  出现上述问题可能是创建的PVC中annotation字段导致的，请修改模板名称后再次进行安装。
  
- **如果kubectl没有配置好，Helm安装模板包时出现"Error: Kubernetes cluster unreachable..."错误信息。**
  例如：
  ```
  helm install prometheus/ --generate-name
  ```
  错误信息如下：
  ```
  WARNING: This chart is deprecated
  Error: Kubernetes cluster unreachable: Get "http://localhost:8080/version?timeout=32s": dial tcp [::1]:8080: connect: connection refused
  ```
  **解决办法：** 给节点配置kubeconfig，配置方法请参见[步骤一：下载kubectl](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html#cce_10_0107__section37321625113110)。
  
 
