Шаблон Openshift/OKD, если условие /else

В настоящее время у меня есть шаблон OKD/openshift, который предоставляет порт 1883 для определенного контейнера:

ports:
 - name: 1883-tcp
   port: 1883
   containerPort: 1883
   protocol: TCP
   hostPort: ${MQTT-PORT}

Возможно ли иметь предложение if/else в зависимости от параметров. Например:

ports:
 - name: 1883-tcp
   port: 1883
   containerPort: 1883
   protocol: TCP
   {{ if ${MQTT-PORT} != 0 }}
   hostPort: ${MQTT-PORT}
   {{ /if }}

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

1 ответ

Вы не можете выполнять такую ​​условную обработку на уровне шаблона.

Но, чтобы достичь желаемого результата, вы можете сделать одну из двух вещей.

Вариант 1 Передайте все параметры, необходимые для обработки условия на уровне шаблона, например MQTT-PORTи сопоставьте правильный номер порта при создании вашего сервиса. Это может быть правильным подходом, так как шаблоны разработаны так, чтобы быть как можно менее логичными: вы принимаете все решения на гораздо более низком уровне.

Вариант 2 Если вы можете ослабить ограничение "тот же шаблон", у нас может быть 2 варианта одного и того же шаблона, один с определенным портом, а другой с параметризованным портом. Единственная проблема с этой опцией - это изменение 2 шаблонов каждый раз при изменении спецификаций вашего приложения / сервиса, что нарушает принцип DRY.

Обновить

Использование Helm с OpenShift может быть лучшим вариантом здесь. Вы можете шаблонизировать свои артефакты, используя условные обозначения Helm, и развернуть приложение Helm в OpenShift. Вот репозиторий с диаграммой Хелма, специально разработанной для OpenShift. Кроме того, вам нужно указать правильное пространство имен, чтобы Tiller мог использовать Helm с OpenShift. Вы можете найти более подробную информацию об этом здесь.

Другие вопросы по тегам