舵图中的pod之间的依赖关系

问题描述 投票:2回答:1

我正在尝试部署一个头盔图,我需要帮助我的用例。

我的要求是在helm chart templates文件夹中,我有很少的部署yml和.tpl文件,当我调用helm install命令时,模板文件夹中的一个部署yml将部署为类型'job',只有一个pod关联到它。模板文件夹中的其他部署ymls应该等待此作业成功完成,然后才应该作为pod部署在kubernetes上。

当我将触发helm install命令时,helm将读取所有yml,因此将尝试一次部署我不想要的所有pod。我希望我的工作首先成功,然后只有其他pod应该开始部署。当作业正在运行时,所有其他pod应该等待或不应该启动,因为它们都依赖于作业才能成功。

如何使用helm实现此案例。请建议。我如何让其他豆荚等待,让他们知道现在已经成功完成了工作。

kubernetes-helm
1个回答
1
投票

您正在寻找helm hooks

Helm提供了一种钩子机制,允许图表开发人员在发布的生命周期中的某些点进行干预。例如,您可以使用钩子:

  • 在加载任何其他图表之前,在安装期间加载ConfigMap或Secret。
  • 在安装新图表之前执行作业以备份数据库,然后在升级后执行第二个作业以恢复数据。
  • 在删除版本之前运行作业,以便在删除服务之前正常地使服务停止旋转。

将以下注释添加到您的作业:

metadata:
  annotations:
    "helm.sh/hook": "pre-install"

您甚至可以在任何安装或升级之前配置挂钩(请参阅其他选项here

metadata:
  annotations:
    "helm.sh/hook": "pre-install, pre-upgrade"

钩子创建的资源不会作为发布的一部分进行跟踪或管理。一旦Tiller验证挂钩已达到就绪状态,它将单独保留您的作业资源(或者您可以设置"helm.sh/hook-delete-policy"来删除它)。

© www.soinside.com 2019 - 2024. All rights reserved.