Openshift - API для получения параметра ARTIFACT_URL модуля или версии его развернутого приложения.

Что я хочу сделать, так это создать веб-приложение, которое перечисляет в одном окне версии каждого приложения, развернутого в нашем Openshift (быстрый просмотр версий). На данный момент единственный способ найти версию приложения, развернутого в модуле, - это параметр ARTIFACT_URL в представлении среды, поэтому я прошу этот параметр, но если есть другой способ получить модуль и версию своего текущего развернутого приложения, я также открыт для этого варианта, если я могу получить его через API. Возможно, мне в конечном итоге понадобится конечная точка, которая извлекает список текущих модулей.

Я изучил API Openshift и обнаружил, что единственное, что может мне помочь, - это GET, но если параметр :id - это то, что я думаю, он меняется при каждом развертывании, поэтому мне придется постоянно его изменять, а это непрактично. Очевидно, мне также понадобится конечная точка для получения списка идентификаторов или чего-то еще, что позволит мне идентифицировать модуль, когда я прошу ARTIFACT_URL

Спасибо!


person Drumnbass    schedule 28.11.2019    source источник
comment
Конечно, вы не собираетесь переписывать инструменты клиента oc, где вы можете просто вызвать его из сценария bash или API Python (openshift) и передать результат пользователю ...?   -  person mirekphd    schedule 14.12.2019


Ответы (3)


Есть способ сделать это. См. https://docs.openshift.com/enterprise/3.0/dev_guide/environment_variables.html

Список переменных среды

Чтобы перечислить переменные среды в модулях или шаблонах модулей:

$ oc env <object-selection> --list [<common-options>]

В этом примере перечислены все переменные среды для модуля p1:

$ oc env pod/p1 --list

person ZF007    schedule 07.12.2019

Я предлагаю переработать сборки и развертывания, если у вас нет постоянной информации о версиях приложений за пределами Openshift.

Если версии приложения необходимо получить из запущенных модулей (например, с oc rsh или oc env, как предложено в другом месте), то у вас есть серьезная проблема воспроизводимости. Git следует использовать для управления версиями приложений, и все сборки и развертывания приложений, даже в средах разработки и тестирования, должны быть полностью автоматизированы.

В Openshift вы можете добиться полной автоматизации с помощью триггеров Webhook в конфигурациях сборки и триггеры изменения изображения в конфигурациях развертывания.

Вне Openshift это можно сделать без дополнительных затрат с помощью Jenkins (который даже можно запустить в контейнере, если у вас есть постоянное хранилище, доступное для сохранения его настроек).

person mirekphd    schedule 07.12.2019

В качестве быстрого обходного пути вы также можете рассмотреть:

oc describe pods | grep ARTIFACT_URL

чтобы получить список значений вашей переменной среды (здесь: ARTIFACT_URL) из всех модулей.

Соответствующий список имен модулей можно получить либо просто с помощью 'oc get pods', либо с помощью второго вызова oc describe:

oc describe pods | grep "Name: "

(обратите внимание на 8 пробелов, необходимых для фильтрации других имен :)

person mirekphd    schedule 07.12.2019