更新时间:2024-12-04 GMT+08:00

通过Helm v3客户端部署应用

前提条件

  • 在CCE中创建的Kubernetes集群已对接kubectl,具体请参见使用kubectl连接集群
  • 部署Helm时如果需要拉取公网镜像,请提前为节点绑定弹性公网IP。

安装Helm v3

本文以Helm v3.3.0为例进行演示。

如需选择其他合适的版本,请访问https://github.com/helm/helm/releases

  1. 在连接集群的虚拟机上下载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

  1. 从Helm官方推荐的仓库Artifact Hub中查找模板包,并配置Helm仓库。

    helm repo add {repo_name} {repo_addr}
    例如,以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

常见问题

  • 执行Helm version时,提示如下错误信息:
    Client:
    &version.Version{SemVer:"v3.3.0",
    GitCommit:"012cb0ac1a1b2f888144ef5a67b8dab6c2d45be6", GitTreeState:"clean"}
    E0718 11:46:10.132102    7023 portforward.go:332] an error occurred
    forwarding 41458 -> 44134: error forwarding port 44134 to pod
    d566b78f997eea6c4b1c0322b34ce8052c6c2001e8edff243647748464cd7919, uid : unable
    to do port forwarding: socat not found.
    Error: cannot connect to Tiller

    出现上述问题,说明未安装socat,请执行如下命令安装socat。

    yum install socat -y
  • 在操作系统为EulerOS 2.9的节点执行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
  • socat已安装,执行Helm version时,提示如下错误信息:
    $ helm version
    Client: &version.Version{SemVer:"v3.3.0", GitCommit:"021cb0ac1a1b2f888144ef5a67b8dab6c2d45be6", GitTreeState:"clean"}
    Error: cannot connect to Tiller

    Helm模板从节点上的“.Kube/config”路径中读取配置证书和Kubernetes进行通讯,出现上述错误信息说明kubectl配置有误,请重新对接kubectl,具体请参见使用kubectl连接集群

  • 对接云存储后,存储未创建成功。

    出现上述问题可能是创建的PVC中annotation字段导致的,请修改模板名称后再次进行安装。

  • 如果kubectl没有配置好,helm install时会出现如下报错:
    # 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连接集群