'Openshift CLI - update Application with template and oc new-app
I am currently building and deploying an Application with a template using
oc new-app -f ./openshift/template.yaml
I am using a template and not separate Deployment-, Build-, etc. configs because I also want to be able to pass parameters like
oc new-app -f ./openshift/template.yaml --p DATABASE_PW=PW
To my knowledge this is not possible using
oc create -f ./openshift/deploymentconfig.yaml --p SOME_PARAM=TEST
Now I have also integrated this is in a Build Pipeline with Jenkins. My problem is now this. This all works fine on the first deployment, but it will not work for a redployment. I can either just rebuild the app with Jenkins like
oc start-build my-app
But this will cause that changes is my Template will not be considered. I also cannot use new-app as it does not replace existing configs producing an error similar to this
--> Creating resources ...
error: services "my-app" already exists
....
--> Failed
Is there a way to solve this problem? Maybe something like a new-app replace command where all the configs are being replaced? I am currently solving this by killing the app completely using a shell file and then bringing it up again; but that will always cause a downtime of a few minutes which really bothers me.
Solution 1:[1]
To update a template parameter in a running pod which was started from a template YAML file (i.e. with oc create -f ./$tmpl_name.yaml):
# 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 -
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | mirekphd |
