具有两个部署的头盔

问题描述 投票:2回答:3

我对使用Helm并不陌生,我不确定在进行两次部署时哪种方法最好。我已经为我的应用程序创建了一个图表。它包含两个部署:

  1. APP-nginx的-phpfpm.yaml
  2. APP-mysql.yaml

应该将它们保留在同一图表中,还是应该为app-mysql.yaml创建一个子图?

kubernetes kubernetes-helm
3个回答
3
投票

您可以将单个图表与两个部署一起使用,也可以将主图表与两个子图表一起使用,一个子图表用于app-nginx-phpfpm.yaml,另一个子图表用于app-mysql.yaml。如果您的整个应用程序增长不会那么快,则可以使用一个图表。但是,如果您打算继续向应用程序中添加组件(更多部署等),建议您使用子图表。详细信息here


2
投票

您可以同时拥有两者,具体取决于您要如何构造部署。

您应注意以下几点

注意事项

单个图表的好处

  • 更易于部署:仅部署一次,一次比较
  • 单个版本,因此回滚/升级发生在单个元素上
  • 您可以通过使用功能标记来卸载部件
  • 安装新组件而不接触其余部分可能会很棘手

单个图表警告

  • 升级数据库时,为部署不耦合的服务(例如,用于数据访问的模拟服务而部署的麻烦)
  • 更难解耦并测试每个实例
  • 更难于命名和理解每个组件(在不同的发行版中,每个[app]的{{.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-testwhatever-subcomponent-unit-test,同时仍然可以灵活地单独部署具有不同发布周期的组件。

这最终还取决于您的升级策略。与单张图表相比,金丝雀升级可能会要求您以更特定的方式处理有状态微服务,因此请进行相应的计划。


0
投票

图表可能取决于其他图表;参考-https://helm.sh/docs/glossary/#chart-dependency-subcharts

[如果您有家长申请,请说:-问候应用程序和2个子申请,例如:- 你好,世界-hiworld

您可以为父级“ greetings-app”创建图表,然后在“ charts /”目录中移动或创建“ helloworld”和“ hiworld”图表,然后在安装图表“ greetings-app”时-您将自动安装相关图表。您将需要在列出依赖关系的父级(greetings-app)中创建“ requirements.yaml”

dependencies:
  - name: helloworld
  - name: hiworld

说明图文件夹的结构将是:-

  • 问候/
    • 图表/
    • helloworld的/
      • 图表/
      • 模板/
      • ....
    • hiworld /
      • 图表/
      • 模板
      • ....
    • Chart.yaml
    • requirements.yaml#这列出了依赖项

另一种方法是打包子应用程序并将其托管在http服务器(GitHub)上,然后创建requirements.yaml列出依赖项

dependencies:
  - name: helloworld-app
    repository: https://raw.githubusercontent.com/.../myhelmcharts/master/
    version: 0.1.0
    tags:
      - helloworld
  - name: hiworld-app
    repository: https://raw.githubusercontent.com/.../myhelmcharts/master/
    version: 0.1.0
    tags:
      - hiworld

稍后可能是首选方法-在我看来是软依赖关系,但应用程序是单独管理的。

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