kubernetes - Helm 从 env 文件创建秘密
问题描述
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 只是做简单的事情,并且只在单个=
字符上拆分,因此 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 的版本接受从helm 不支持的环境envfile
中查找的裸字,所以如果你的格式是这样的,这个特定的实现将会失败
推荐阅读
- reactjs - 为什么通过 mapStateToProps 传递给 props 后状态仍未定义?
- javascript - 在函数之外获取推文 ID 数组
- python - PyArmor - 打包成一个可执行文件
- ruby-on-rails - 语法错误,意外的输入结束,预期结束 - 我的代码缺少“结束”,我不知道为什么
- docker - Docker 环境变量在运行命令时无法通过 shell 脚本
- postgresql - 我如何知道我的应用程序是否容易受到 CVE-2020-13692 的攻击?
- php - 试图在单击编辑按钮时获取非对象的属性“id”
- latex - lstlisting中不可见的某些单词
- rust - UDP打孔:无法从服务器发送到客户端
- sql-server - SSRS - 遇到 null 时停止 RunningValue