helm安装
Helm相当于linux环境下的yum包管理工具。helm是k8s中的一个命令行客户端工具,helm是tiller的客户端,tiller是一个守护进程,接收helm的请求,helm把请求交给tiller,tiler和apiserver交互,由apiserver负责完成创建,我们用哪个chart需要下载到本地,基于本地这个chart部署实例,这个部署的实例叫做release。
1.chart是什么?
一个helm程序包,比方说我们部署nginx,需要deployment的yaml,需要service的yaml,这两个清单文件就是一个helm程序包,在k8s中把这些yaml清单文件叫做chart图表
2.values.yaml文件
values.yaml文件为模板中的文件赋值,可以实现我们自定义安装,如果是chart开发者需要自定义模板,如果是chart使用者只需要修改values.yaml即可。
3.helm可理解如下
helm把kubernetes资源打包到一个chart中,制作并完成各个chart和chart本身依赖关系并利用chart仓库实现对外分发,而helm还可实现可配置的对外发布,通过values.yaml文件完成可配置的发布,如果chart版本更新了,helm自动支持滚更更新机制,还可以一键回滚,但是不是适合在生产环境使用,除非具有定义自制chart的能力,helm属于kubernetes一个项目,下载地址:
https://github.com/helm/helm/releases
找这个checksum的,解压之后按下面解压即可
helm官方网站:
helm 官方的chart站点:
4.repository、release、chart关系
repository:存放chart图表的仓库,提供部署k8s应用程序需要的那些yaml清单文件
release:特定的chart部署于目标集群上的一个实例
chart--->通过values.yaml这个文件赋值-->生成release实例
helm也是go语言开发的
5.安装helm客户端,在k8s的master节点操作
下载软件包,软件包所在百度网盘地址如下:
链接:https://pan.baidu.com/s/15Qlcng6--QwCxoZjt1TGeA 提取码:c70b
tar -xzvf helm-v2.13.1-linux-amd64.tar.gz
cd linux-amd64
cp helm /usr/local/bin
helm version
报错,显示没有tiller server端
安装helm的服务端tiller
安装helm服务端tiller
rbac.yaml参考链接如下:
https://github.com/helm/helm/blob/master/docs/rbac.md
cat rbac.yaml
apiVersion: v1 kind: ServiceAccount metadata: name: tiller namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: tiller roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: tiller namespace: kube-system
更新yaml文件
kubectl apply -f rbac.yaml
把tiller的镜像压缩包传到k8s的各个node节点,然后手动docker load -i 把镜像解压到本地,镜像所在百度网盘地址如下:
链接:https://pan.baidu.com/s/1Z_yuava-8W65mn5tla7cFw 提取码:bd2n
在k8s的node节点解压镜像
docker load -i tiler_2_13_1.tar.gz
cat tiller.yaml
--- apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: helm name: tiller name: tiller-deploy namespace: kube-system spec: selector: matchLabels: app: helm name: tiller replicas: 1 strategy: {} template: metadata: creationTimestamp: null labels: app: helm name: tiller spec: automountServiceAccountToken: true serviceAccount: tiller containers: - env: - name: TILLER_NAMESPACE value: kube-system - name: TILLER_HISTORY_MAX value: "0" image: gcr.io/kubernetes-helm/tiller:v2.13.1 imagePullPolicy: IfNotPresent livenessProbe: httpGet: path: /liveness port: 44135 initialDelaySeconds: 1 timeoutSeconds: 1 name: tiller ports: - containerPort: 44134 name: tiller - containerPort: 44135 name: http readinessProbe: httpGet: path: /readiness port: 44135 initialDelaySeconds: 1 timeoutSeconds: 1 resources: {} status: {} --- apiVersion: v1 kind: Service metadata: creationTimestamp: null labels: app: helm name: tiller name: tiller-deploy namespace: kube-system spec: ports: - name: tiller port: 44134 targetPort: tiller selector: app: helm name: tiller type: ClusterIP status: loadBalancer: {} ...
更新yaml文件
kubectl apply -f tiller.yaml
验证tiller是否部署成功:
kubectl get pods -n kube-system
显示如下,说明部署成功
tiller-deploy-7bd89687c8-tv7cn 1/1 Running 0 2d8h
验证helm版本
helm version
可看到如下:
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"} Server: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
上面结果可看到helm客户端和服务端版本一致,都安装好了
helm常用命令如下
(1)和release相关的
升级一个版本
helm upgrade
helm upgrade [RELEASE] [CHART] [flags]
回滚一个版本
helm rollback
helm rollback [flags] [RELEASE] [REVISION]
创建一个release实例
helm install
删除一个release
helm delete
查看历史
helm history
(2)和chart相关的
查看chart的详细信息
helm inspect
把chart下载下来
helm fetch
把chart打包
helm package