Helm工具部署

安稳与你 提交于 2020-03-01 03:15:46

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"}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!