Helm 从 env 文件创建秘密

Helm create secret from env file

Kubectl 提供了一种将环境变量文件转换为机密的好方法:

$ kubectl create secret generic my-env-list --from-env-file=envfile

在 Helm 中有什么方法可以做到这一点吗?我尝试了下面的代码片段,但结果却大不相同:

kind: Secret
metadata:
  name: my-env-list
data:
  {{ .Files.Get "envfile" | b64enc }}

看起来 kubectl 只是做简单的事情而且只做 splits on a single = character 所以 Helm 的方式是复制那个行为(helm 有 regexSplit 这足以满足我们的目的):

apiVersion: v1
kind: Secret
data:
  {{ range .Files.Lines "envfile" }}
  {{   if . }}
  {{     $parts := regexSplit "=" . 2 }}
  {{     index $parts 0  }}: {{ index $parts 1 | b64enc }}
  {{   end }}
  {{ end }}

{{ if . }} 是因为 .Files.Lines 返回了一个空字符串,这当然不符合模式

请注意,kubectl 的版本接受 barewords looked up from the environment,而 helm 不支持这样做,因此如果您的 envfile 格式如此,此特定实现将失败