首页 > 解决方案 > Helm 插值

问题描述

我正在像这样在 Helm Deployment 中设置以下环境变量。

name: SERVER_ENDPOINT
value: {{ .Values.server.dev_proxy_endpoint }}

但是想插入值变量的环境部分(dev),就像这样

name: SERVER_ENDPOINT
value: {{ .Values.server. {{ .Values.environment | lower }} _proxy_endpoint }}

这可能吗?

回复第一条评论

我通过在文件顶部创建一个新定义来尝试这一点,如下所示:

{{- $value_path_to_endpoint := print ".Values.server." .Values.environment  "_proxy_endpoint" -}}

但这会呈现一个文字值,而不是指向值文件的上下文指针。

name: SERVER_ENDPOINT
value: {{ $value_path_to_endpoint}}

换句话说, $value_path_to_endpoint 返回:

".Values.server.dev_proxy_endpoint"

而不是

.Values.server.dev_proxy_endpoint

标签: kuberneteskubernetes-helm

解决方案


您可以使用Go 文本/模板index中的函数和 Helm 的printf 函数

env:
- name: SERVER_ENDPOINT
  value: {{ (index .Values.server (printf "%s_proxy_endpoint" ( .Values.environment | lower ))) }}

推荐阅读