我对使用Helm并不陌生,并且不确定在进行两次部署时哪种方法最好。 我已经为我的应用程序创建了一个图表。它包含两个部署:
我应该将它们保留在同一图表中还是应该为app-mysql.yaml创建一个子图?
答案 0 :(得分:3)
您可以将单个图表与两个部署一起使用,也可以将主图表与两个子图表一起使用,一个用于app-nginx-phpfpm.yaml
,另一个用于app-mysql.yaml
。如果您的整个应用程序增长不会那么快,则可以使用一个图表。但是,如果您打算继续向应用程序中添加组件(更多部署等),建议您使用子图表。更多信息here。
答案 1 :(得分:1)
您可以同时拥有这两种选择,具体取决于您想要如何构造部署。
请记住以下几点
{{.Release.Name}}
对于每个“应用”来说都已经改变了。)您可以拥有一个用于测试所有子图的主图表,并独立打包子图,但所有内容都保留在同一仓库中。
例如,我通常保留以下任一内容:
. / 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
,同时仍然可以灵活地单独部署具有不同发布周期的组件。
最后,这还取决于您的升级策略。与单张图表相比,金丝雀升级可能会要求您以更具体的方式处理有状态微服务,因此请进行相应的计划。
答案 2 :(得分: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
说明性图表文件夹结构为:-
另一种方法是打包子应用程序并将其托管在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
以后可能是首选方法-在我看来是软依赖关系,但应用程序是单独管理的。