Kubernetes——如果configmap更改,如何触发作业?

Kubernetes——如果configmap更改,如何触发作业?,kubernetes,openshift-origin,configmap,kubernetes-jobs,Kubernetes,Openshift Origin,Configmap,Kubernetes Jobs,我们在部署过程中有一个场景,在实际应用程序容器处于活动状态并准备就绪之前,只需执行一次活动。此活动不能作为init容器放置,因为init容器将与应用程序容器的每个副本一起执行,但在这种情况下,此活动只需执行一次 为了实现这一点,我创建了一个kubernetes作业,该作业执行该活动并完成 是否有方法在我的应用程序容器部署定义中检查此特定作业是否已完成?kubernetes中是否有存储此元数据信息并可用于标识作业状态的预定义键 此作业正在使用configMap,并且此作业中使用的容器在Direct

我们在部署过程中有一个场景,在实际应用程序容器处于活动状态并准备就绪之前,只需执行一次活动。此活动不能作为init容器放置,因为init容器将与应用程序容器的每个副本一起执行,但在这种情况下,此活动只需执行一次

为了实现这一点,我创建了一个kubernetes作业,该作业执行该活动并完成

  • 是否有方法在我的应用程序容器部署定义中检查此特定作业是否已完成?kubernetes中是否有存储此元数据信息并可用于标识作业状态的预定义键

  • 此作业正在使用configMap,并且此作业中使用的容器在Directory Server中加载配置文件(由configMap提供)。如果configMap发生更改,是否有方法自动触发作业?我可以删除作业并使用kubectl重新创建,但我正在寻找自动触发器。 如果不是在库伯内特斯,在OpenShift或HELM中是否有任何可能的方法可以做到这一点


  • Helm有用于这类事情的部署后挂钩,尽管它们可能有点粗糙。为此,我们使用一个自定义操作符,以便在部署中有一个显式的状态机(init->migrate->deploy->test->ready)。但这需要编写大量的工作。

    当卷中已经使用的ConfigMap被更新时,预计的密钥最终也会被更新。请参阅kubernetes官方文件


    对于某种类型的自动触发,如果您知道数据每两小时或每午夜更改一次,您可以尝试使用选项,例如基于时间的选项。

    Hi@coderanger我对HELM的工作不多,但我目前正在研究这一选项。感谢您的输入。需要只执行一次的活动非常容易出错,尤其是在有编排的环境中,在这种环境中,由于各种原因,事情会自行重新启动。我建议修改活动,使其再次运行不会产生任何影响(如果您不能轻松地使重新运行变得微不足道,请将其包装在检查是否已完成的过程中),然后init容器应该足够好了。