kubernetes 有没有什么方法可以用HELM命令吊舱部署?

ctehm74n  于 5个月前  发布在  Kubernetes
关注(0)|答案(3)|浏览(57)

我目前正在部署一个包含15个JAVA Spring微服务的产品,这些微服务都依赖于一个微服务(我们称之为“第一服务”),其他微服务都需要这个微服务。
问题是,只要第一个服务没有准备好,所有其他服务都无法启动,并将尝试重新启动,导致CPU消耗过多。
这将使首次服务需要很多时间才能启动,因此其他应用程序也需要很多时间。
所以我的问题是:是否有可能指示HELM在所有其他服务之前部署“第一次服务”,并等待直到第二次服务准备就绪?
谢谢你,

vshtjzan

vshtjzan1#

为“第一次服务”建立一个单独的舵,并使其他人依赖它:
https://helm.sh/docs/helm/helm_dependency/

bcs8qyzn

bcs8qyzn2#

如果你的服务是用一个单一的掌舵图部署的,那么我建议你使用一个helm hook,比如pre-upgrade/pre-install。你可以指定你的第一个服务在其他服务之前部署。
如果您的服务位于不同的Helm Chart中,通常需要某种部署编排,因此根据您如何部署应用程序,您可以:

  • 使用ArgoCD,使用sync-waves订购应用程序部署。
  • 使用FluxCD,您可以使用dependsOn命令您的Kustomizations
  • 使用标准的helm部署(我可以想象一个标准的CI/CD管道),您将开始部署第一个服务helm chart,并添加--wait标志以确保应用程序在传递到下一个部署之前准备就绪。
y53ybaqx

y53ybaqx3#

一种方法:使用初始化容器
您可以在其他微服务中使用init容器,等待“first-service”准备就绪,然后再启动这些服务的主容器。init容器可以运行脚本来检查“first-service”的可用性。一旦可用,init容器将成功退出,从而允许主容器启动。
微服务部署YAML中的示例代码段:

initContainers:
- name: init-myservice
  image: busybox:1.28
  command: ['sh', '-c', 'until nslookup first-service; do echo waiting for first-service; sleep 2; done;']

字符串

相关问题