Получите IP от внешних балансировщиков нагрузки с помощью terraform
Я работаю над модулем terraform для создания кластера GKE. Этот же модуль вызывает провайдер, который выполняетhelm install
приложения.
Helm-диаграмма создает балансировщик нагрузки. Балансировщик нагрузки не известен модулю terraform, поэтому назначенный IP-адрес не может быть повторно использован в модуле.
Вопрос:
Как я могу использовать IP-адрес балансировщика нагрузки для создания записей DNS и получения сертификатов?
Я думаю, что это не экзотический вариант использования, но я еще не нашел достойного способа добиться этого.
2 ответа
Правильный ответ на этот вопрос:
Источник данных kubernetes_service.
Концепция источника данных в точности решает проблему.
Исходя из приведенного выше источника данных kubernetes_service, я мог бы также запустить сценарий оболочки с kubectl, запрашивающим IP-адрес, и использовать внешний источник данных в качестве общего решения.
Оттуда я могу использовать IP-адрес в провайдере DNS и в провайдере acme для создания записей DNS и сертификатов.
В моем случае облачный провайдер не предоставил load_balancer_ip
поэтому мне пришлось создать службу как
type: NodePort
через helm и создал балансировщик нагрузки вручную напрямую через terraform.
Я предполагаю, что это допустимый обходной путь в тех случаях, когда принятое решение не работает по этой конкретной причине, а диаграмма управления предоставляет средства для развертывания службы как другого
type
.