【问题标题】:Dependency between pods in helm chartshelm 图表中 pod 之间的依赖关系
【发布时间】:2019-08-06 16:46:59
【问题描述】:

我正在尝试部署 helm chart,我需要针对我的用例的帮助。

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

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

如何使用 helm 实现这种情况。请提出建议。如何让其他 pod 等待并让他们知道工作已经成功完成。

【问题讨论】:

    标签: kubernetes-helm


    【解决方案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" 将其删除)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-10
      • 2016-09-10
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多