#Расскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* terraform { required_providers { decort = { source = "basis/decort/decort" version = "" } } } */ provider "decort" { authenticator = "decs3o" #controller_url = controller_url = "https://ds1.digitalenergy.online" #oauth2_url = oauth2_url = "https://sso.digitalenergy.online" #app_id = #app_secret = allow_unverified_ssl = true } resource "decort_k8s" "cluster" { #имя кластера #обязательный параметр #при изменении - обновдяет имя кластера #тип - строка name = "tftest" #id resource group #обязательный параметр #тип - число rg_id = 907 #id catalogue item #обязательный параметр #тип - число k8sci_id = 9 #сетевой плагин #обязательный параметр #тип - строка network_plugin = "flannel" #имя для первой worker group, созданной в кластере #обязательный параметр #тип - строка wg_name = "workers" # список labels для дефолтной worker группы # опциональный параметр # тип - массив строк labels = ["key1=val1", "key2=val2"] # список annotations для дефолтной worker группы # опциональный параметр # В скором времени параметры labels, annotations, taints будут полностью перенесены в блок workers # тип - массив строк annotations = ["key1=val1", "key2=val2"] # список taints для дефолтной worker группы # опциональный параметр # В скором времени параметры labels, annotations, taints будут полностью перенесены в блок workers # тип - массив строк taints = ["key1=value1:NoSchedule", "key2=value2:NoExecute"] #настройка мастер node или nodes #опциональный параметр #максимальное кол-во элементов - 1 #тип - список нод masters { #кол-во node #обязательный параметр #тип - число num = 1 #кол-во cpu #обязательный параметр #тип - число cpu = 2 #кол-во RAM в Мбайтах #обязательный параметр #тип - число ram = 2048 #размер диска в Гбайтах #обязательный параметр #тип - число disk = 10 #идентификатор SEP для создания загрузочных дисков для master узлов #опциональный параметр #тип - число sep_id = 3 #наименование MasterSEPPool используется если установлен master sepId, также может быть пустым #опциональный параметр #тип - строка sep_pool = "data_01" } #настройка worker группы #опциональный параметр #Первая указанная воркер-группа должна соответствовать изначально созданной вместе с кластером. # labels, annotations, taints для дефолтной worker группы указываются в корне ресурса при создании кластера. workers { #имя группы #обязательный параметр #тип - строка name = "test" #кол-во node #обязательный параметр #тип - число num = 1 #кол-во cpu #обязательный параметр #тип - число cpu = 2 #кол-во RAM в Мбайтах #обязательный параметр #тип - число ram = 2048 #размер диска в Гбайтах #обязательный параметр #тип - число disk = 10 #Идентификатор SEP #опциональный параметр #тип - число sep_id = 1010 #Имя SEP pool'a #опциональный параметр #тип - строка sep_pool = "data01" } #...Далее можно создавать произвольное кол-во дополнительных worker групп # labels, annotations и taints для последующих групп указываются непосредственно в блоке workers workers { #наименование worker группы #обязательный параметр #тип - строка name = "additional_wg" #кол-во node #обязательный параметр #тип - число num = 2 #кол-во cpu #обязательный параметр #тип - число cpu = 2 #кол-во RAM в Мбайтах #обязательный параметр #тип - число ram = 4096 #размер диска в Гбайтах #обязательный параметр #тип - число disk = 10 #Идентификатор SEP #опциональный параметр #тип - число sep_id = 1010 #Имя SEP pool'a #опциональный параметр #тип - строка sep_pool = "data01" #Список лейблов #опциональный параметр #тип - массив строк labels = ["label1=value1", "label2=value2"] #Список аннотаций #опциональный параметр #тип - массив строк annotations = ["key1=value1", "key2=value2"] #Список taints #опциональный параметр #тип - массив строк taints = ["key1=value1:NoSchedule", "key2=value2:NoExecute"] } # id extnet #опциональный параметр #тип - число extnet_id = 0 # id vins # опциональный параметр # тип - число vins_id = 1234 # создать Kubernetes cluster с masters nodes с подключенным LB # опциональный параметр # тип - булев тип with_lb = true # пользовательские значения sysctl для LB # опциональный параметр # тип - строка lb_sysctl_params = "some" # позволяет создать схему отказоустройчивой LB # опциональный параметр # тип - булев тип ha_mode = true # дополнительные SAN (Subject Alternative Names) для использования в процессе автоматического выписывания сертификата Кластера Kubernetes; # возможность взаимодействовать с кластером по FQDN # параметр получает список строк – IP-адреса и/или DNS (по формату RFC 1123 c поддержкой wildcard) # опциональный параметр # тип - массив строк additional_sans = ["192.168.201.0","192.168.201.1"] # используется для определения настроек и действий, которые должны быть выполнены перед запуском любого другого компонента в кластере # это позволяет вам настраивать такие вещи, как регистрация node, настройка network и другие задачи инициализации # опциональный параметр # тип - строка init_config = "{JSON string}" # используется для определения глобальных настроек и конфигураций для всего кластера # он включает в себя такие параметры, как имя кластера, настройки DNS, методы аутентификации и другие конфигурации в масштабах кластера # опциональный параметр # тип - строка cluster_config = "{JSON string}" # используется для настройки поведения и параметров Kubelet, который является агентом primary node, запускаемым на каждом node кластера # он включает в себя такие параметры, как IP-адрес node, распределение ресурсов, политики удаления модулей и другие конфигурации, специфичные для Kubelet # опциональный параметр # тип - строка kubelet_config = "{JSON string}" # используется для настройки поведения и параметров присоединения node к кластеру # он включает в себя такие параметры, как режим прокси-сервера, диапазоны IP-адресов кластера и другие конфигурации, специфичные для Kube-proxy # опциональный параметр # тип - строка kube_proxy_config = "{JSON string}" # используется для настройки поведения и параметров присоединения node к кластеру # он включает в себя такие параметры, как cluster's control plane endpoint, токен и ключ сертификата # опциональный параметр # тип - строка join_config = "{JSON string}" # описание кластера # опциональный параметр # тип - строка desc = "description" # перечень аргументов для cloud-init создаваемым группам узлов Worker # необязательный параметр # тип - файл cloud_init = file("initconfig.tftpl") # при создании кластре использовать подключение только к сети ExtNet # опциональный параметр # тип - булев тип extnet_only = true # добавить ssl-сертификат в формате x509 pem # необязательный параметр # тип - файл oidc_cert = file("ca.crt") # запуск,остановка кластера # опциональный параметр # тип - булев тип start = true # команда destroy удаляет кластер без возможности восстановления # опциональный параметр # тип - булев тип permanently = true } output "test_cluster" { value = decort_k8s.cluster } /* output "kubeconfig"{ value = decort_k8s.cluster.kubeconfig } */