从 Helm 图表生成 docker-compose.yaml

问题描述 投票:0回答:1

我对从 Helm 图表生成 docker-compose.yaml 文件感兴趣。有没有好的方法或工具可以做到这一点?

我意识到这与大多数人所做的相反。为什么我想这样做:

  1. 我们的生产系统通过 Helm 图表运行 Kubernetes。我们已经有了完整的 k8s 和 Helm 设置;不需要使用像 Kompose 这样的工具来帮助我们实现这一目标。问题是如何将 Helm 转换为 docker-compose,而不是相反。
  2. 我们希望 Helm 图表成为容器配置的唯一权威来源。他们能够描述 docker-compose 的超集。
  3. 在开发机器上使用 Helm 运行一组服务比通过 docker-compose 运行同一组服务更耗费时间和资源。我们不想让工程师使用 Helm/k8s 来减慢开发速度。
  4. 我们不想维护两套配置。

任何人都可以建议如何执行此操作,或者针对开发计算机上遇到的时间/资源问题提出不同的解决方案吗?

kubernetes docker-compose kubernetes-helm
1个回答
0
投票

虽然我 100% 同意应该有一个工具来在两个堆栈之间执行翻译。一种说法是“我们不想维护两组配置”,但仍然想要两组配置。

更容易让您的开发人员使用与生产中使用的相同的堆栈,而不是相反。

也就是说,我倾向于使用 xslt 和 xpath 的方法。即使这样,结果也不一样。

Helm Charts 通常包含机密和配置文件以及部署和容器规范。 Docker-compose 仅需要部署/容器规范。所以我的流程是让 helm 生成 kubernetes deployment.yml 到 stdout 的结果,然后使用 yml 到 xml mitter。从那里使用 xmlstarlet 和 xslt 模板以及所需的 xpath 选择来创建生成的 docker-compose.yml 文件。

听起来很复杂,但这只是常见的 UNIX 文本处理(例如

helm install --dry-run --debug | yaml2xml | xml tr ~/lib/docker-compose.xslt /dev/stdin > ./docker-compose.yml && pipx run yamllint ./docker-compose.yml
)。

© www.soinside.com 2019 - 2024. All rights reserved.