k8s 探索9:HELM——K8S的应用管理器

k8s 探索9:HELM——K8S的应用管理器

1 简介

前面我们已经熟练使用 k8s 进行应用部署,但是已有的方法需要管理很多不同的资源,比如 Pod, Service, Secret, PVC 等等,那有没有东西可以一次性管理所有资源呢?

有!它就是 HELM。HELM 意为「舵」,它的资源配置文件名为 Chart 是「航海图」的意思,「眼看航海图,手中掌着舵」一个字——完美!

1.1 template

模板文件是 Chart 中最重要的概念,流程上需要先用户编写 template,后续在使用时,只需要填写特殊的变量,helm 会替换掉 template 中的变量,自动生成资源文件。

上面这样解释有点抽象,来看个例子,在 templates/deploy.yaml 中:

1
2
3
4
5
...
containers:
- name: database
image: {{ .Values.imageRegistry }}/mysql:{{ .Values.dockerTag }}
imagePullPolicy: {{ .Values.pullPolicy }}

此时只需要在 values.yaml 中填写对应值就可以。

1
2
3
imageRegistry: "docker.io"
dockerTag: "latest"
pullPolicy: "Always"

最终被渲染出来的 deploy.yaml 如下:

1
2
3
4
5
...
containers:
- name: database
image: docker.io/mysql:latest
imagePullPolicy: Always

这样做的好处是把多个资源文件中,整合到一起,并添加默认值,方便配置。

2 快速上手

2.1 安装

1
2
3
4
5
6
7
8
9
10
# 在 Ubuntu 下安装(其他版本参考官方文档)
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

# 正确安装后,检查版本
helm version
# version.BuildInfo{Version:"v3.9.0", GitCommit:"7ceeda6c585217a19a1131663d8cd1f7d641b2a7", GitTreeState:"clean", GoVersion:"go1.17.5"}

2.2 使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 查看已经安装应用
helm list
helm list -A

# 添加一个新的仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
# 查看已经添加的仓库
helm repo list
# 搜索一个 chart
helm search repo test-app
# 搜索一个 chart 的不同版本
helm search repo test-app --versions

# 安装一个程序包,不修改参数
helm install test-app bitnami/test-app
# 安装一个程序包,修改参数
helm pull bitnami/test-app
helm pull bitnami/test-app --version 1.0.0
tar zxvf test-app-1.0.0.tgz
cd test-app
helm install test-app -f values.yaml .
# 安装一个程序包,并制定命名空间
kubectl create ns test-proj
helm install --namespace test-proj test-app -f values.yaml .

# 更新一个程序
helm upgrade test-app bitnami/test-app --set env=test
helm upgrade test-app -f values.yaml .

# 卸载程序
helm uninstall test-app
helm uninstall test-app --namespace test-proj

3 参考

作者

Ailln

发布于

2021-12-05

更新于

2024-03-02

许可协议

评论