我有 3 个微服务应用程序,应该部署在 K8s 中。 我是否需要为此创建 3 个部署文件和 3 个服务文件,还是将所有 3 个部署连接到一个文件(以及服务(?
您没有提供有关这些微服务的信息。
您可以在一个文件中执行此操作,但最佳做法是将每个Applicataion
/Microservice
放在单独的部署中。
目前可能只有 3microservices
但将来您可能会考虑添加新功能,并且需要新的microservices
。
如果每个microservice
采用不同的deployment
您将能够进行快速配置更改,而无需滚动许多行 YAML 代码(不太可能在文件中犯语法错误(。 对特定microservices
进行故障排除和管理它们之间的流量会更容易 - 您可以使用 Istio 来做到这一点。
由于每个微服务将采用不同的deployment
因此你将拥有更多的多功能性,因为你将能够创建一些 initContainers,或者需要使用水平 Pod 自动缩放器。
此外,您不需要仅限于Deployments
.您还可以将 StatefulSet 用于特定应用程序(即需要数据库的应用程序(。
您还可以创建自己的 Helm 图表,该图表允许您使用一个命令部署应用程序,但将所有部署组织在目录中。
应为每个服务创建部署和服务定义 YAML,并分别部署它们。
还可以将所有部署和服务定义包含在一个 YAML 文件中,并一次性部署所有内容。
我有所有单独的文件,每个部署、服务、入口等一个文件,每个实体一个文件。 我认为,如果您在集群中开发,最好将它们分开,更容易使用脚本/工具进行版本控制、更新和处理它们。
我有一个开源的在线实验室/测试/博客集群,这是主存储库: https://github.com/vicjicaman/microservice-realm
您可以在此处看到我如何将所有实体分开,希望这可以作为参考案例对您有所帮助。