This commit is contained in:
2024-05-31 14:05:21 +03:00
parent 84b7a80e1b
commit db1760cb72
815 changed files with 58194 additions and 11049 deletions

View File

@@ -0,0 +1,303 @@
/*
Пример использования
Управление кластером
Ресурс позволяет:
1. Создавать кластер
2. Управлять кластером
*/
#Расскомментируйте этот код,
#и внесите необходимые правки в версию и путь,
#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером
/*
terraform {
required_providers {
decort = {
source = "basis/decort/decort"
version = "<VERSION>"
}
}
}
*/
provider "decort" {
authenticator = "decs3o"
#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=value1:NoSchedule", "key2=value2:NoExecute"]
#настройка мастер node или nodes
#опциональный параметр
#максимальное кол-во элементов - 1
#тип - список нод
masters {
#кол-во node (1, 3 или 5)
#обязательный параметр
#тип - целое число
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 = [{ text = "1", text = "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
# необязательный параметр
# тип - файл с форматом в виде yaml
cloud_init = file("initconfig.tftpl")
# при создании кластре использовать подключение только к сети ExtNet
# опциональный параметр
# тип - булев
extnet_only = true
# добавить ssl-сертификат в формате x509 pem
# необязательный параметр
# тип - файл с форматом в виде x509 pem
oidc_cert = file("ca.crt")
# запуск,остановка кластера
# опциональный параметр
# тип - булев
start = true
# команда destroy удаляет кластер без возможности восстановления
# опциональный параметр
# тип - булев
permanently = true
}
output "test_cluster" {
value = decort_k8s.cluster
}