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 文件夹之中,大家可依据自己的需求自行扩展。

有话要说