1、引入
(1)之前方式部署应用基本过程
* 编写yaml文件
** deployment
** Service
** Ingress (负载均衡、域名)
缺点:如果使用之前的方式部署单一应用,少数服务的应用,比较合适。比如部署微服务项目,可能有几十个项目,每个服务都有一套yaml文件,需要维护大量的yaml文件,版本管理特别不方便
2、helm介绍
使用helm可以解决哪些问题?
(1)使用helm可以把这些yaml作为一个整体管理
(2)实现yaml高效复用
(3)使用helm应用级别的版本管理
3、helm具体介绍
Helm是一个Kuberntes的包管理工具,就像Linux下的包管理器,如yum/apt等,可以很方便的将之前打包好的yaml文件部署到kubernetes上。
4、Helm三个重要概念
(1)helm 是一个命令行的客户端工具
(2)Chart 把yaml打包,应用描述,一系列用于描述k8s资源相关文件的集合
(3)Release 基于chart部署实体,一个chart被Helm运行后将会生成对应的一个release:将在k8s中创建出真实运行的资源对象
5、helm在2019年发布V3版本,和之前版本相比有变化
(1)v3版本删除Tiller 架构变化
(2)release可以在不同命名空间重用
(3)将chart推送到docker仓库中
6、helm架构变化
将tiller删除,在外部添加kube-config模块
1、helm安装
第一步 下载helm安装压缩文件,上传到Linux系统中
第二步 解压helm压缩文件,把解压之后helm目录复制到usr/bin目录下
2、配置helm仓库
(1)添加仓库
helm repo add 仓库名称 仓库地址
3、使用helm快速部署应用
第一步 使用命令搜索应用
helm search repo 名称 (weave)
第二步 根据搜索内容选择安装
helm install 安装之后的名称 搜索之后应用名称
* 查看应用之后的状态
helm list
helm status 安装之后名称
* 修改service的yaml文件,type改为NodePort
如何自己创建Chart
1、使用命令创建chart
helm create chart 名称
* Chartyaml:当前chart属性配置信息
* template: 编写yaml文件放到这个目录中
* values.yaml: yaml文件可以的使用全局变量
2、在templates文件夹创建两个yaml文件
* deployment.yaml
* service.yaml
3、安装mychart
4、应用升级
helm upgrade chart 名称
通过传递参数的方式实现yaml文件的高效复用
* 通过传递参数,动态渲染模板,yaml内容动态传入参数生成
在下面的文件中定义全局变量的值
1、在values.yaml定义变量和值
2、在具体yaml文件中,获取定义的变量的值
* yaml文件中大体上有这些地方不同
** image
** tag
** label
** port
** replicas
一、在values.yaml定义变量和值
二、在template的yaml文件中使用values.yaml定义变量
* 通过表达式形式使用全局变量
* {{ .Values.变量名称 }}
{{ .Release.Name }} # 取到当前版本名称