【发布时间】:2017-08-26 18:29:23
【问题描述】:
我正在尝试在 OpenShift 中挂钩应用程序创建的事件 - 如果存在这样的事件。
原因是,我想运行一个命令(最好在新的 pod 中),以创建数据库模式。在应用程序映像中包含它没有意义,因为我只需要运行一次 - 在创建应用程序时。 我研究了 pod 生命周期钩子 (https://docs.openshift.com/enterprise/3.1/dev_guide/deployments.html#pod-based-lifecycle-hook),但是每次有新部署时都会发生这些事件。所以这对于我的用例来说也太常见了。
有没有办法在创建 Openshift 应用程序时只运行一次映像?
【问题讨论】:
-
人们仍然为此使用生命周期挂钩,但会在持久卷中使用标志,或者检查数据库的内容以确定是否需要首次初始化数据库。不过,如果这是永久部署,最安全的方法是手动运行该步骤。
-
谢谢,是的,同意。我也在考虑使用工作 (docs.openshift.com/container-platform/3.5/dev_guide/jobs.html)。如果作业可以成为模板的一部分,那就太好了。
-
它们应该能够作为模板的一部分创建。你想做什么,你认为你不能把它们放在模板中?
-
我还没有尝试将作业添加到模板中。但是在阅读了关于模板对象的 openshift 文档后,我没有看到关于工作的提及,所以认为这是不可能的。
-
关于作业的唯一不明显的事情是如何让它引用图像流,而不是像原始 Kubernetes 对象所期望的那样引用图像注册表中的图像。有关如何使用图像流参考的详细信息,请参阅stackoverflow.com/a/45227960/128141
标签: openshift