# 1.为什么需要helm
- 如果我们不用helm,进行部署应用的基本过程
- 编写yaml文件
- 通过Deployment来部署pod
- 用Service做服务发现
- Ingress做端口暴露
上面这种方式,部署单一应用,少数服务的应用还是比较适合的,但如果部署微服务项目,可能几十个服务,每个服务都有一套yaml文件,那维护这个yaml文件就会很麻烦,还有版本管理也不方便。
# 2.helm可以解决那些问题
- 使用helm可以把我们的yaml文件作为一个整体管理
- 实现yaml高效复用
- 使用helm实现应用级别的版本管理
# 3.helm介绍
Helm 是一个Kubernetes的包管理工具,就想Linux下的包管理器,如yum/apt 等, 可以很方便的将之前打包好的 yaml 文件 部署到 k8s上
# 3个重要概念
helm:是一个命令式行客户端,主要用于K8s应用 chart 的创建、打包、发布和管理
Chart:应用描述,一系列用于描述k8s资源相关文件的集合 (就是把yaml打包,yaml的集合)
Release:基于Chart的部署实体,一个chart被helm运行后将会生成对应的一个release,将在k8s中创建出真实运行的资源对象 (可实现应用级别的版本管理)
# 4.helm v3版本的一些变化
v3版本是2019发布的
V3之前的架构:
v3+ 的架构:
可以看到 v3 和 v3之前版本 的架构是有一些变化的
- 删除了 Tiller
- release可在不同命名空间重用
- 可以将chart推到docker仓库中
# 5.helm 的安装和配置
这个就直接按照官网的文档,一步步来就可以,而且官网文档很nice
官网文档:https://helm.sh/zh/docs/intro/install/
一般通过把helm的压缩包上传到服务器中解压安装就可以了
tar zxvf helm-v3.x.x.x-linux-amd64.tar.gz
把解压后的包移动到 mv /usr/bin
- 配置helm仓库的一些常用命令
helm repo add [repoName] [repoUrl]
helm repo update
helm list
helm remove [repoName]
1
2
3
4
2
3
4
# 6.helm快速部署应用
- 使用命令搜索应用:helm search repo [rappName] wave
- 根据搜索内容进行选择安装:helm install [installName] [originName]
- 查看状态:helm list
- helm status [installName]
# 7.创建/升级一个自定义的Chart
- 首先
helm create [chartName] / helm upgrade [chartName]
1
- 然后可进入一个Chart文件夹
- chart.yaml: 当前chart属性配置信息
- templates: 编写yaml文件放到这个目录中
- values.yaml: yaml文件可以用到的全局变量
# 8.如何给Chart中 templates 里面的yaml文件复用
- 可以通过变量的形式来配置 在values.yaml 文件中定义Chart的全局变量 在values.yaml 中定义变量
imageName: nginx
port: 8080
1
2
2
- 在templates的yaml文件中使用
{{ .Valuse.变量名称 }}
使用 {{ .Release.Name}} 根据版本动态生成名称
1
2
2