Openshift应用程序生命周期事件-应用程序创建事件?

Openshift应用程序生命周期事件-应用程序创建事件?,openshift,Openshift,我试图在OpenShift中挂接一个应用程序创建的事件——如果存在这样的事件的话 原因是,我希望在一个新的pod中理想地运行一个命令,用于创建数据库模式。在应用程序映像中包含这一点没有意义,因为我只需要在创建应用程序时运行一次。 我已经研究了pod生命周期挂钩,但是每次有新的部署时,这些事件都会发生。因此,对于我的用例来说,这也太常见了 是否有一种方法可以在创建Openshift应用程序时让映像只运行一次?在这里的评论中,您的思路是正确的。在OpenShift v2时代,生命周期挂钩也存在同样的

我试图在OpenShift中挂接一个应用程序创建的事件——如果存在这样的事件的话

原因是,我希望在一个新的pod中理想地运行一个命令,用于创建数据库模式。在应用程序映像中包含这一点没有意义,因为我只需要在创建应用程序时运行一次。 我已经研究了pod生命周期挂钩,但是每次有新的部署时,这些事件都会发生。因此,对于我的用例来说,这也太常见了


是否有一种方法可以在创建Openshift应用程序时让映像只运行一次?

在这里的评论中,您的思路是正确的。在OpenShift v2时代,生命周期挂钩也存在同样的情况

例如,对于OpenShift v2中的WordPress快速启动,我们将检查数据库是否已在每个新部署中创建。如果没有,我们初始化了一个与应用程序同名的空数据库(在本例中,让WordPress在之后创建模式),但这与此处需要的想法相同:

在OpenShift v3中,有几种方法可以实现类似的生命周期挂钩,但我们现在在模板中使用的常见模式是利用在部署阶段之前执行新pod以运行数据库设置步骤的能力:


按照此模式,您将添加代码以在源repo中的文件中生成数据库架构,并通过execNewPod使用预部署生命周期挂钩执行脚本,首先检查在加载架构之前是否存在数据库/架构select*from someknown table limit 1

人们仍然为此使用生命周期挂钩,但会在持久卷中使用标志,或检查数据库内容以确定是否需要首次初始化数据库。不过,如果这是永久部署,最安全的方法是手动运行该步骤。谢谢,同意。我也在寻找一份工作。如果作业可以是模板的一部分就好了。它们应该可以作为模板的一部分创建。你想做什么,你认为你不能把它们放在模板中?我还没有尝试过在模板中添加作业。但是在阅读了模板对象上的openshift文档之后,我没有看到关于作业的提及,因此假设这是不可能的。关于作业,唯一不明显的事情是如何让它引用图像流,而不是原始Kubernetes对象所期望的图像注册表中的图像。有关如何使用图像流引用的详细信息,请参阅