Helm类似与linux下面的yum,Helm是一个用于kubernetes的包管理器,每一个包为一个chart,一个chart是一个目录,常常会对目录进行打包压缩,形成一个${name}-version.tgz的格式进行传输和存储。
- 对于应用发布者而言,可以通过Helm打包应用,管理应用依赖关系,管理应用版本并发布应用到软件仓库。
- 对于使用者而言,使用Helm后不用需要了解Kubernetes的Yaml语法并编写应用部署文件,可以通过Helm下载并在kubernetes上安装需要的应用。
Helm还提供了kubernetes上的软件部署,删除,升级,回滚应用的强大功能
1、helm组件
Helm 是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建和管理本地和远程的 Chart 仓库。
1.1、Tiller
Tiller 是 Helm 的服务端,部署在 Kubernetes 集群中。Tiller 用于接收 Helm 的请求,并根据 Chart 生成 Kubernetes 的部署文件( Helm 称为 Release ),然后提交给 Kubernetes 创建应用。Tiller 还提供了 Release 的升级、删除、回滚等一系列功能。
1.2、Chart
Helm 的软件包,采用 TAR 格式。类似于 APT 的 DEB 包或者 YUM 的 RPM 包,其包含了一组定义 Kubernetes 资源相关的 YAML 文件
1.3、Repoistory
Helm 的软件仓库,Repository 本质上是一个 Web 服务器,该服务器保存了一系列的 Chart 软件包以供用户下载,并且提供了一个该 Repository 的 Chart 包的清单文件以供查询。Helm 可以同时管理多个不同的 Repository
1.4、Release
使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release
2、helm安装
- 下载helm
1
2# wget https://storage.googleapis.com/kubernetes-helm/helm-v2.14.3-linux-amd64.tar.gz
# tar zxf helm-v2.14.3-linux-amd64.tar.gz && mv linux-amd64/{helm,tiller} /usr/bin
2.1、创建分蘖服务帐户
1 | # kubectl create serviceaccount tiller --namespace kube-system |
2.2、授予分蘖集群管理员角色
1 | # kubectl create clusterrolebinding tiller-admin-binding --clusterrole=cluster-admin --serviceaccount=kube-system:tiller |
2.2、安装tiller
1 | # helm init --service-account tiller --upgrade -i docker.io/sapcc/tiller:v2.14.3 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts |
2.2.1、检查是否安装成功
1 | # kubectl -n kube-system get pods|grep tiller |
- 错误: 这里安装完成后执行
helm version
提示错误,内容如下:E0904 18:51:07.730671 22845 portforward.go:391] an error occurred forwarding 38767 -> 44134: error forwarding port 44134 to pod b52064300cfa79e6d83795535584f89c97c33dc91ea39c024492b7b40e3fb68e, uid : unable to do port forwarding: socat not found.
这个错误需要在客户端安装一个socat插件
在node安装socat
1
# yum install -y socat
修改helm第三方存储库(可选)
1
2
3
4
5
6# helm repo add stable https://burdenbear.github.io/kube-charts-mirror/
# helm repo list
NAME URL
local http://127.0.0.1:8879/charts
monocular https://helm.github.io/monocular
stable https://burdenbear.github.io/kube-charts-mirror/
3、测试和启动本地helm web
1 | # helm list |
4、helm web ui
helm安装以后,经常使用helm cli命来进行部署还是比较吃力的,而且对于有些人不喜欢cli的来说,是一个非常痛苦的事情,这里介绍一款kubeapps,Kubeapps是一个基于Web的UI,用于在Kubernetes集群中部署和管理应用程序。 Kubeapps允许您:
- 从图表存储库中浏览和部署Helm图表
- 检查,升级和删除群集中安装的基于Helm的应用程序
- 添加自定义和私有图表存储库(支持ChartMuseum和JFrog Artifactory)
- 从服务目录和可用的Service Brokers浏览和配置外部服务
- 使用服务目录绑定将基于Helm的应用程序连接到外部服务
- 基于Kubernetes基于角色的访问控制的安全身份验证和授权
4.1、安装kubeapps
使用Helm图表安装最新版本的Kubeapps
1 | # helm repo add bitnami https://charts.bitnami.com/bitnami |
4.2、启动kubeappsDashboard
安装Kubeapps后,运行以下命令从系统安全访问Kubeapps Dashboard
1 | # export POD_NAME=$(kubectl get pods --namespace kubeapps -l "app=kubeapps" -o jsonpath="{.items[0].metadata.name}") |
4.3、创建token
访问仪表板需要Kubernetes API令牌才能通过Kubernetes API服务器进行身份验证
1 | # kubectl create serviceaccount kubeapps-operator |
4.3.1、创建token访问脚本
每次访问kubeapps的token 都要输入一长串,这里我们写一个shell脚本,放在/usr/bin
目录,需要的时候执行命令即可,这样方便用于记
1 | # vim /usr/bin/kubeapps |