Helm 3.0 简单入门
Helm 简单入门(Helm 升级到 3.0 以后,命令有所修改,网上很多教程都不适用了)。
首先,运行 helm create example 创建一个 example 项目。
可以看到生成了一个 example 文件夹及一些文件如下:
mychart/
Chart.yaml
values.yaml
charts/
templates/
...
下面,我们先修改 Chart.yaml:
apiVersion: v2
name: example
description: A Helm chart for Kubernetes
type: application
version: 0.1.0
appVersion: 1.16.0
为了保持简洁,我删掉了所有的注释。
接下来,修改 values.yaml 如下:
message: "Hello World"
同上,为了保持简洁,同时,为了能尽快理解每个文件的含义与作用,我删掉了所有的内容,只用了一个变量:message。这个文件里定义的是之后 Helm 安装应用时,我们可以修改的变量。
再接下来,就是删掉 templates 里的所有文件。之所以删除的原因,原因也是同上的,是因为我们这是入门教程,文件太多太全,让人望而生畏,不是好事。所以,我们先清零,再慢慢添加。
好了,接下来,在 templates 文件夹下,创建 NOTES.txt 文件,内容如下:
This a example for your helm, your message is {{ .Value.message }}
这个文件里的内容会在 install 之后展示在控制台。
接着,还是 templates 文件夹下,创建 _helpers.tpl 文件,内容如下:
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "example.name" -}}
{{- default .Chart.Name .Values.message | trunc 63 | trimSuffix "-" -}}
{{- end -}}
这个文件负责定义一些复用的模板。
下面,我们只创建一个 ConfigMap。在 templates 文件夹创建一个 config-map.yaml 的文件,内容如下:
apiVersion: v1
kind: ConfigMap
metadata:
name: mychart-configmap
data:
myvalue: {{ .Values.message }}
很简单的 config,只为介绍 Helm 的入门用法。
下面,在 example 文件夹下,运行 helm lint 检查我们的语法是否正确。
若结果如下,就是正确的:
==> Linting .
[INFO] Chart.yaml: icon is recommended
1 chart(s) linted, 0 chart(s) failed
以上,我们准备好了 chart。下面,开始安装:
helm install ./example --generate-name
结果如下:
NAME: example-1574665451
LAST DEPLOYED: Mon Nov 25 07:04:11 2019
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
This a example for your helm, your message is Hello World
可以看到最后一项的 NOTES,正是我们编写好的 Notes 内容。
下面,看一下我们的 config-map:
kubectl get cm
结果如下:
NAME DATA AGE
mychart-configmap 1 89s
可看到确实创建好了。因为,我们 install 的时候没有指定 namespace,所以在 默认 的 namespace 中。
下面,我们创建一个 namespace 后,设置 helm 一下参数再来一次:
# create ns
kubectl create ns example
helm install ./example --generate-name --set message="Hello2" --namespace example
结果如下:
NAME: example-1574665820
LAST DEPLOYED: Mon Nov 25 07:10:20 2019
NAMESPACE: example
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
This a example for your helm, your message is Hello2
创建成功。
接下来,运行 helm list --all-namespaces,可看到我们部署的两个 example 服务。
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
example-1574665451 default 1 2019-11-25 07:04:11.690862151 +0000 UTC deployed example-0.1.0 1.16.0
example-1574665820 example 1 2019-11-25 07:10:20.936011141 +0000 UTC deployed example-0.1.0 1.16.0
还可以运行 helm get manifest example-1574665451 来查看 manifest 内容:
---
# Source: example/templates/config-map.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: mychart-configmap
data:
myvalue: Hello World
删除,helm uninstall example-1574665451。
以上,就是 helm 的入门教程,至于 deployment, service什么的,也是写在 templates 文件夹之中,大家可依据自己的需求自行扩展。
有话要说