Helm
在Kubernetes中部署容器云的应用也是一项有挑战性的工作,Helm就是为了简化在Kubernetes中安装部署容器云应用的一个客户端工具。通过helm能够帮助开发者定义、安装和升级Kubernetes中的容器云应用,同时,也可以通过helm进行容器云应用的分享。在Kubeapps Hub中提供了包括Redis、MySQL和Jenkins等常见的应用,通过helm可以使用一条命令就能够将其部署安装在自己的Kubernetes集群中
helm的整体架构如下图所示,Helm架构由Helm客户端、Tiller服务器端和Chart仓库所组成;Tiller部署在Kubernetes中,Helm客户端从Chart仓库中获取Chart安装包,并将其安装部署到Kubernetes集群中
Helm是管理Kubernetes包的工具,Helm能提供下面的能力:
- 创建新的charts
- 将charts打包成tgz文件
- 与chart仓库交互
- 安装和卸载Kubernetes的应用
- 管理使用Helm安装的charts的生命周期
在Helm中,有三个需要了解的重要概念:
- chart:是创建Kubernetes应用实例的信息集合;
- config:创建发布对象的chart的配置信息
- release:chart的运行实例,包含特定的config
helm组件
在Helm中有两个主要的组件,既Helm客户端和Tiller服务器:
Helm客户端:这是一个供终端用户使用的命令行工具,客户端负责如下的工作:
本地chart开发
管理仓库
与Tiller服务器交互
发送需要被安装的charts,请求关于发布版本的信息,求更新或者卸载已安装的发布版本
Tiller服务器:Tiller服务部署在Kubernetes集群中,Helm客户端通过与Tiller服务器进行交互,并最终与Kubernetes API服务器进行交互。 Tiller服务器负责如下的工作:
- 监听来自于Helm客户端的请求
- 组合chart和配置来构建一个发布
- 在Kubernetes中安装,并跟踪后续的发布
- 通过与Kubernetes交互,更新或者char
客户端负责管理chart,服务器发展管理发布
Helm技术实现
Helm客户端是使用Go语言编写的,它通过gRPC协议与Tiller服务器交互。
Tiller服务器也是使用Go语言编写的,它使用Kubernetes客户端类库(当前是哦那个REST+JSON)与Kubernetes进行通讯。
Tiller服务器通过Kubernetes的ConfigMap存储信息,因此本身没有用于存储数据库
helm安装部署
#从GitHub上下载helm
[root@master ~]# wget https://get.helm.sh/helm-v2.14.3-linux-amd64.tar.gz
#解压,获取helm的命令
[root@master ~]# tar -zxvf helm-v2.14.3-linux-amd64.tar.gz
[root@master ~]# mv linux-amd64/helm /usr/local/bin/
[root@master ~]# chmod +x /usr/local/bin/helm
#确认命令可用
[root@master ~]# helm help
#设置tab键自动补全
[root@master ~]# source <(helm completion bash)
安装Tiller服务
#创建授权用户,并授予权限
[root@master ~]# vim tiller-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
[root@master ~]# kubectl apply -f tiller-rbac.yaml
serviceaccount/tiller created
clusterrolebinding.rbac.authorization.k8s.io/tiller created
初始化,生成一个包的仓库
[root@master ~]# helm init --service-account=tiller
查看pod
[root@master ~]# kubectl get pod -n kube-system
tiller-deploy-8557598fbc-5cfv6 0/1 ImagePullBackOff 0 4m6s
//这个镜像是下载不下来的,因为默认是从谷歌下载的
#修改yaml文件,将镜像改为阿里云的
[root@master ~]# kubectl edit pod -n kube-system tiller-deploy-8557598fbc-5cfv6
//修改spec字段的image
image: registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.3
保存退出,它会自动下载镜像
[root@master ~]# kubectl get pod -n kube-system | grep tiller
tiller-deploy-8557598fbc-5cfv6 1/1 Running 0 13m
查看helm仓库信息
[root@master ~]# helm repo list
NAME URL
stable https://kubernetes-charts.storage.googleapis.com
local http://127.0.0.1:8879/charts
添加阿里云的仓库源
[root@master ~]# helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
"stable" has been added to your repositories
[root@master ~]# helm repo list
NAME URL
stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
local http://127.0.0.1:8879/charts
查看版本信息,必须保证可以看到client和server,才可以正常使用helm
[root@master ~]# helm version
Client: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
来源:CSDN
作者:哒哒哒~
链接:https://blog.csdn.net/weixin_45636702/article/details/104580714