Openshift CLI-使用模板和oc新应用程序更新应用程序



我目前正在使用构建和部署一个带有模板的应用程序

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的Build Pipeline中。我现在的问题是这个。这一切在第一次部署时都很好,但在重新部署时不起作用。我可以像一样用Jenkins重建应用程序

oc start-build my-app

但这将导致更改是我的模板将不会被考虑。我也不能使用新的应用程序,因为它不能取代现有的配置,产生类似于这个的错误

--> Creating resources ...
error: services "my-app" already exists
....
--> Failed

有办法解决这个问题吗?也许是new-app replace命令之类的东西,其中所有的配置都被替换了?我目前正在通过使用shell文件完全杀死应用程序,然后重新启动它来解决这个问题;但这总是会导致几分钟的停机时间,这真的让我很困扰。

正如Graham所指出的,解决这一问题的最佳方法是使用

oc process -f openshift/template.yaml -p PARAM1=VALUE1 -p PARAM2=VALUE2

首先用参数填充模板。然后将命令管道传输到oc apply,将其应用到应用程序,这将给您留下以下命令

oc process -f openshift/template.yaml -p PARAM1=VALUE1 -p PARAM2=VALUE2 | oc apply -f -

这将创建或更新您的所有配置。它还将检查哪些配置已更改。

如果你想在之后直接开始构建,请使用

oc start-build my-app

要更新从模板YAML文件(即oc create -f ./$tmpl_name.yaml)启动的运行pod中的模板参数:

# delete existing dc (leaving svc & route)
# (here dc and template are named the same: $tmpl_name)
oc delete dc $tmpl_name

# update template parameter (notice template was not deleted)
oc process $tmpl_name -p $PARAM_NAME=$PARAM_VALUE | oc create -f -

最新更新