为了账号安全,请及时绑定邮箱和手机立即绑定

用 helm 模板文件有条件地设置一个变量,用于整个模板文件

用 helm 模板文件有条件地设置一个变量,用于整个模板文件

Go
冉冉说 2022-09-05 17:56:55
我想在 helm 模板文件的顶部有条件地设置一个“go”变量,然后稍后在模板文件中使用它。以下是我尝试不起作用的方法:在我的模板文件的顶部,我执行以下操作:{{- if eq $.Values.kafka.create true -}}{{- $kafka_port := 9094 -}}{{- else -}}{{- $kafka_port := $.Values.kafka.port -}} {{- end }}但是当我尝试执行“helm install”时,我收到一个解析错误,我稍后在模板文件中使用$kafka_port。具体错误是:Error: parse error at (tombolo/templates/tom-node-launch.yaml:89): 未定义的变量 “$kafka_port”
查看完整描述

3 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

在外部块中定义变量:


{{- $kafka_port := 9094 -}}

{{- if eq $.Values.kafka.create false -}}

{{- $kafka_port = $.Values.kafka.port -}} 

{{- end }}


查看完整回答
反对 回复 2022-09-05
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

您的示例非常简短,非常适合您的用例。


但作为一般规则:当您开始在模板中编写代码时,也可能表明您应该在控制器部分(go代码)中编写代码:


type KafkaCfg struct {

    port   int

    create bool

}


const kafkaCreationPort = 9094


func (c KafkaCfg) Port() int {

    if c.create {

        return kafkaCreationPort

    }

    return c.port

}



func someWhereElse() {

    var data struct {

        Values struct {

            Kafka KafkaCfg

        }

    }


    data.Values.Kafka.create = true

    helmTemplate.Execute(w, data)

}


// in your template :


{{ .Values.Kafka.Port }} {{ /* <- will call the .Port() method */ }}

https://play.golang.org/p/6pNHY0kcegp


查看完整回答
反对 回复 2022-09-05
?
隔江千里

TA贡献1906条经验 获得超10个赞

Go 语言(与 Go 编程语言本身不同)没有全局变量。text/template


您可以做的是编写一个帮助程序模板,通常在 中生成以下片段:templates/_helpers.tpl


{{- define "kafka.port" -}}

{{- if .Values.kafka.create -}}

9094

{{- else -}}

{{- .Values.kafka.port -}}

{{- end -}}

此模板在调用时输出端口号;其单个参数应为标准的顶级 Helm 对象。


- name: KAFKA_PORT

  value: {{ include "kafka.port" . | quote }}

或者,如果在特定上下文中,您碰巧需要它作为变量,则可以将其包含在其中(使用 Helm include 扩展将调用模板的输出捕获为字符串);但它将仅限于其特定的模板或文件。


{{- $kafkaPort := include "kafka.port" . }}

- name: KAFKA_PORT

  value: {{ quote $kafkaPort }}

- name: KAFKA_BROKER_URL

  value: kafka://{{ include "kafka.name" . }}:{{ $kafkaPort }}


查看完整回答
反对 回复 2022-09-05
  • 3 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号