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
| 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
|
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
helm search repo test-app
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 参考