再也不踩坑的kubernetes实战指南
上QQ阅读APP看书,第一时间看更新

3.2 安装Helm到K8S集群中

对于复杂的应用中间件需要设置镜像运行的需求、环境变量,并且需要定制存储、网络等设置,以及设计和编写Deployment、Configmap、Service及Ingress等相关yaml配置文件,再提交给Kubernetes进行部署,这些复杂的过程正在逐步被Helm应用包管理工具所实现。

3.2.1 基本概念

Helm是一个由CNCF孵化和管理的项目,用于对需要在K8S上部署复杂应用进行定义、安装和更新。Helm以Chart的方式对应用软件进行描述,可以方便地创建、版本化、共享和发布复杂的应用软件。

使用Helm会涉及以下几个术语:

  • Chart 一个Helm包,其中包含了运行一个应用所需要的工具和资源定义,还可能包含Kubernetes集群中的服务定义,类似于Homebrew中的formula、apt中的dpkg或者yum中的rpm文件。
  • Release 在K8S集群上运行一个Chart实例。在同一个集群上,一个Chart可以安装多次,例如有一个MySQL Chart,如果想在服务器上运行两个数据库,就可以基于这个Chart安装两次。每次安装都会生成新的Release,并有独立的Release名称。
  • Repository 用于存放和共享Chart的仓库。

简单来说,Helm的任务是在仓库中查找需要的Chart,然后将Chart以Release的形式安装到K8S集群中。

3.2.2 安装Helm

Helm由以下两个组件组成:

  • HelmClinet 客户端,拥有对Repository、Chart、Release等对象的管理能力。
  • TillerServer 负责客户端指令和K8S集群之间的交互,根据Chart的定义生成和管理各种K8S的资源对象。

可以通过二进制文件或脚本方式安装HelmClient。

下载最新版二进制文件并解压缩,下载地址为:https://github.com/helm/helm/releases

    [root@K8S-master01 ~]# tar xf helm-v2.11.0-linux-amd64.tar.gz
    [root@K8S-master01 ~]# cp linux-amd64/helm linux-amd64/tiller /usr/local/bin/

所有节点下载tiller:v[helm-version]镜像,helm-version为上述Helm的版本2.11.0,安装TillerServer:

    docker pull dotbalo/tiller:v2.11.0

使用helm init安装tiller:

创建Helm的ServiceAccount:

查看helm version及Pod的状态:

3.2.3 Helm的使用

helm search用于搜索可用的Chart,Helm初始化完成之后,默认配置为使用官方的K8S chart仓库,通过search查找可用的Chart:

查看详细信息:

下载一个Chart:

    helmfetch ChartName