编写第一个模板

使用helm chart创建一个ConfigMap资源

  1. 利用helm create命令先创建一个模板文件
helm create mychart
  1. 进入mychart/templates,删除所有.yaml文件,新建一个configmap.yaml
#configmap.yaml,文件名称没有严格要求,以.yaml结尾的YAML文件
apiVersion: v1
kind: ConfigMap
metadata:
  name: mychart-configmap
data:
  value1: "Hello Helm"

在这个yaml中,name定义的是configmap的名称,data中定义的是内容,以键值的方式存在。变量的值都是写死的。
3. 通过模板文件,就有了一个可安装的chart,安装如下:

# helm install firstchart mychart/
NAME: firstchart
LAST DEPLOYED: Sun Jul 30 14:55:39 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
  1. 使用Helm检索版本并查看实际加载的模板
# helm get manifest firstchart
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: mychart-configmap
data:
  value1: "Hello Helm"

helm get manifest 命令后跟一个发布名称(firstchart)然后打印出了所有已经上传到server的Kubernetes资源。 每个文件以—开头表示YAML文件的开头,然后是自动生成的注释行,表示哪个模板文件生成了这个YAML文档。

  1. 卸载发布
    helm uninstall firstchart

添加一个简单的模板调用

通常来讲name的值一般不会写死,我们额可以通过插入发布名称来生成名称字段,如下:

apiVersion: v1
kind: ConfigMap
metadata:
  name: {
    
    {
    
     .Release.Name }}-cm
data:
  value1: "Hello Helm"

{ { .Release.Name }} 将发布名称注入了模板。值作为一个 命名空间对象 传给了模板,用点(.)分隔每个命名空间的元素。

Release是一个Helm的内置对象,后面的博文会讲到

再安装一次资源,发布名称起名test

# helm install test mychart/
NAME: test
LAST DEPLOYED: Sun Jul 30 15:09:16 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1

运行helm get manifest test查看生成的完整的YAML如下:

# helm get manifest test
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: test-cm
data:
  value1: "Hello Helm"

以上通过创建一个configmap资源简单了解了chart模板。在YAML中,我们分别通过自定义和变量传参的方式来设置name的值,最后通过helm install安装chart,再用helm get manifest 去查看模板的内容。
这里,当你想测试模板渲染的内容但又不想安装任何实际应用时,可以使用helm install --debug --dry-run,这样不会安装应用(chart)到你的kubenetes集群中,只会渲染模板内容到控制台(用于测试)。渲染后的模板如下:

# helm install test mychart/ --debug --dry-run
install.go:173: [debug] Original chart version: ""
install.go:190: [debug] CHART PATH: /root/ums/helm-chart/mychart
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: test-cm
data:
  value1: "Hello Helm"

猜你喜欢

转载自blog.csdn.net/Ethin_l/article/details/131878172