kubernetes-helm - Helm values.yaml 文件中的动态变量
问题描述
我有一个用例,我想在 helm values.yaml 中为给定属性设置动态值。例如,我有以下版本文件
version=123
我想动态解析并使用这个版本到 helm values.yaml 版本属性。
预期值.yaml
name: abc
version: 123
解决方案
有很多选项取决于您的工具集的最佳选择,但我过去所做/看到的工作是创建您自己的 yaml 文件模板values.yaml.template
,并在其中替换所需的值。
因此,例如您的 values.yaml.template,将类似于:
name: abc
version: {{version}}
并且您会将模板文件名和版本文件名都传递给模板引擎以进行替换。
一些方法可以做到这一点:
sed
- 有点hacky,但已经安装了。这是一个例子。- jinja2-cli - 我已经有效地使用它来将值替换到模板文件中
- mustache - 我从未使用过,但它似乎是在考虑 CLI 的情况下构建的
- confd - 似乎适合这种情况,尽管我从未使用过它。
- 制作/使用您已经在使用的其他模板语言的 CLI 工具 - 例如,我见过有人制作了 Freemarker CLI 工具。
显然有大量的模板语言,所以考虑到你的堆栈,最省力的问题是什么。但也许一个更困难的问题是,您如何挂钩到 helm 配置或启动,以便您可以从模板生成配置 yaml 文件。这也取决于您的堆栈。
[更新] 我不熟悉 helm,但也可以动态获取配置值(即,使用 helm 插件在 helm 启动时从配置服务器检索 helm 配置)。
推荐阅读
- azure-devops - 在 Azure DevOps 中的自托管 Windows 代理中设置 bash
- python - pymongo 错误文档必须是 dict 的实例
- python - 我想得到这个字符串的一部分,但它应该打破前一个完整的单词。它不应该切断中间词
- powershell - 服务器监控powershell脚本
- java - 从 google oauth 2.0 请求中获取请求标头和参数
- jupyter-notebook - 如何在新的 jupyter 编辑器 VScode 中更改 markdown 样式
- python - 如何通过使用列表理解或任何其他方法使我的函数更简洁?
- c++ - System.Drawing.Bitmap.GetHicon() 上的 GDI 对象泄漏
- python - 由于 python greenlet 包导致 Docker 构建崩溃
- python - python程序解析json文件