kubernetes-helm - 多行 helm 值到 yaml 生成问题
问题描述
我有一个带有入口类型对象的掌舵图。在入口类型中,我想允许从值文件加载自定义注释。我的入口类型看起来像:
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 .
然后它生成 kind 对象:
# 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 }}
推荐阅读
- javascript - 用anime.js变形:坐标在给定的开始和结束位置之间跳转
- opengl - 了解 OpenGL 投影矩阵
- shell - 使用 shell 脚本合并 Json 数组
- c# - 在 PowerShell 中使用引用的 DLL 运行 C# 代码
- python - 选择的组合框的背景颜色/默认值
- javascript - 为什么填充值数组后变为空?
- java - java中的聊天服务器
- javascript - .NET Core 查看页面的值到 JavaScript 数组
- docker - 我在 Docker 中有两个 MariaDb 映像,但是一个配置
- java - 如何修复使用evosuite生成测试用例时出现的NoClassDefFoundError错误?