1. Helm内置对象
Release 对象
Values 对象
Chart 对象
Capabilities 对象
Template 对象
1.1 Release
描述了版本发布自身的一些信息
内置 | 作用 |
---|---|
.Release.Name | release名称 |
.Release.Namespace | release命名空间 |
.Release.Revision | release版本号。起始是1,每次升级或回滚都会自增1 |
.Release.Service | release 服务的名称 |
.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