Helm 介绍和安装

Helm 是由 Deis 发起的一个开源工具,有助于简化部署和管理 Kubernetes 应用。本文介绍了 helm 的基本概念和安装方法,针对国内网络情况提供阿里的 helm charts 仓库。

注:阿里云Kubernetes服务已经内置提供了Helm/Chart支持,可以直接使用
https://help.aliyun.com/document_detail/58587.html

Helm 基本概念

Helm 可以理解为 Kubernetes 的包管理工具,可以方便地发现、共享和使用为Kubernetes构建的应用,它包含几个基本概念

  • Chart:一个 Helm 包,其中包含了运行一个应用所需要的镜像、依赖和资源定义等,还可能包含 Kubernetes 集群中的服务定义,类似 Homebrew 中的 formula,APT 的 dpkg 或者 Yum 的 rpm 文件,
  • Release: 在 Kubernetes 集群上运行的 Chart 的一个实例。在同一个集群上,一个 Chart 可以安装很多次。每次安装都会创建一个新的 release。例如一个 MySQL Chart,如果想在服务器上运行两个数据库,就可以把这个 Chart 安装两次。每次安装都会生成自己的 Release,会有自己的 Release 名称。
  • Repository:用于发布和存储 Chart 的仓库。

Helm 组件

Helm 采用客户端/服务器架构,有如下组件组成:

  • Helm CLI 是 Helm 客户端,可以在本地执行
  • Tiller 是服务器端组件,在 Kubernetes 群集上运行,并管理 Kubernetes 应用程序的生命周期
  • Repository 是 Chart 仓库,Helm客户端通过HTTP协议来访问仓库中Chart的索引文件和压缩包。

    15019325767895

安装前准备

因为 helm 服务端(Tiller)是部署在 k8s 集群上面,客户端需要的 k8s 集群信息就是本地的集群信息。所以需要预先安装 kubectl ,配置好 k8s 集群通信。

安装方式可参考Kubernetes 本地测试环境 MiniKube 介绍及国内安装配置#kubectl 安装一节。
如果是 minikube 集群则 minikube 会自动配置集群信息,其他集群请从集群管理员获得集群信息配置在 ~/.kube/config 中。

配置后,通过 kubectl cluster-info 检查是否OK。

安装 helm client

参照官方文档:https://helm.sh/docs/using_helm/#installing-helm

  1. 官方 release 地址 https://github.com/helm/helm/releases 下载。
  2. 解压 tar -zxvf helm-v2.0.0-linux-amd64.tgz
  3. helm 放到执行路径 mv linux-amd64/helm /usr/local/bin/helm

搞定。

此时如果不需要安装服务端(Tiller)的话我们通过如下命令来初始化客户端就ok:

1
2
3
helm init --client-only --stable-repo-url https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts/
helm repo add incubator https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/
helm repo update

chart 仓库使用: https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts/,参考的是阿里的 helm 文档

安装 TILLER

官方文档:https://helm.sh/docs/using_helm/#installing-tiller

这个由于要下载镜像,国内网络你懂的。索性阿里提供国内镜像,所以参照阿里的文章: 利用Helm简化Kubernetes应用部署 安装。

其中镜像在阿里云杭州区的 google_containers/tiler 仓库 https://cr.console.aliyun.com/images/cn-hangzhou/google_containers/tiller/detail

  1. 执行命令:
1
helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.13.1 --stable-repo-url https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts/
  1. rbac 配置。自Kubernetes 1.6版本开始,API Server启用了RBAC授权。依次执行如下命令:
1
2
3
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

前两行也可以替换为应用 k8s 配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system

测试使用

1
2
3
4
helm version
helm search
helm ls
## 更多命令参考 helm --help

公共仓库

微软也提供了helm 仓库的镜像, 找到这儿的朋友推荐使用微软的镜像:

参考信息

Helm 催生了社区的发展壮大,越来越多的软件提供商,如 Bitnami 等公司,开始提供高质量的 Charts。您可以在 https://kubeapps.com/ 中寻找和发现已有的 Charts。

谢谢鼓励