作为k8s现在主流的一种包部署方式,尽管不用,也需要进行一些了解。因为,它确实太流行了。
这一套太极拳打下来,感觉helm这种部署,目前还不太适合于我们公司的应用场景。它更适合需要手工编程各种yaml文件,使用模板减少工作量和出错。
而我们已实现了web方式的yaml文件编辑,使用Helm意义不大,只能起到优化yaml存储的作用,但同时会使我们的配置文件深度依赖helm。
一,Helm用途
Helm把Kubernetes资源(比如deployments、services或 ingress等) 打包到一个chart中,而chart被保存到chart仓库。通过chart仓库可用来存储和分享chart。Helm使发布可配置,支持发布应用配置的版本管理,简化了Kubernetes部署应用的版本控制、打包、发布、删除、更新等操作。
做为Kubernetes的一个包管理工具,用来管理charts——预先配置好的安装包资源,有点类似于Ubuntu的APT和CentOS中的yum。
Helm具有如下功能:
l--- 创建新的chart
l--- chart打包成tgz格式
l--- 上传chart到chart仓库或从仓库中下载chart
l--- 在Kubernetes集群中安装或卸载chart
l--- 管理用Helm安装的chart的发布周期
l Helm有三个重要概念:
l--- chart:包含了创建Kubernetes的一个应用实例的必要信息
l--- config:包含了应用发布配置信息
l--- release:是一个chart及其配置的一个运行实例
二,Helm组件
Helm基本架构如下:
Helm有以下两个组成部分:
1,Helm Client
用户命令行工具,其主要负责如下:
l--- 本地chart开发
l--- 仓库管理
l--- 与Tiller sever交互
l--- 发送预安装的chart
l--- 查询release信息
l--- 要求升级或卸载已存在的release
2,Tiller Server
一个部署在Kubernetes集群内部的server,其与Helm client、Kubernetes API server进行交互。Tiller server主要负责如下:
l--- 监听来自Helm client的请求
l--- 通过chart及其配置构建一次发布
l--- 安装chart到Kubernetes集群,并跟踪随后的发布
l--- 通过与Kubernetes交互升级或卸载chart
l--- 简单的说,client管理charts,而server管理发布release。
三,Helm安装
1,下载helm客户端
curl chmod ./get_helm.sh |
下载完成之后,运行helm version命令,如下输出表示客户ok,server未就绪。
# ./helm version
2,下载tiller镜像
想办法,把gcr.io/kubernetes-helm/tiller:v2.14.2弄到本机上(github+dockerhub)
向k8s集群中应用一个helm-tiller-rbac-config.yaml
apiVersion: v1 kind: metadata: name: tiller namespace: kube-system --- apiVersion: kind: metadata: name: tiller roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: tiller namespace: kube-system |
将这个配置文件应用到集群
kubectl |
然后用类似下面的命令调好。(为什么是类似呢?因为我调了很多次,有一次才通)
./helm ./helm helm ./helm |
如果安装正常,helm version命令输出如下:
四, Helm日常操作
1,查看chart
# 查看chart,即已经通过helm部署到 k8s 平台的应用 helm helm ls |
2,搜索chart
helm |
3,指定仓库搜索chart
helm helm |
4,查看chart详细信息
helm |
五, Helm部署
下面以workpress为例子,演示如何部署一个helm项目。
1,下载chart
Helm |
2,安装部署chart
helm install --name --set ali/wordpress |
3, 浏览器检测
4,查看wordpress chart
helm |
5,删除wordpress chart
helm |
六, 建立自己的Helm
Chart
1,生成默认
chart
helm |
2,chart文件解释
… |
3,chart模板文件及变量文件对应关系
deployment.yaml
values.yaml
4,chart配置文件检测
helm |
5,安装自定义的chart
在chart目录内运行
helm |
浏览器查看效果
七, 传播及复用Helm
Chart
1,chart打包分享
在chart目录内运行
helm |
2,http提供chart服务
在生成了chart的压缩包的目录运行
helm |
3,复用chart
在另外的机器上,访问chart的http服务,并进行下载及安装
wget http://127.0.0.1:9527/helm-nginx-0.1.0.tgz helm |