Skip to content

1. Helm内置对象

Release 对象

Values 对象

Chart 对象

Capabilities 对象

Template 对象

常用使用的

1.1 Release

描述了版本发布自身的一些信息

内置作用
.Release.Namerelease名称
.Release.Namespacerelease命名空间
.Release.Revisionrelease版本号。起始是1,每次升级或回滚都会自增1
.Release.Servicerelease 服务的名称
.Release.IsUpgrade如果当前操作是升级或回滚的话,该值为 true
.Release.IsInstall如果当前操作是安装的话,该值为 true

1.2 Values

描述的是value.yaml 文件(定义变量的文件)中的内容,默认为空。使用Value 对象可以获取到value.yaml文件中已定义的任何变量数值

Value 键值对 获取方式

 name1: test1 .Values.name1
 info:
 name2: test2 .Values.info.name2
Value 键值对 获取方式

 name1: test1 .Values.name1
 info:
 name2: test2 .Values.info.name2

1.3 Chart

用于获取Chart.yaml 文件中的内容

对象名称 描述

.Chart.Name 获取Chart 的名称
.Chart.Version 获取Chart 的版本
.Chart.Name 获取Chart 的名称
.Chart.Version 获取Chart 的版本

1.4 Capabilities

提供了关于kubernetes 集群相关的信息

对象名称描述
.Capabilities.APIVersions返回kubernetes集群 API 版本信息集合
.Capabilities.APIVersions.Has $version用于检测指定的版本或资源在k8s集群中是否可用,例如:apps/v1/Deployment
.Capabilities.KubeVersion和.Capabilities.KubeVersion.Version用于获取kubernetes 的版本号
.Capabilities.KubeVersion.Major获取kubernetes 的主版本号
.Capabilities.KubeVersion.Minor获取kubernetes 的小版本号

1.5 Template

用于获取当前模板的信息,它包含如下两个对象

对象名称描述
.Template.Name用于获取当前模板的名称和路径(例如:mychart/templates/mytemplate.yaml)
.Template.BasePath用于获取当前模板的路径(例如:mychart/templates)

1.6 helm案例

调用templates

  • 创建chart
bash
helm create mychart
helm create mychart
  • 删除Template下的所有文件
cd mychart
cd templates
cd mychart
cd templates
  • 创建yaml
bash
cat > configMap.yaml <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
namespace: {{ .Release.Namespace }}
data:
  value1: "{{ .Release.IsUpgrade }}" #如果当前操作是升级或回滚的话,该值为true
  value2: "{{ .Release.IsInstall }}" #如果当前操作是安装的话,该值为true
  value3: "{{ .Release.Revision }}" #获取此次修订的版本号
  value4: "{{ .Release.Service }}" #获取当前模板的服务名
EOF
cat > configMap.yaml <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
namespace: {{ .Release.Namespace }}
data:
  value1: "{{ .Release.IsUpgrade }}" #如果当前操作是升级或回滚的话,该值为true
  value2: "{{ .Release.IsInstall }}" #如果当前操作是安装的话,该值为true
  value3: "{{ .Release.Revision }}" #获取此次修订的版本号
  value4: "{{ .Release.Service }}" #获取当前模板的服务名
EOF
  • 执行
bash
#不真正执行,只是试运行看是否能运行
helm install myconfigmap1 ./mychart/ --debug --dry-run
#不真正执行,只是试运行看是否能运行
helm install myconfigmap1 ./mychart/ --debug --dry-run

调用Values对象

清空里面的初始化信息,设置成我们需要的(变量名和赋值)(里面默认的信息都是初始化信息)

vim /root/mychart/values.yaml
name1: test1
info:
  name2: test2
vim /root/mychart/values.yaml
name1: test1
info:
  name2: test2
  • 创建yaml
cat> /root/mychart/templates/configmap.yaml <<EOF
name1: test1
info:
  name2: test2
EOF
cat> /root/mychart/templates/configmap.yaml <<EOF
name1: test1
info:
  name2: test2
