Установка приложений из Yandex Cloud Marketplace с помощью Terraform
Terraform-провайдер Helm
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Перед началом работы
-
Создайте кластер Managed Service for Kubernetes любым удобным способом.
-
Установите kubectl
и настройте его на работу с созданным кластером.
Подключение провайдера
-
В отдельной директории создайте файл
provider.tfс настройками провайдера Helm:terraform { required_providers { helm = { source = "hashicorp/helm" version = "~> 2.13" } } required_version = ">= 1.4.0" } provider "helm" { kubernetes { config_path = "~/.kube/config" config_context = "<имя_контекста>" } }Получить список всех контекстов можно с помощью команды
kubectl config get-contexts, узнать текущий контекст — с помощью командыkubectl config current-context. -
Инициализируйте провайдер Helm:
terraform init
Установка приложений с помощью Terraform
Для установки приложений используется ресурс Terraform helm_release
В качестве примера рассматривается установка приложения GitLab Runner.
-
В директории, где находится файл
provider.tf, создайте файлgitlab-runner.tf:resource "helm_release" "gitlab_runner" { name = "gitlab-runner" chart = "oci://cr.yandex/yc-marketplace/yandex-cloud/gitlab-org/gitlab-runner/chart/gitlab-runner" version = "0.54.0-8" namespace = "gitlab-runner" create_namespace = true values = [yamlencode({ gitlabDomain = "https://***.gitlab.yandexcloud.net" runnerRegistrationToken = "<регистрационный_токен>" replicas = 2 nodeSelector = { nodepool = "runners" } resources = { requests = { cpu = "200m", memory = "256Mi" } limits = { cpu = "500m", memory = "512Mi" } } })] }Где:
-
name— название приложения. -
chart— ссылка на Helm-чарт. -
version— версия приложения. -
namespace— новое пространство имен, в котором будет установлено приложение. Если вы укажете пространство имен по умолчанию, GitLab Runner может работать некорректно. -
values— параметры из конфигурационного файлаvalues.yamlHelm-чарта:gitlabDomain— домен инстанса GitLab.runnerRegistrationToken— регистрационный токен. Подробнее о получении токена.replicas— количество подов приложения.nodeSelector— назначение подов узлам с меткойnodepool = "runners".resources— минимальное и максимальное количество ресурсов, которые будут выделены приложению.
Запросить список всех параметров из
values.yamlможно с помощью команды:helm show values <ссылка_на_Helm-чарт> --version <версия_приложения> -
-
Установите приложение:
-
Посмотрите планируемые изменения:
terraform plan -
Если изменения устраивают, примените их:
terraform apply
-
Совет
Для установки приложений из Cloud Marketplace также можно использовать модуль Terraform от Yandex Cloud