Terraform Module: k8s_nodes
Модуль развертывает группу узлов (node group) в существующем Kubernetes кластере.
Ресурсы
| Ресурс | Описание |
|---|---|
yandex_kubernetes_node_group | Группа узлов Kubernetes |
Переменные
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
provider-zone | string | - | Геозона поставщика |
provider-token | string | - | Токен для доступа к Yandex Cloud |
provider-folderid | string | - | ID каталога |
k8s_cluster_id | string | - | ID кластера Kubernetes |
k8s_cluster_name | string | - | Имя кластера (используется для именования ресурсов) |
node_group_name | string | primary | Имя группы узлов (влияет на имя нод: {cluster}-{group}-{index}) |
preemptible_k8s_nodes | bool | false | Использовать прерываемые VM |
vm_platform | string | standard-v2 | Тип платформы VM |
k8s_worker_nodes_mem | number | 4 | RAM в GB |
k8s_worker_nodes_cores | number | 2 | Количество vCPU |
k8s_worker_nodes_core_fraction | number | 100 | Доля ядер (0-100) |
k8s_worker_nodes_boot_disk_type | string | network-hdd | Тип диска (network-hdd, network-ssd) |
k8s_worker_nodes_boot_disk_size | number | 30 | Размер диска в GB |
subnet_ids | list(string) | null | Список ID подсетей |
security_group_ids | list(string) | null | Список ID security groups |
node_labels | map(string) | Kubernetes labels для нод | |
node_taints | list(string) | null | Kubernetes taints для нод |
auto_scale | object | см. ниже | Политика масштабирования |
auto_scale структура:
{
initial = 1 # Начальное количество нод
max = 5 # Максимальное количество нод
min = 1 # Минимальное количество нод
}
Именование ресурсов
- Имя группы узлов:
${k8s_cluster_name}-${node_group_name} - Имя инстанса:
${k8s_cluster_name}-${node_group_name}-{instance.index}
Пример использования
module "core_nodes" {
source = "../modules/k8s_nodes"
provider-folderid = var.provider-folderid
provider-token = var.provider-token
k8s_cluster_id = module.k8s.id
k8s_cluster_name = module.k8s.name
node_group_name = "web-api"
preemptible_k8s_nodes = false
k8s_worker_nodes_mem = 8
k8s_worker_nodes_cores = 8
k8s_worker_nodes_boot_disk_type = "network-ssd"
subnet_ids = [module.vpc.subnet_id]
security_group_ids = [module.k8s.k8s-main-sg, module.k8s.k8s-public-services]
node_labels = {
"api_affinity" = "true"
}
auto_scale = {
initial = 2
max = 5
min = 2
}
}