关于Vault Sidecar多Secret路径在postgres-exporter模板中的疑问
Postgres-Exporter模板多Secret路径取值问题
关键说明
单个{{ with secret }}块不支持传入多个Secret路径,Sidecar只会解析最后一个路径,这就是你遇到只有最后一个Secret值能正常读取的原因。
正确实现方式:独立调用secret函数
要让pass1、pass2分别从不同租户的Secret取值,需分开调用secret函数并将结果存入变量,避免上下文覆盖。示例代码如下:
# 分别获取两个租户的Secret实例 {{- $secretTenant1 := secret "TEST/A/TEST/DEV_COMMON1" -}} {{- $secretTenant2 := secret "TEST/A/TEST/DEV_COMMON2" -}} # 分别提取对应Secret中的密码值 pass1: {{ $secretTenant1.Data.password }} pass2: {{ $secretTenant2.Data.password }}
嵌套with secret失效的原因
嵌套with块会覆盖当前上下文,内层with的上下文会替换外层的Secret上下文。比如错误写法中,内层with生效后,外层的Secret上下文已无法直接访问,导致pass1读取不到值:
# 错误示例:嵌套导致上下文覆盖 {{ with secret "TEST/A/TEST/DEV_COMMON1" }} pass1: {{ .Data.password }} {{ with secret "TEST/A/TEST/DEV_COMMON2" }} pass2: {{ .Data.password }} {{ end }} {{ end }}
这种写法中,当执行到内层with时,当前上下文变为第二个Secret,若此时再尝试读取外层的Secret值,就会因上下文不匹配显示<no value>。
内容的提问来源于stack exchange,提问作者Cvitoybamp
相关产品推荐
相关产品推荐

