kubernetes - 具有两个部署的 Helm
问题描述
我是使用 Helm 的新手,当您有两个部署时,我不确定哪种方法是最好的方法。我为我的应用程序创建了一个图表。它包含两个部署:
- 应用程序-nginx-phpfpm.yaml
- 应用程序-mysql.yaml
我应该将它们保存在同一个图表中还是应该为 app-mysql.yaml 创建一个子图表?
解决方案
您可以同时拥有这两者,具体取决于您希望如何构建部署。
你应该记住以下几点
注意事项
单图优势
- 更易于部署:仅部署一次,单一差异
- 单一版本,因此回滚/升级发生在单个元素上
- 您可以使用功能标志卸载部件
- 在不接触其余元素的情况下安装新组件可能会很棘手
单一图表注意事项
- 更难部署非耦合服务,例如,在升级数据库时用于数据访问的模拟服务
- 更难解耦和测试每个实例
- 更难命名和理解每个组件(在不同的版本中,您
{{.Release.Name}}
已经为每个“应用程序”更改)。 - 更难为不同组件提供/跟踪不同的发布周期
- 存储在单个 ConfigMap 中的版本,如果您的图表包含例如嵌入的测试数据,这可能会导致大小限制问题
版本控制注意事项
您可以拥有一个用于测试所有子图表的主图表,并独立打包子图表,但仍然将所有内容都放在同一个存储库中。
例如,我通常保留以下内容:
. / helm / charts / whatever / charts / subchart1
. / helm / charts / whatever / charts / subchart2
. / helm / charts / whatever / values.yaml
或者
. / helm / charts / whatever-master / values.yaml
. / helm / charts / whatever-master / requirements.yaml
. / helm / charts / whatever-subchart1 / values.yaml
. / helm / charts / whatever-subchart2 / values.yaml
并使用主图表上的 requirements.yaml 从file://../whatever-subchartx
.
这样,如果需要,我可以拥有whatever-stress-test
并且whatever-subcomponent-unit-test
仍然可以灵活地单独部署具有不同发布周期的组件。
这最终还取决于您的升级策略。Canary 升级可能需要您以比使用单个图表更具体的方式处理有状态微服务,因此请相应地进行计划。
推荐阅读
- sparql - 用于 sparql 端点的 Python / rdflib HTTP 服务器
- r - 如何在 R 中使用 Lek 的配置文件进行敏感性分析?
- powershell - 纠缠:无法访问父范围变量
- php - PHP 调用未定义函数 getLine()
- c++ - std::shared_mutex 不与执行 lock_shared() 的线程一起缩放
- python - 用其他列数据的平均值在熊猫中创建一个新列
- autodesk-forge - 在 Forge Viewer 中使用 restoreState 时如何删除所有剖切面
- javascript - 为什么我的 for 循环在我的条件之前退出
- xcode - 时间配置文件中特定方法的 CPU 使用情况图
- javascript - 我的结果不断增加,每次做出新选择时,如何用新结果替换当前结果?