helm说的简单点呢,就是为了让k8s像docker compose一样快速启动一组pod,通过一个自定义的模板文件,让k8s运行应用,本篇呢我们就从安装到使用一一讲解。
helm
helm分为helm客户端和tiller服务器。k8s的部署如果用kubectl一个个创建显得太繁琐了;为了让k8s像docker compose一样快速启动一组pod,就有了helm。
helm客户端负责chart和release的创建和管理以及和tiller的交互,而tiller服务器则运行在k8s集群中,他负责处理helm客户端的请求,然后转化为 KubeApiServer 的请求跟k8s交互
- chart 是创建一个应用的信息集合,包含各种k8s的对象的配置模板、参数定义、依赖关系、文档说明等
- release 是chart 的运行实例,代表了一个正在运行的应用。当chart被安装到k8s集群,就生成了一个release,chart能多次安装到同一个集群,每次安装都是一个release
helm 部署
客户端
下载了之后解压
1 | 复制代码sudo tar -zxvf helm-v2.16.1-linux-amd64.tar.gz |
解压之后放到linux执行目录下,修改权限
1 | bash复制代码sudo cp linux-amd64/helm /usr/local/bin/ |
输入 helm 显示提示信息则安装成功
安装tiller服务端
安装tiller服务器,还需要在机器上配置好kubectl工具和kubeconfig文件,确保kubectl工具可以在这台机器上访问apiserver切正常使用
因为k8s apiserver开启了rbac的访问控制,所以需要创建tiller使用的service account:tiller并分配合适的角色给他,可以查看helm的文档 link
创建clusterRoleBinding
1 | yaml复制代码apiVersion: v1 |
创建
1 | lua复制代码kubectl create -f rbac-config.yaml |
初始化tiller
1 | css复制代码helm init --service-acount tiller --skip-refresh |
这个过程拉取镜像可能有问题,会被墙掉,可以自行去dockerhub中找
gcr.io.kubernetes-helm.tiller:v2.16.1 版本可以通过kubectl describe 看下是什么,要下载对应的
然后通过改tag让容器运行起来
1 | bash复制代码docker tag fishead/gcr.io.kubernetes-helm.tiller:v2.16.1 gcr.io/kubernetes-helm/tiller:v2.16.1 |
至此helm就安装好了
helm 使用
helm 仓库地址
创建chart包
当前目录创建一个 myapp chart包
1 | lua复制代码$ helm create myapp |
创建完之后,目录结构如下
1 | 复制代码myapp - chart 包目录名 |
部署应用
通过命令 helm install app文件夹路径
1 | shell复制代码$ helm install /myapp |
更新应用
通过命令 helm upgrade app名称 app文件夹路径
1 | shell复制代码$ helm upgrade myapp /myapp |
删除应用
1 | arduino复制代码$ helm delete myapp |
但是helm还是会保留已经删除的chart的历史版本,当你重新创建相同名称的chart时,会报错
1 | arduino复制代码Error: a release named nacos already exists. |
如果想彻底删除镜像可以使用
1 | sql复制代码$ helm delete --purge myapp |
本文转载自: 掘金