Как использовать Kustomize и создать env, например: http: // $ {namePrefix} service-a / some-path или jdbc: db2: // $ {namePrefix} service-b: $ {dbPort} / $ {dbName}

Допустим, мне нужно создать переменные среды или записи ConfigMap следующим образом:

- name: JDBC_URL
  value: "jdbc:db2://alice-service-a:50000/db1"
- name: KEYCLOAK_BASE_URL
  value: "http://alice-keycloak:8080/auth"

Где alice- - это namePrefix. Как это сделать с помощью Kustomize?

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

Не похоже, что vars Kustomize может это сделать. Запись документации Неструктурированные изменения, кажется, описывает это и является под заголовком «Исключенные возможности», так что я думаю, что этого не произойдет. Запрос на аналогичную функцию, # 775 Поддержка расширения переменной стиля envsubst, был закрыт.

Исходя из Хелма, это было легко.

Какие у меня есть варианты, если я хочу перейти от Helm к Kustomize, но мне нужно создать запись env или ConfigMap, например, jdbc:db2://${namePrefix}-service-b:${dbPort}/${dbName} (правда, надуманный пример)?

Я предполагаю, что мне придется прибегнуть к функциям, внешним по отношению к Kustomize, например envsubst. Есть ли какие-нибудь передовые методы для объединения всего этого, или я пишу свой собственный custom-deploy-script.sh?


person Peter V. Mørch    schedule 20.01.2021    source источник
comment
Вы получите более точные ответы, если составите MCVE, поскольку трудно понять, какая информация вам доступна, каковы ваши ограничения , и что вы пробовали до сих пор   -  person mdaniel    schedule 21.01.2021


Ответы (1)


Боюсь, я столкнулся с одним из ограничений Kustomize.

Состояние управления конфигурацией Kubernetes: нерешенная проблема | Джесси Суен | В разделе Kustomize: The Bad есть что сказать в Argo Project:

Без параметров и шаблонов. То же свойство, которое делает приложения kustomize такими удобочитаемыми, также может сделать его очень ограничивающим. Например, недавно я пытался заставить интерфейс командной строки kustomize установить тег изображения для настраиваемого ресурса вместо развертывания, но не смог. В Kustomize действительно есть концепция «переменных», которые очень похожи на параметры, но каким-то образом не являются таковыми и могут использоваться только в санкционированном Kustomize белом списке путей к полям. Мне кажется, что это один из тех случаев, когда решение, хотя и упрощает сложные вещи, в конечном итоге делает легкие трудными.

Вместо этого я начал использовать gomplate: гибкий инструмент командной строки для рендеринга шаблонов в дополнение к Kustomize для решения Вышеупомянутая проблема, но необходимость использовать два инструмента, которые не были разработаны для совместной работы, не идеальна.

РЕДАКТИРОВАТЬ: мы использовали для этого ytt вместо gomplate.

Я настоятельно рекомендую статью: Состояние управления конфигурацией Kubernetes: Нерешенная проблема. Приятно знать, что я не единственный, кто попадает в эту преграду.

person Peter V. Mørch    schedule 21.01.2021