helm 介绍
Helm 是 Kubernetes 的包管理器,Helm 由客户端组件 helm 和服务端组件 Tiller 组成, 能够将一组K8S资源打包统一管理。
Helm 三大核心概念:
- chart:Helm的打包格式叫做chart,所谓chart就是一系列文件, 它描述了一组相关的 k8s 集群资源
- release:使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release
- Tiller:是 Helm 的服务端,Tiller 负责接收 Helm 的请求,与 k8s 的 apiserver 交互,根据chart 来生成一个 release 并管理 release
- Repoistory:Helm chart 的仓库,Helm 客户端通过 HTTP 协议来访问存储库中 chart 的索引文件和压缩包
helm 架构图:
helm 安装
安装helm的前提是机器已经安装了K8S
代码语言:javascript复制#对应自己k8s版本号
wget https://get.helm.sh/helm-v3.6.1-linux-amd64.tar.gz
tar xf helm-v3.8.1-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/helm
chmod x /usr/local/bin/helm
配置镜像仓库:
代码语言:javascript复制# 查看helm镜像仓库
helm repo list
# 添加镜像仓库
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
# 刷新镜像仓库
helm repo update
Helm指令表
代码语言:javascript复制# 查看helm 版本
helm version
# 查看环境变量
helm env
# 检索chart包
helm search repo keyword
# 查看当前部署的所有 release
helm list
# 安装 release
helm install releaseName chartName
# 卸载release
helm uninstall releaseName
# 升级release
helm upgrade releaseName chartName
# 回滚release
helm rollback releaseName revision
# 查看release的基本信息
helm status releaseName
# 查看release的发布历史
helm history releaseName
# 查看添加的chart仓
helm repo list
# 本地添加chart仓库
helm repo add repoName URL
# 本地删除chart仓库
helm repo remove repoName
# 更新本地仓库
helm repo update
# 查看chart包中的chart.yaml文件内容
helm show chart chartName
# 查看release 信息
helm get all releaseName
自制 chart
首先需要一个准备部署的docker镜像,docker镜像制作的方法往期文章中有介绍。然后执行指令:
代码语言:javascript复制helm create test
会得到一个 helm 自动生成的空 chart。它 Chart 的文件夹目录如下:
代码语言:javascript复制test
├── charts
├── Chart.yaml
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── ingress.yaml
│ ├── NOTES.txt
│ └── service.yaml
└── values.yaml
在根目录下的Chart.yaml
文件内,声明了当前 Chart 的名称、版本等基本信息,这些信息会在该 Chart 被放入仓库后提供检索。templates
下的文件从命名我们就能知道是k8s的配置文件。我们按照创建容器控制器的经验就能生成这些文件。values.yaml
提供了应用在安装时的默认参数。
改好配置文件后使用指令:
代码语言:javascript复制helm lint --strict test
检查配置文件是否有语法错误。
然后使用指令:
代码语言:javascript复制helm package
打包 chart,打包后会生成 test.tgz 的应用包。
使用指令:
代码语言:javascript复制 helm install test test.tgz
安装helm包,会在你的k8s集群里面生成对应的pod等程序。