Openshift CLI - 使用模板和 oc new-app 更新应用程序
Openshift CLI - update Application with template and oc new-app
我目前正在使用
使用模板构建和部署应用程序
oc new-app -f ./openshift/template.yaml
我使用的是模板,而不是单独的 Deployment-、Build- 等配置,因为我还希望能够传递类似
的参数
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 文件完全杀死应用程序然后再次启动它来解决这个问题;但这总是会导致几分钟的停机时间,这让我很困扰。
正如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 -
我目前正在使用
使用模板构建和部署应用程序oc new-app -f ./openshift/template.yaml
我使用的是模板,而不是单独的 Deployment-、Build- 等配置,因为我还希望能够传递类似
的参数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 文件完全杀死应用程序然后再次启动它来解决这个问题;但这总是会导致几分钟的停机时间,这让我很困扰。
正如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 -