EOF
  • 创建Template
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
namespace: {{ .Release.Namespace }}
data:
  value1: "{{ .Values.name1 }}" #获取values.yaml文件中定义的变量的值
  value2: "{{ .Values.info.name2 }}" #获取values.yaml文件中定义的层级变量的值
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
namespace: {{ .Release.Namespace }}
data:
  value1: "{{ .Values.name1 }}" #获取values.yaml文件中定义的变量的值
  value2: "{{ .Values.info.name2 }}" #获取values.yaml文件中定义的层级变量的值
  • 执行
helm install myconfigmap2 ./mychart/ --debug --dry-run
helm install myconfigmap2 ./mychart/ --debug --dry-run

调用Chart

cat /root/mychart/Chart.yaml |grep -vE "#|^$"

apiVersion: v2
name: mychart
description: A Helm chart for Kubernetes
type: application
version: 0.1.0
appVersion: "1.16.0"
cat /root/mychart/Chart.yaml |grep -vE "#|^$"

apiVersion: v2
name: mychart
description: A Helm chart for Kubernetes
type: application
version: 0.1.0
appVersion: "1.16.0"
  • 创建yaml
vim /root/mychart/templates/configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
namespace: {{ .Release.Namespace }}
data: 
value1: "{{ .Chart.Name }}" #获取Chart的名称,获取Chart.yaml文件中定义的变量的值
value2: "{{ .Chart.Version }}" #获取Chart的版本,获取Chart.yaml文件中定义的变量的值
vim /root/mychart/templates/configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
namespace: {{ .Release.Namespace }}
data: 
value1: "{{ .Chart.Name }}" #获取Chart的名称,获取Chart.yaml文件中定义的变量的值
value2: "{{ .Chart.Version }}" #获取Chart的版本,获取Chart.yaml文件中定义的变量的值
  • 执行
helm install myconfigmap3 ./mychart/ --debug --dry-run
helm install myconfigmap3 ./mychart/ --debug --dry-run

调用Capabilities

  • 创建yaml
yaml
vim /root/mychart/templates/configmap.yaml 

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
namespace: {{ .Release.Namespace }}
data:
  value1: "{{ .Capabilities.APIVersions }}" #返回kubernetes集群 API 版本信息集合
  value2: '{{ .Capabilities.APIVersions.Has "apps/v1/Deployment" }}' #用于检测指定的版本或资源在k8s集群中是否可用
  value3: "{{ .Capabilities.KubeVersion.Version }}" #用于获取kubernetes的版本号
  value4: "{{ .Capabilities.KubeVersion.Major }}" #获取kubernetes 的主版本号
  value5: "{{ .Capabilities.KubeVersion.Minor }}" #获取kubernetes 的小版本号
vim /root/mychart/templates/configmap.yaml 

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
namespace: {{ .Release.Namespace }}
data:
  value1: "{{ .Capabilities.APIVersions }}" #返回kubernetes集群 API 版本信息集合
  value2: '{{ .Capabilities.APIVersions.Has "apps/v1/Deployment" }}' #用于检测指定的版本或资源在k8s集群中是否可用
  value3: "{{ .Capabilities.KubeVersion.Version }}" #用于获取kubernetes的版本号
  value4: "{{ .Capabilities.KubeVersion.Major }}" #获取kubernetes 的主版本号
  value5: "{{ .Capabilities.KubeVersion.Minor }}" #获取kubernetes 的小版本号
  • 执行
 helm install myconfigmap4 ./mychart/ --debug --dry-run
 helm install myconfigmap4 ./mychart/ --debug --dry-run

调用Template

  • 创建yaml
yaml
 vim /root/mychart/templates/configmap.yaml
 
 
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
namespace: {{ .Release.Namespace }}
data:
  value1: "{{ .Template.Name }}" #用于获取当前模板的名称和路径(例如:mychart/templates/configmap.yaml)
  value2: "{{ .Template.BasePath }}" #用于获取当前模板的路径(例如:mychart/templates)
 vim /root/mychart/templates/configmap.yaml
 
 
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
namespace: {{ .Release.Namespace }}
data:
  value1: "{{ .Template.Name }}" #用于获取当前模板的名称和路径(例如:mychart/templates/configmap.yaml)
  value2: "{{ .Template.BasePath }}" #用于获取当前模板的路径(例如:mychart/templates)
  • 执行
helm install myconfigmap5 ./mychart/ --debug --dry-run
helm install myconfigmap5 ./mychart/ --debug --dry-run