【发布时间】:2019-06-12 11:28:33
【问题描述】:
我目前正在使用模板构建和部署应用程序
oc new-app -f ./openshift/template.yaml
我使用的是模板,而不是单独的部署、构建等配置,因为我还希望能够传递类似的参数
oc new-app -f ./openshift/template.yaml --p DATABASE_PW=PW
据我所知,这是不可能的
oc create -f ./openshift/deploymentconfig.yaml --p SOME_PARAM=TEST
现在我也将其与 Jenkins 集成在构建管道中。我现在的问题是这个。这一切都适用于第一次部署,但它不适用于重新部署。我可以像 Jenkins 一样重建应用程序
oc start-build my-app
但这会导致更改是我的模板将不会被考虑。我也不能使用 new-app,因为它不会替换现有配置,从而产生类似于此的错误
--> Creating resources ...
error: services "my-app" already exists
....
--> Failed
有没有办法解决这个问题?可能类似于new-app replace 命令,其中所有配置都被替换?我目前正在通过使用 shell 文件完全杀死应用程序然后再次启动它来解决这个问题;但这总是会导致几分钟的停机时间,这真的让我很困扰。
【问题讨论】:
-
试试
oc process -f openshift/template.yaml --param DATABASE_PW=PW | oc apply -f -。 -
太棒了。这正是我所需要的。如果你知道怎么做就可以这么简单。我看到它也适用于创作,所以我什至不再需要 oc new-app 了。你想把它写下来作为答案还是我应该写下来?
-
你也可以把你的参数存到一个文件里,然后用
--param-file=传递这个文件,当你开始积累越来越多的参数时,这很好。
标签: jenkins command-line-interface openshift openshift-client-tools build-pipeline