1 引入
1.1 之前部署应用的基本过程
- 编写yaml文件
- 对外暴露一个service
- 使用ingress做一个域名映射
缺陷
- 如果使用之前方式部署单一应用,少数服务的应用,比较合适
- 比如部署微服务,可能有几十个服务,每个服务都有一套yaml文件,需要维护大量yaml文件,版本管理特别不方便
1.2 使用helm可以解决哪些问题
- 使用helm可以把这些yaml作为一个整体管理
- 实现yaml高效复用
- 使用helm应用级别的版本管理
2 介绍
helm时一个k8s的包管理工具,就向Linux下的包管理器,如yum/apt等,可以很方便的将之前打包好的yaml文件部署到k8s上。
2.1 helm
一个命令行控制工具。
2.2 Chart
把yaml打包,是yaml集合。
2.3 Release
基于chart部署实体,应用级别的版本管理。
2.4 v3版本的变化(2019年发布)
- V3 版本删除 Tiller
- release可以在不同命名空间重用
- 支持将chart推送到docker仓库中
- helm架构变化
3 安装
3.1 配置helm仓库
helm几个常用仓库:
- helm官方:https://hub.helm.sh/
- 开源社镜像:http://mirror.kaiyuanshe.cn/kubernetes/charts/
- 微软: http://mirror.azure.cn/kubernetes/charts/
- kubernetes app商店:https://hub.kubeapps.com/
- 阿里云 aliyunstable https://[kubernetes](https://so.csdn.net/so/search?q=kubernetes&spm=1001.2101.3001.7020).oss-cn-hangzhou.aliyuncs.com/charts
[
](https://blog.csdn.net/u010948569/article/details/108532215)
// 配置仓库
helm repo add 仓库名称 仓库地址
// 更新仓库
helm repo update
// 删除仓库
helm repo remove 仓库名称
4 helm部署应用
4.1 搜索应用
helm search repo 名称
4.2 根据搜索内容选择安装
helm install 安装之后名称 搜索的应用名称
4.3 查看安装之后的状态
helm list
helm status 安装之后名称
演示
helm search repo weave
helm install ui aliyunstable/weave-cloud
5 如何自己创建Chart
5.1 使用命令创建chart
// 1 创建chart
helm create chart 名称
// 2 进入目录查看文件
// - charts/:
// - Chart.yaml: 当前chart属性配置信息
// - templates/: 编写yaml文件放在这个目录中
// - values.yaml: yaml文件可以使用的全局变量
5.2 在templates文件夹创建两个文件
// 1 使用命令生成 deployment.yaml
kubectl create deployment web --image=nginx -o yaml > deployment.yaml
// 2 使用命令生成 service.yaml
kubectl expose deployment web --port=80 --target-port=80 --type=NodePort --dry-run -o yaml > service.yaml
// 3 安装chart
helm install web1 名称/
// 4 应用升级
helm upgrade chart 名称/
6 chart模板
6.1 目的
- 实现高效复用
- 通过传递参数,动态渲染模板,yaml内容动态传入参数生成
- 在chart有values.yaml文件没,定义yaml文件全局变量
6.2 过程
- 在values.yaml定义变量和值
定义变量值label: nginx
- 在具体yaml文件,获取定义变量值
通过{{ .Values.label }}
使用变量值
取到当前版本的名称{{ .Release.name }}