yaml 生成问题的多行掌舵值
Multiline helm values to yaml generation issues
我有一个带有入口类对象的舵图。
在入口类型中,我想允许从值文件加载自定义注释。
我的入口类型看起来像:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: "bla"
{{- if .Values.routing.annotations }}
annotations:
{{ toYaml .Values.routing.annotations | indent 4 }}
{{- end }}
labels:
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
spec:
{{- if .Values.routing.tls_enabled }}
tls:
- hosts:
- {{ .Values.routing.host }}
secretName: {{ .Values.routing.tls_secretName }}
{{- end }}
rules:
- host: {{ .Values.routing.host }}
http:
paths:
- path: /{{ .Values.routing.path }}
backend:
serviceName: service-{{ .Values.app.name }}-{{ .Values.app.CustomerName }}
servicePort: {{ .Values.service.port }}
{{- end }}
我的 Values.yaml 文件如下所示:
enabled: yes
# Note: For OpenShift change the type to route
type: ingress
annotations: |-
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
# Recommendation: Set the host to {model type}-{container version}.{rest of the DNS name}
# Note: You must update the hostname in the relevant DNS service to match the value set for the host variable
host: localhost
path:
tls_enabled: no
# For OpenShift the value of the tls_secretName variable is ignored because TLS is handled differently
tls_secretName: chart-example.voicelab.local
当我想测试 helm 如何生成 yaml 文件时,我 运行 命令:
helm template .
然后生成种类对象:
# Source: rcm/templates/ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: "bla"
annotations:
|-
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
labels:
....
如何删除“|-”?为什么会生成?
您可以在 values.yaml
中执行类似的操作
routing:
annotations:
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
那你可以参考is as to map
annotations:
{{- range $key, $value := .Values.routing.annotations }}
{{ $key }}: {{ $value | quote }}
{{- end }}
我有一个带有入口类对象的舵图。 在入口类型中,我想允许从值文件加载自定义注释。 我的入口类型看起来像:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: "bla"
{{- if .Values.routing.annotations }}
annotations:
{{ toYaml .Values.routing.annotations | indent 4 }}
{{- end }}
labels:
app: {{ template "name" . }}
chart: {{ template "chart" . }}
release: {{ .Release.Name }}
spec:
{{- if .Values.routing.tls_enabled }}
tls:
- hosts:
- {{ .Values.routing.host }}
secretName: {{ .Values.routing.tls_secretName }}
{{- end }}
rules:
- host: {{ .Values.routing.host }}
http:
paths:
- path: /{{ .Values.routing.path }}
backend:
serviceName: service-{{ .Values.app.name }}-{{ .Values.app.CustomerName }}
servicePort: {{ .Values.service.port }}
{{- end }}
我的 Values.yaml 文件如下所示:
enabled: yes
# Note: For OpenShift change the type to route
type: ingress
annotations: |-
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
# Recommendation: Set the host to {model type}-{container version}.{rest of the DNS name}
# Note: You must update the hostname in the relevant DNS service to match the value set for the host variable
host: localhost
path:
tls_enabled: no
# For OpenShift the value of the tls_secretName variable is ignored because TLS is handled differently
tls_secretName: chart-example.voicelab.local
当我想测试 helm 如何生成 yaml 文件时,我 运行 命令:
helm template .
然后生成种类对象:
# Source: rcm/templates/ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: "bla"
annotations:
|-
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
labels:
....
如何删除“|-”?为什么会生成?
您可以在 values.yaml
routing:
annotations:
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
那你可以参考is as to map
annotations:
{{- range $key, $value := .Values.routing.annotations }}
{{ $key }}: {{ $value | quote }}
{{- end }}