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
- 官方 release 地址 https://github.com/helm/helm/releases 下载。
- 解压
tar -zxvf helm-v2.0.0-linux-amd64.tgz
- 将
helm
放到执行路径mv linux-amd64/helm /usr/local/bin/helm
搞定。
此时如果不需要安装服务端(Tiller)的话我们通过如下命令来初始化客户端就ok:
1 | helm init --client-only --stable-repo-url https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts/ |
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 | 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/ |
- rbac 配置。自Kubernetes 1.6版本开始,API Server启用了RBAC授权。依次执行如下命令:
1 | kubectl create serviceaccount --namespace kube-system tiller |
前两行也可以替换为应用 k8s 配置:
1 |
|
测试使用
1 | helm version |
公共仓库
微软也提供了helm 仓库的镜像, 找到这儿的朋友推荐使用微软的镜像:
- stable: http://mirror.azure.cn/kubernetes/charts/
- incubator: http://mirror.azure.cn/kubernetes/charts-incubator/
参考信息
Helm 催生了社区的发展壮大,越来越多的软件提供商,如 Bitnami 等公司,开始提供高质量的 Charts。您可以在 https://kubeapps.com/ 中寻找和发现已有的 Charts。