【问题标题】:How to define start order如何定义开始顺序
【发布时间】:2021-02-04 18:12:42
【问题描述】:

我正在使用 Helm3。我有一个使用数据库的主应用程序。我还有一个 SpringBoot Setup-Application,它使用 Liquibase 来设置数据库并做更多的 Init-Stuff。由于这个 Setup-Application 不允许并行运行,我在“预安装、预升级”Helm-Hock 中定义了它。

现在对于开发环境,如果数据库也以 Helm Chart 开头,那将很方便。秩序看起来像这样。

  1. 启动数据库
  2. 运行设置应用程序
  3. 开始 Helm Chart 中定义的其余部分?

你知道如何用 Helm3 来实现吗?

【问题讨论】:

    标签: kubernetes-helm


    【解决方案1】:

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

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

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

    钩子权重可以是正数或负数,但必须表示为字符串。当 Helm 开始执行特定种类的钩子时,它会按升序对这些钩子进行排序。

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

    【讨论】:

    • 不应在挂钩中创建数据库映像。在钩子中创建的图像不受管理,但需要管理数据库。 see。它应该被关闭它的版本被卸载。
    【解决方案2】:

    指定启动顺序实际上是 kubernetes 中的一种反模式。这个想法是使服务能够适应依赖/服务故障。

    我会让应用程序失败,直到数据库启动或使用初始化容器。

    更多关于Kubernetes Anti-Patterns的信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-30
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      相关资源
      最近更新 更多