Рубрики
Uncategorized

Terraform + Helm = ❤️

Если вы когда-нибудь пытались управлять IAC с террафором, вы можете в конечном итоге «Ну, облачные ресурсы … Теги с Куберовщиками, дежоптом, террафом.

Если вы когда-нибудь пытались управлять 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»