上QQ阅读APP看书,第一时间看更新
2.10.2 给template添加动态变量
直接定义ConfigMap的名字不是一种好的方式,在资源较多的大型Kubernetes集群中,不方便直观寻找到对应的资源,因此我们希望能够给ConfigMap的名字前增加对应的release名称。
下面我们把ConfigMap内容更新成如下的样子。
apiVersion: v1 kind: ConfigMap metadata: name: {{ .Release.Name }}-configmap data: myvalue: "Hello World"
这里最大的改变就是ConfigMap的名称改为了{{.Release.Name}}-configmap。这个表达式中{{.Release.Name}}就是自动将Relase名称注入ConfigMap名字前面。这个Release是Helm的一个内置对象,里面涵盖了很多Release的内置信息,下面再安装一下这个Chart。
[root@iZ8vb0qditk1qw27yu4k5nZ templates]# helm install ../../myChart/ NAME: bald-orangutan LAST DEPLOYED: Tue Aug 27 20:40:06 2019 NAMESPACE: default STATUS: DEPLOYED RESOURCES: ==> v1/ConfigMap NAME DATA AGE bald-orangutan-configmap 1 0s [root@iZ8vb0qditk1qw27yu4k5nZ templates]# helm get manifest bald-orangutan --- # Source: myChart/templates/configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: bald-orangutan-configmap data: myvalue: "Hello World"
注意这个Release名称为bald-orangutan,ConfigMap的名称为bald-orangutan-configmap,可以发现Release的名字已经被放到ConfigMap名字前了,说明{{.Release.Name}}是生效的。
这里有一个小技巧,如果你只想看一下Helm渲染完毕后Chart输出的结果是什么,并不想直接安装它,可以使用--dry-run功能。--dry-run会简单渲染Chart后输出结果,但是不会真正将资源安装到对应的Kubernetes集群中。
[root@iZ8vb0qditk1qw27yu4k5nZ templates]# helm install ../../myChart/ --dry-run --debug [debug] Created tunnel using local port: '44209' [debug] SERVER: "127.0.0.1:44209" [debug] Original Chart version: "" [debug] CHART PATH: /root/myChart NAME: reeling-ibis REVISION: 1 RELEASED: Tue Aug 27 20:46:02 2019 CHART: myChart-0.1.0 USER-SUPPLIED VALUES: {} COMPUTED VALUES: {} HOOKS: MANIFEST: --- # Source: myChart/templates/configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: reeling-ibis-configmap data: myvalue: "Hello World"
使用--dry-run可以很方便地测试你的Chart编写是否正确,但是并不检验yaml的正确性,不能保证Kubernetes一定会接受输出的yaml资源。