如何解决输出到序列时在处理地图对象时添加换行符
我想使用 values.yaml 文件中定义的范围创建多个服务定义。
values.yaml
services:
type: ClusterIP
ports:
- name: https
port: 443
protocol: TCP
targetPort: 8443
- name: http
port: 80
protocol: TCP
targetPort: 8080
创建多个定义工作正常,但端口部分在启动序列时总是有一个换行符。
模板服务.yaml
{{- $top := . -}}
{{- range $key,$val := .Values.services.ports -}}
apiVersion: v1
kind: Service
Metadata:
name: {{ printf "%s-%s" ($.Values.fullnameOverride) ($val.name) }}
labels:
app: {{ printf "%s-%s" ($.Values.fullnameOverride) ($val.name) }}
spec:
type: {{ $.Values.services.type }}
ports:
- {{ toYaml $val | trim | nindent 4 }}
selector:
app: {{ $.Values.fullnameOverride }}
---
{{- end }}
但是当我执行上述模板时,我得到以下输出:
---
# Source: arichnettools/templates/services.yaml
apiVersion: v1
kind: Service
Metadata:
name: arichnettools-https
labels:
app: arichnettools-https
spec:
type: ClusterIP
ports:
-
name: https
port: 443
protocol: TCP
targetPort: 8443
selector:
app: arichnettools
---
# Source: arichnettools/templates/services.yaml
apiVersion: v1
kind: Service
Metadata:
name: arichnettools-http
labels:
app: arichnettools-http
spec:
type: ClusterIP
ports:
-
name: http
port: 80
protocol: TCP
targetPort: 8080
selector:
app: arichnettools
---
我不知道如何在 ports:
之后去掉换行符我不确定这是否会在部署过程中给我一个错误,但这只会让我发疯。我也尝试过 indent
,但到目前为止没有运气。
解决方法
ports:
之后的这一新行不应导致任何错误,但您只需对模板进行一次修改即可轻松摆脱它。
代替:
ports:
- {{ toYaml $val | trim | nindent 4 }}
尝试使用:
ports:
- {{ toYaml $val | indent 4 | trim }}
我们可以看到修改后它按预期工作:
$ cat templates/services.yaml
{{- $top := . -}}
{{- range $key,$val := .Values.services.ports -}}
apiVersion: v1
kind: Service
metadata:
name: {{ printf "%s-%s" ($.Values.fullnameOverride) ($val.name) }}
labels:
app: {{ printf "%s-%s" ($.Values.fullnameOverride) ($val.name) }}
spec:
type: {{ $.Values.services.type }}
ports:
- {{ toYaml $val | indent 4 | trim }}
selector:
app: {{ $.Values.fullnameOverride }}
---
{{- end }}
$ helm template test .
---
# Source: mychart/templates/services.yaml
apiVersion: v1
kind: Service
metadata:
name: svc-test-https
labels:
app: svc-test-https
spec:
type: ClusterIP
ports:
- name: https
port: 443
protocol: TCP
targetPort: 8443
selector:
app: svc-test
---
# Source: mychart/templates/services.yaml
apiVersion: v1
kind: Service
metadata:
name: svc-test-http
labels:
app: svc-test-http
spec:
type: ClusterIP
ports:
- name: http
port: 80
protocol: TCP
targetPort: 8080
selector:
app: svc-test
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。