我目前正在部署一个包含15个JAVA Spring微服务的产品,这些微服务都依赖于一个微服务(我们称之为“第一服务”),其他微服务都需要这个微服务。
问题是,只要第一个服务没有准备好,所有其他服务都无法启动,并将尝试重新启动,导致CPU消耗过多。
这将使首次服务需要很多时间才能启动,因此其他应用程序也需要很多时间。
所以我的问题是:是否有可能指示HELM在所有其他服务之前部署“第一次服务”,并等待直到第二次服务准备就绪?
谢谢你,
我目前正在部署一个包含15个JAVA Spring微服务的产品,这些微服务都依赖于一个微服务(我们称之为“第一服务”),其他微服务都需要这个微服务。
问题是,只要第一个服务没有准备好,所有其他服务都无法启动,并将尝试重新启动,导致CPU消耗过多。
这将使首次服务需要很多时间才能启动,因此其他应用程序也需要很多时间。
所以我的问题是:是否有可能指示HELM在所有其他服务之前部署“第一次服务”,并等待直到第二次服务准备就绪?
谢谢你,
3条答案
按热度按时间vshtjzan1#
为“第一次服务”建立一个单独的舵,并使其他人依赖它:
https://helm.sh/docs/helm/helm_dependency/
bcs8qyzn2#
如果你的服务是用一个单一的掌舵图部署的,那么我建议你使用一个helm hook,比如
pre-upgrade
/pre-install
。你可以指定你的第一个服务在其他服务之前部署。如果您的服务位于不同的Helm Chart中,通常需要某种部署编排,因此根据您如何部署应用程序,您可以:
--wait
标志以确保应用程序在传递到下一个部署之前准备就绪。y53ybaqx3#
一种方法:使用初始化容器
您可以在其他微服务中使用init容器,等待“first-service”准备就绪,然后再启动这些服务的主容器。init容器可以运行脚本来检查“first-service”的可用性。一旦可用,init容器将成功退出,从而允许主容器启动。
微服务部署YAML中的示例代码段:
字符串