Openshift CLI - обновить приложение с помощью шаблона и oc new-app - PullRequest
0 голосов
/ 18 января 2019

Я сейчас создаю и внедряю Приложение с шаблоном, используя

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

Теперь я также интегрировал это в Build Pipeline с Jenkins. Моя проблема сейчас в этом. Это все работает нормально при первом развертывании, но не будет работать для повторного развертывания. Я могу либо пересобрать приложение с Дженкинсом как

oc start-build my-app

Но это приведет к тому, что изменения моего шаблона не будут учитываться. Я также не могу использовать new-app, так как он не заменяет существующие конфиги, выдавая ошибку, подобную этой

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

Теперь есть способ решить эту проблему. Может быть, что-то вроде команды new-app replace, где заменяются все конфиги? В настоящее время я решаю эту проблему, полностью убивая приложение с помощью файла оболочки, а затем снова вызывая его, но это всегда приводит к простоям в несколько минут, что действительно беспокоит меня

1 Ответ

0 голосов
/ 18 января 2019

Как Грэм указал, что лучший способ решить эту проблему - использовать

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
...