如何定义开始顺序



我使用Helm3。我有一个主应用程序,使用数据库。我还有一个SpringBoot安装应用程序,它使用Liquibase来设置数据库并做更多的初始化工作。由于此安装程序不允许并行运行,因此我在"预安装,预升级"中定义了它。Helm-Hock .

现在对于开发环境,如果数据库也从Helm Chart开始,那将是很方便的。顺序应该是这样的。

  1. 开始DB
  2. 运行setup app
  3. 启动舵图中定义的其余部分?

你知道如何用Helm3实现这个吗?

您可以使用helm hookhelm.sh/hook-weight来定义顺序。正如Helm文档中解释的那样:

可以为钩子定义一个权重,这将有助于建立一个确定的执行顺序。权重使用以下注释定义:

annotations:
"helm.sh/hook-weight": "5"

钩子权值可以是正数或负数,但必须用字符串表示。当Helm启动特定类型钩子的执行周期时,它将按升序对这些钩子进行排序。

如果您需要启动并运行db,您可以安装带有--wait标志的helm chart。启用此标志后,它将等待所有资源处于就绪状态,并且在它们就绪之前不会运行post-install钩子。

指定启动顺序实际上是kubernetes中的反模式。其思想是使服务对依赖/服务故障具有弹性。

我会让应用程序失败,直到db出现或使用init容器。

关于Kubernetes Anti-Patterns的更多信息

最新更新