辅助函数无法正确解析

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

嗨,我有一个名为 test-service 的舵图。我有一个名为 helm-common-templates 的辅助图表。我的图表依赖于 helm-common-templates。它定义了一个名为“helm-common-templates.certificate-enabled”的函数。以下是功能。

{{- define "helm-common-templates.certificate-enabled" -}}
{{- $val := "false" }}
{{- if .Values.global -}}
{{- if .Values.global.pms -}}
{{- if .Values.global.pms.logstash -}}
{{- if .Values.global.pms.logstash.tls -}}
{{- if .Values.global.pms.logstash.tls.enabled -}}
{{- $val := "true" }}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{ $val }}
{{- end -}}

如果属性

global.pms.logstash.tls.enabled
设置为 true,则该函数基本上返回 true,否则返回 false。在我的主图表中,我在名为certificate.yaml的文件中调用该函数

以下是文件certificate.yaml的内容

{{ if eq (include "helm-common-templates.certificate-enabled" .) "true" }}

apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: ls-secret
  annotations:
    "helm.sh/hook": "post-delete"
    "helm.sh/hook-delete-policy": "before-hook-creation, hook-succeeded"
data:

---
{{end}}

如果我进行试运行,我会得到以下输出

helm upgrade --install --debug  test --namespace bcc --wait --timeout "10m0s"  --set global.pms.logstash.tls.enabled=true  . --dry-run

输出

history.go:56: [debug] getting history for release test
Release "test" does not exist. Installing it now.
install.go:192: [debug] Original chart version: ""
install.go:209: [debug] CHART PATH: /home/prabpras/filebeat-testing/test-service

NAME: test
LAST DEPLOYED: Wed Nov  1 14:50:28 2023
NAMESPACE: bcc
STATUS: pending-install
REVISION: 1
TEST SUITE: None
USER-SUPPLIED VALUES:
global:
  pms:
    logstash:
      tls:
        enabled: true

COMPUTED VALUES:
global:
  kubernetes: {}
  pms:
    logstash:
      tls:
        enabled: true
  tls:
    enabled: true
    truststore: {}
  tracing:
    type: NoOp
helm-common-templates:
  global:
    kubernetes: {}
    pms:
      logstash:
        tls:
          enabled: true
    tls:
      enabled: true
      truststore: {}
    tracing:
      type: NoOp
HOOKS:
MANIFEST:

我可以看到certificate.yaml 中的秘密资源没有在试运行输出中呈现。基本上函数

helm-common-templates.certificate-enabled
总是返回 false。

我还附上了我的图表的目录结构

test-service]$ tree
.
|-- Chart.yaml
|-- charts
|   `-- helm-common-templates
|       |-- Chart.yaml
|       `-- templates
|           `-- _helpers.tpl
|-- requirements.yaml
|-- templates
|   |-- NOTES.txt
|   |-- _helpers.tpl
|   `-- certificate.yaml
`-- values.yaml

感谢任何帮助。 谢谢你

kubernetes kubernetes-helm go-templates
1个回答
0
投票

我们已经解决了。重写辅助函数以使用 printf

{{- define "certificate-enabled" -}}
{{- if ((((.Values.global).pms).logstash).tls).enabled -}}
{{- printf "true" }}
{{- else -}}
{{- printf "false" }}
{{- end -}}
{{- end -}}
© www.soinside.com 2019 - 2024. All rights reserved.