嵌套模板头盔

问题描述 投票:0回答:1

我正在解决一个问题,通过自定义 configMap 实现 helm 图表,并尝试根据环境模式填充 configMap。

值.yaml

externalIPService:
 ip: 1.1.1.1
 port:  80 

emsConfig: "receivers:
 otlp:
   protocols:
     http:
processors:
 batch:
exporters:
 otlp/ems:
   endpoint: {{ .Values.externalIPService.ip }}:{{ .Values.externalIPService.port }}
service:
 pipelines:
   traces:
     receivers: [otlp]
     processors: [batch]
     exporters: [otlp/ems]
   metrics:
     receivers: [otlp]
     processors: [batch]
     exporters: [otlp/ems]
   logs:
     receivers: [otlp]
     processors: [batch]
     exporters: [otlp/ems]
"

configMap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: simple-demo
data:
  message: "{{ tpl .Values.emsConfig .}}"

helm 模板输出是纯字符串,而不是 yaml 内容。我也尝试过 toYaml ,但也没有帮助。有人可以帮忙找到一种方法来进行嵌套渲染并能够在 confMap 中使用最终输出吗

apiVersion: v1
kind: ConfigMap
metadata:
  name: simple-demo
data:
  message: "receivers: otlp: protocols: http: processors: batch: exporters: otlp/ems: endpoint: {{ .Values.externalIPService.ip }}:{{ .Values.externalIPService.port }} service: pipelines: traces: receivers: [otlp] processors: [batch] exporters: [otlp/ems] metrics: receivers: [otlp] processors: [batch] exporters: [otlp/ems] logs: receivers: [otlp] processors: [batch] exporters: [otlp/ems] "
kubernetes kubernetes-helm
1个回答
1
投票

在这种情况下,您需要使用

_halpers.tpl
文件。

首先,将其添加到

_halpers.tpl
文件中:

{{- define "appname.emsConfig" -}}
receivers:
 otlp:
   protocols:
     http:
processors:
 batch:
exporters:
 otlp/ems:
   endpoint: {{ .Values.externalIPService.ip }}:{{ .Values.externalIPService.port }}
service:
 pipelines:
   traces:
     receivers: [otlp]
     processors: [batch]
     exporters: [otlp/ems]
   metrics:
     receivers: [otlp]
     processors: [batch]
     exporters: [otlp/ems]
   logs:
     receivers: [otlp]
     processors: [batch]
     exporters: [otlp/ems]
{{- end }}

values.yaml
文件将如下所示:

externalIPService:
 ip: 1.1.1.1
 port:  80 

configMap.yaml
文件需要如下所示:

apiVersion: v1
kind: ConfigMap
metadata:
  name: simple-demo
data:
  message: |-
  {{ include "appname.emsConfig" . | nindent 4}}
© www.soinside.com 2019 - 2024. All rights reserved.