|
|
#Расскомментируйте этот код,
|
|
|
#и внесите необходимые правки в версию и путь,
|
|
|
#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером
|
|
|
/*
|
|
|
terraform {
|
|
|
required_providers {
|
|
|
decort = {
|
|
|
source = "basis/decort/decort"
|
|
|
version = "<VERSION>"
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
*/
|
|
|
|
|
|
provider "decort" {
|
|
|
authenticator = "oauth2"
|
|
|
#controller_url = <DECORT_CONTROLLER_URL>
|
|
|
controller_url = "https://ds1.digitalenergy.online"
|
|
|
#oauth2_url = <DECORT_SSO_URL>
|
|
|
oauth2_url = "https://sso.digitalenergy.online"
|
|
|
allow_unverified_ssl = true
|
|
|
}
|
|
|
|
|
|
resource "decort_k8s" "cluster" {
|
|
|
#имя кластера
|
|
|
#обязательный параметр
|
|
|
#при изменении - обновдяет имя кластера
|
|
|
#тип - строка
|
|
|
name = "tftest"
|
|
|
|
|
|
#id resource group
|
|
|
#обязательный параметр
|
|
|
#тип - число
|
|
|
rg_id = 776
|
|
|
|
|
|
#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=val1", "key2=val2"]
|
|
|
|
|
|
#настройка мастер 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 {
|
|
|
#кол-во 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")
|
|
|
|
|
|
}
|
|
|
|
|
|
output "test_cluster" {
|
|
|
value = decort_k8s.cluster
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
output "kubeconfig"{
|
|
|
value = decort_k8s.cluster.kubeconfig
|
|
|
}
|
|
|
|
|
|
*/
|