Helm 被宣传为“管理 k8s 上应用程序部署的方式”。
我们的微服务具有代码存储库和可部署的 1 对 1 映射,我发现将 k8s 配置映射与代码一起使用要方便得多,以便它们一起发展,例如为功能标志添加新的环境变量时。
然而,我们维护的是一个 helm Charts git 存储库,需要偶尔与代码同步更新。
最佳实践是什么:
- 何时使用舵图?当代码存储库和可部署具有一对一映射时是否适用?或者主要是为了协调复合应用程序的部署?
- 您是否在每个存储库中成功使用了 Helm Chart(而不是对所有图表使用单个存储库)?
- 如果使用 vanilla k8s 配置映射来配置 git 存储库的部署,您遇到了哪些问题? IE。你什么时候开始需要掌舵?
希望它不要太笼统或固执己见,但很乐意进行编辑以使其更加具体。
我们也遇到过一些同样的问题Activiti https://github.com/Activiti云项目所以可以根据我的经验回答:
1 何时使用舵图?当代码存储库和可部署具有一对一映射时是否适用?或者主要是为了协调复合应用程序的部署?
如果您发现自己需要针对不同环境进行不同配置,那么 helm 可能会很有用。如果您的外部使用者也想使用您的可部署项并将其部署到自己的环境中,或者扩展或进一步配置可部署项,则更加有用。
2 您是否在每个存储库中成功使用了 Helm Chart(而不是对所有图表使用单个存储库)?
We have 做了这个 https://github.com/Activiti/ttc-rb-english-campaign/tree/65d52c3adb9edd63f0e214f8e8bd44e8ee28df7b/charts/ttc-rb-english-campaign 出于某些目的 https://github.com/Activiti/ttc-docs/blob/c4529b3ddcfb5a6da75eb27f28e2c08c53d5a23f/workshop.md如果您使用的是默认值詹金斯-X https://jenkins.io/projects/jenkins-x/,它为您提供了一个专为特定的 CI/CD 方式而设置的 kubernetes 集群。它包括一个图表博物馆 https://github.com/helm/chartmuseum在该集群中,当您使用 Jenkins-X 的默认管道构建应用程序时,图表将发布到内部图表博物馆。
然而,我们已经还使用了单个存储库 https://github.com/Activiti/activiti-cloud-charts。如果您使用托管图表,这是一种自然的方法github页面存储库 https://github.com/technosophos/tscharts因为如果源与托管位置位于同一位置,则可以更轻松地构建图表包并发布它们。但我认为这没有必要——如果你设置 CI 来这样做,你应该能够将打包的图表添加到 docs 目录并重新索引存储库 https://github.com/technosophos/tscharts。这意味着每个项目的 CI 都需要对 helm repo 项目进行提交。
3 如果使用 vanilla k8s 配置映射来配置 git 存储库的部署,您遇到了哪些问题? IE。你什么时候开始需要掌舵?
与 1 一样,如果您需要能够在部署时更改配置(例如设置特定于集群的 url)或进行分发以允许其他人创建覆盖默认值的新包,那么您确实获得了价值。能够将某些配置外部化为部署时参数也可能有所帮助,这样特定的参数就不必存在于 git 中(例如,您可能想使用某些密码来执行此操作)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)