kubernetes - helm 中嵌入的 tpl 语句
问题描述
我正在使用掌舵。
我有一个条件,其中 values.yaml 中的变量(变量名是 db)将获得条件值(oracle 或 postgres)。
在相同的 values.yaml 中,我有两个部分分别包含 oracle 和 postgres 的属性。
如何以嵌套方式使用 db 中的变量?我想避免 if else 阻塞。
我试过 {{tpl .Values.{{tpl .Values.db .}}.port .}}。但它不起作用。
请在下面找到代码片段
值.yaml
db: postgres
postgres:
port:5432
oracle:
port:1521
模板文件.yaml
port: "{{tpl .Values.{{tpl .Values.db .}}.port .}}"
解决方案
您不能{{ ... }}
在 Helm 模板语言中嵌套块。
您可以将变量设置为内部“模板”的值,或者直接将其作为表达式调用
{{- $dbname := tpl .Values.db . -}}
{{- printf "%s" (tpl .Values.db .) -}}
要将其实际用作.Values
结构中的字段,您需要text/template index
函数。
{{- $settings := index .Values (tpl .Values.db .) -}}
port: "{{ $settings.port }}"
推荐阅读
- java - 更好的 Dagger 封装
- c# - 为什么导出的 ECDSA 密钥看起来很相似?
- c# - 我应该使用链表还是列表以及如何序列化它。
- swift - 一次调用 swift 从 Firebase 中的多个节点中删除值
- vba - 用户定义函数 VBA 中的 #Value 错误
- javascript - 未捕获的类型错误:无法使用对象读取未定义的属性“indexOf”
- arrays - Google 地球引擎 - 错误“无法导出阵列波段。” 如何将交叉协方差的地图图层导出为 Geotiff?
- ios - 仅在最近没有崩溃时才显示 SKStoreReviewController?
- ios - CoreData 查询从多个组中的每个组中检索最新项目
- android - 合并/转换文本视图与/到图像可绘制