Если вы когда-нибудь пытались управлять IAC с террафом, вы можете в конечном итоге «Ну, облачные ресурсы в порядке, но как я собираюсь иметь дело с моим кластером Куберовщика ???»
В этом посте я хочу поделиться простым и функциональным примером того, как вы можете интегрировать Helm с террафом, используя лучший из каждого инструмента.
Настройка этой интеграции стала намного проще после освобождения Helm V3. Теперь вы можете просто передать свои учетные данные Kubernetes к поставщику HELM и начните развертывать свои диаграммы, используя Terraporm!
provider "helm" { kubernetes { config_path = "/path/to/kube_cluster.yaml" } }
Теперь вы можете развернуть диаграммы, используя helm_release
Ресурс 🎉.
resource "helm_release" "example" { name = "my-redis-release" repository = "https://kubernetes-charts.storage.googleapis.com" chart = "redis" version = "6.0.1" values = [ "${file("values.yaml")}" ] set { name = "cluster.enabled" value = "true" } set { name = "metrics.enabled" value = "true" } set_string { name = "service.annotations.prometheus\\.io/port" value = "9127" } }
Хорошо, это точное Лукас, но вы в основном показали поставщик HELM Страница … Я трачу свое время здесь?
В этом посте я хочу иметь дело со всеми этими чрезмерными Установить {}
Параметры в ресурсе HELM_RELASE. Должен быть простым способом управления этими переменными.
На самом деле, учебник уже показал нам, как! Мы можем использовать значения
Параметр и пропустите все наши переменные в формате YAML.
values = [ "${file("values.yaml")}" ]
Вместо использования функции файла мы также сможем пройти в формате EOF:
Лукас …
Хорошо, хорошо, извините! Я вхожу в точку, подожди немного дольше!
TemplateFile.
В террафоре мы можем создавать динамические шаблоны, используя TemplateFile.
функция . Комбиты эту функцию с ценности
Параметр в ресурсе helm_release, и мы получаем много гибкости!
Функция TemplateFile имеет слой различного синтаксиса, чем террафору, но вы можете легко адаптироваться к нему.
Пример будет:
Backending.tmpl.
%{ for addr in ip_addrs ~} backend ${addr}:${port} %{ endfor ~}
И чтобы сделать этот шаблон:
templatefile("${path.module}/backends.tmpl", { port = 8080, ip_addrs = ["10.0.0.1", "10.0.0.2"] })
Давая вывод:
backend 10.0.0.1:8080 backend 10.0.0.2:8080
И да, мы также можем использовать, если вы задаетесь вопросом.
Мы можем использовать всю эту гибкость прямо в параметр значений, а вот пример того, как создать динамический Values.yaml.
:
TemplateFile также принимает объекты террафора, делая нашу жизнь проще
Если вы хотите выполнить полный пример:
souzaxx/eks-on-стероиды
В моем следующем посте я буду более подробно объяснить об этом проекте и как он может помочь кластерам EKS, выходящие на адрес IPS.
Спасибо за ваше чтение,
Оставаться в безопасности; Будь здоров.
Лукас.
Оригинал: «https://dev.to/souzaxx/terraform-helm-57bk»