在 helm 中定义模板的值
defining the value for template in helm
我创建了一个新的 helm 项目,目录结构如下所示:
my-app-helm
/my-app-helm
/charts
/payment
/templates
_helpers.tpl
secrets.yaml
deployment.yaml
ingress.yaml
service.yaml
Chart.yaml
values.yaml
Chart.yaml
我在很多地方都提到了 template
,比如 ingress.yaml:
- host: {{ .Values.payment.apphost }}
http:
paths:
- path: /sft/v1/payment/
backend:
serviceName: {{ template "payment.fullname" . }}
servicePort: 80
我要求我的服务名称、入口名称等以“ccg-helm”为前缀,因此我想问一下如何确保我引用“template”时的值是“ccg-helm” :
例如:
服务名称:{{ 模板“payment.fullname”。 }}
解析为 ccg-helm-payment
您可以像这样修改 _helpers.tpl
中的 payment.fullname
模板:
{{/*
Create a default fully qualified app name prefixed with "ccg-helm"
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "payment.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- printf "%s-%s" "ccg-helm" .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s-%s" "ccg-helm" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
如果您的图表是通过 helm create
命令创建的,则其 template 会创建 "payment.fullname"
模板。逻辑很简单:
- 如果设置了
fullnameOverride
值,则使用 as-is、{{ .Values.fullnameOverride }}
。
- 设
$name
为 nameOverride
值(如果已设置),否则为 Chart.yaml
中的 name
。
- 如果发布名称中包含
$name
,则使用{{ .Release.Name }}
。
- 否则使用
{{ .Release.Name }}-{{ $name }}
.
您可以在图表的 _helpers.tpl
文件中找到它。
因此您有两个 deploy-time 选项可以满足此要求。将 fullnameOverride
设置为 ccg-helm
,或者使用该名称作为 helm install
命令中的发布名称。
helm install . --generate-name --set fullnameOverride=ccg-helm
helm install . ccg-helm
对于许多更简单的图表,这是全名;如果您 --set fullnameOverride=ccg-helm
那么在您的示例中,服务将被准确命名为 ccg-helm
。如果您希望它有其他名称,则需要同时编辑 service.yaml
和 ingress.yaml
以具有匹配的名称,通常在模板调用后带有某种后缀。
我创建了一个新的 helm 项目,目录结构如下所示:
my-app-helm
/my-app-helm
/charts
/payment
/templates
_helpers.tpl
secrets.yaml
deployment.yaml
ingress.yaml
service.yaml
Chart.yaml
values.yaml
Chart.yaml
我在很多地方都提到了 template
,比如 ingress.yaml:
- host: {{ .Values.payment.apphost }}
http:
paths:
- path: /sft/v1/payment/
backend:
serviceName: {{ template "payment.fullname" . }}
servicePort: 80
我要求我的服务名称、入口名称等以“ccg-helm”为前缀,因此我想问一下如何确保我引用“template”时的值是“ccg-helm” :
例如:
服务名称:{{ 模板“payment.fullname”。 }}
解析为 ccg-helm-payment
您可以像这样修改 _helpers.tpl
中的 payment.fullname
模板:
{{/*
Create a default fully qualified app name prefixed with "ccg-helm"
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "payment.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- printf "%s-%s" "ccg-helm" .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s-%s" "ccg-helm" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
如果您的图表是通过 helm create
命令创建的,则其 template 会创建 "payment.fullname"
模板。逻辑很简单:
- 如果设置了
fullnameOverride
值,则使用 as-is、{{ .Values.fullnameOverride }}
。 - 设
$name
为nameOverride
值(如果已设置),否则为Chart.yaml
中的name
。 - 如果发布名称中包含
$name
,则使用{{ .Release.Name }}
。 - 否则使用
{{ .Release.Name }}-{{ $name }}
.
您可以在图表的 _helpers.tpl
文件中找到它。
因此您有两个 deploy-time 选项可以满足此要求。将 fullnameOverride
设置为 ccg-helm
,或者使用该名称作为 helm install
命令中的发布名称。
helm install . --generate-name --set fullnameOverride=ccg-helm
helm install . ccg-helm
对于许多更简单的图表,这是全名;如果您 --set fullnameOverride=ccg-helm
那么在您的示例中,服务将被准确命名为 ccg-helm
。如果您希望它有其他名称,则需要同时编辑 service.yaml
和 ingress.yaml
以具有匹配的名称,通常在模板调用后带有某种后缀。