Создание CCE-кластера и пула узлов

  1. Установите и настройте Terraform.

  2. Добавьте в конфигурационный файл блок кода, который создаст VPC и подсеть:

    resource "sbercloud_vpc" "cce_vpc" {
       name = "cce_vpc"
       cidr = "192.168.0.0/16"
    }
    
    resource "sbercloud_vpc_subnet" "cce_vpc_subnet_1" {
       name          = "cce_vpc_subnet_1"
       cidr          = "192.168.0.0/24"
       gateway_ip    = "192.168.0.1"
       primary_dns   = "100.125.13.59"
       secondary_dns = "100.125.65.14"
       vpc_id        = sbercloud_vpc.cce_vpc.id
    }
    

    Примечание

    Для корректной работы используйте внутренние адреса DNS платформы Advanced: 100.125.13.59 и 100.125.65.14.

    Если нужно использовать пользовательские DNS-серверы, настройте перенаправление на внутренние адреса DNS платформы Advanced или укажите один из адресов в настройках подсети. Например:

    resource "sbercloud_vpc_subnet" "cce_vpc_subnet_1" {
       name       = "cce_vpc_subnet_1"
       cidr       = "192.168.0.0/16"
       gateway_ip = "192.168.0.1"
       primary_dns   = "100.125.13.59"
       secondary_dns = "8.8.8.8"
       vpc_id        = sbercloud_vpc.myvpc.id
    }
    
  3. Выберите вкладку с нужным режимом работы сети CCE-кластера и добавьте в конфигурационный файл блок кода, который создаст CCE-кластер:

    resource "sbercloud_cce_cluster" "cce_cluster" {
       name                   = "cce-cluster"
       flavor_id              = "cce.s1.small"
       container_network_type = "overlay_l2"
       vpc_id                 = sbercloud_vpc. cce_vpc.id
       subnet_id              = sbercloud_vpc_subnet. cce_vpc_subnet_1.id
       container_network_cidr = "10.0.0.0/16"
       service_network_cidr   = "10.247.0.0/16"
    }
    
    Описание параметров

    Параметр

    Описание

    name

    Название кластера

    flavor_id

    Спецификация кластера

    container_network_type

    Режим работы сети

    vpc_id

    VPC, в котором будут расположены рабочие узлы

    subnet_id

    Подсеть, в которой будут расположены рабочие узлы

    container_network_cidr

    Сегмент сети для контейнеров

    service_network_cidr

    Сегмент сети для сервисов

  4. Добавьте в конфигурационный файл блок кода, который создаст пул узлов:

    resource "sbercloud_cce_node_pool" "cce_cluster_node_pool" {
       cluster_id               = sbercloud_cce_cluster.cce_cluster.id
       name                     = "cce-cluster-node-pool "
       os                       = "CentOS 7.6"
       initial_node_count       = 1
       flavor_id                = "s7n.xlarge.2"
       password                 = var.node_password
       scall_enable             = true
       min_node_count           = 1
       max_node_count           = 5
       scale_down_cooldown_time = 100
       priority                 = 1
       root_volume {
          size       = 40
          volumetype = "SAS"
       }
       data_volumes {
          size       = 100
          volumetype = "SAS"
       }
       labels = {
          label1 = "label1"
          label2 = "label2"
       }
       tags = {
          tag1 = "tag1"
          tag2 = "tag2"
       }
    }
    
    Описание параметров

    Параметр

    Описание

    cluster_id

    ID CCE-кластера.

    name

    Название пула узлов.

    os

    Операционная система рабочего узла.

    initial_node_count

    Начальное количество ожидаемых узлов в пуле узлов. Этот параметр также можно использовать для последующего масштабирования количества узлов вручную.

    flavor_id

    Спецификация узла.

    password

    Пароль рабочего узла.

    scall_enable

    Включение/отключение автомасштабирования.

    min_node_count

    Минимальное количество рабочих узлов.

    max_node_count

    Максимальное количество рабочих узлов.

    scale_down_cooldown_time

    Время между операциями масштабирования в минутах.

    priority

    Приоритет пула узлов.

    root_volume

    Параметры системного диска.

    data_volumes

    Параметры диска с данными.

    labels

    Список меток.

    tags

    Список тегов.

  5. Добавьте в конфигурационный файл блок кода, который добавит надстройку «autoscaler»:

    data "sbercloud_cce_addon_template" "autoscaler" {
       cluster_id = sbercloud_cce_cluster.cce_cluster.id
       name       = "autoscaler"
       version    = "1.25.7"
    }
    
    resource "sbercloud_cce_addon" "autoscaler" {
       cluster_id    = sbercloud_cce_cluster.cce_cluster.id
       template_name = "autoscaler"
       version       = "1.25.7"
    
       values {
          basic  = jsondecode(data.sbercloud_cce_addon_template.autoscaler.spec).basic
          custom = merge(
             jsondecode(data.sbercloud_cce_addon_template.autoscaler.spec).parameters.custom,
                {
                   cluster_id = sbercloud_cce_cluster.cce_cluster.id
                   tenant_id  = var.tenant_id
                }
          )
       }
    }
    
  6. В шагах 4–5 используются две переменные: password и tenant_id. Добавьте их значения в файл variables.tf по шаблону:

    variable "tenant_id" {
            default = "account-id"
    }
    
    variable "node_password" {
            default = "password"
    }
    

    Где:

    • account-id замените на Account ID в разделе My Credentials.

    • password замените на пароль, который будет задан для рабочего узла.

  7. Добавьте в конфигурационный файл блок кода, который установит надстройку «cce-hpa-controller»:

    resource "sbercloud_cce_addon" "cce-hpa-controller" {
       cluster_id    = sbercloud_cce_cluster.cce_cluster.id
       template_name = "cce-hpa-controller"
    }
    

Конфигурационный файл готов. Содержимое файлов, полученных в результате выполнения инструкции, можно скопировать ниже.

Полный пример конфигурационного файла. Tunnel Network

terraform {
   required_providers {
      sbercloud = {
         source  = "sbercloud-terraform/sbercloud" # Initialize Cloud.ru provider
      }
   }
}

# Configure Cloud.ru provider
provider "sbercloud" {
   auth_url = "https://iam.ru-moscow-1.hc.sbercloud.ru/v3" # Authorization address
   region   = "ru-moscow-1" # The region where the cloud infrastructure will be deployed

   # Authorization keys
   access_key = var.access_key
   secret_key = var.secret_key
}

resource "sbercloud_vpc" "cce_vpc" {
   name = "cce_vpc"
   cidr = "192.168.0.0/16"
}

resource "sbercloud_vpc_subnet" "cce_vpc_subnet_1" {
   name          = "cce_vpc_subnet_1"
   cidr          = "192.168.0.0/24"
   gateway_ip    = "192.168.0.1"
   primary_dns   = "100.125.13.59"
   secondary_dns = "100.125.65.14"
   vpc_id        = sbercloud_vpc.cce_vpc.id
}

resource "sbercloud_cce_cluster" "cce_cluster" {
   name                   = "cce-cluster"
   flavor_id              = "cce.s1.small"
   container_network_type = "overlay_l2"
   vpc_id                 = sbercloud_vpc. cce_vpc.id
   subnet_id              = sbercloud_vpc_subnet. cce_vpc_subnet_1.id
   container_network_cidr = "10.0.0.0/16"
   service_network_cidr   = "10.247.0.0/16"
}

resource "sbercloud_cce_node_pool" "cce_cluster_node_pool" {
   cluster_id               = sbercloud_cce_cluster.cce_cluster.id
   name                     = "cce-cluster-node-pool "
   os                       = "CentOS 7.6"
   initial_node_count       = 1
   flavor_id                = "s7n.xlarge.2"
   password                 = var.node_password
   scall_enable             = true
   min_node_count           = 1
   max_node_count           = 5
   scale_down_cooldown_time = 100
   priority                 = 1
   root_volume {
      size       = 40
      volumetype = "SAS"
   }
   data_volumes {
      size       = 100
      volumetype = "SAS"
   }
   labels = {
      label1 = "label1"
      label2 = "label2"
   }
   tags = {
      tag1 = "tag1"
      tag2 = "tag2"
   }
}

data "sbercloud_cce_addon_template" "autoscaler" {
   cluster_id = sbercloud_cce_cluster.cce_cluster.id
   name       = "autoscaler"
   version    = "1.25.7"
}

resource "sbercloud_cce_addon" "autoscaler" {
   cluster_id    = sbercloud_cce_cluster.cce_cluster.id
   template_name = "autoscaler"
   version       = "1.25.7"

   values {
      basic  = jsondecode(data.sbercloud_cce_addon_template.autoscaler.spec).basic
      custom = merge(
         jsondecode(data.sbercloud_cce_addon_template.autoscaler.spec).parameters.custom,
            {
               cluster_id = sbercloud_cce_cluster.cce_cluster.id
               tenant_id  = var.tenant_id
            }
      )
   }
}

resource "sbercloud_cce_addon" "cce-hpa-controller" {
   cluster_id    = sbercloud_cce_cluster.cce_cluster.id
   template_name = "cce-hpa-controller"
}

Полный пример конфигурационного файла. VPC Network

terraform {
   required_providers {
      sbercloud = {
         source  = "sbercloud-terraform/sbercloud" # Initialize Cloud.ru provider
      }
   }
}

# Configure Cloud.ru provider
provider "sbercloud" {
   auth_url = "https://iam.ru-moscow-1.hc.sbercloud.ru/v3" # Authorization address
   region   = "ru-moscow-1" # The region where the cloud infrastructure will be deployed

   # Authorization keys
   access_key = var.access_key
   secret_key = var.secret_key
}

resource "sbercloud_vpc" "cce_vpc" {
   name = "cce_vpc"
   cidr = "192.168.0.0/16"
}

resource "sbercloud_vpc_subnet" "cce_vpc_subnet_1" {
   name          = "cce_vpc_subnet_1"
   cidr          = "192.168.0.0/24"
   gateway_ip    = "192.168.0.1"
   primary_dns   = "100.125.13.59"
   secondary_dns = "100.125.65.14"
   vpc_id        = sbercloud_vpc.cce_vpc.id
}

resource "sbercloud_cce_cluster" "cce_cluster" {
   name                   = "cce-cluster"
   flavor_id              = "cce.s1.small"
   container_network_type = "vpc-router"
   vpc_id                 = sbercloud_vpc. cce_vpc.id
   subnet_id              = sbercloud_vpc_subnet. cce_vpc_subnet_1.id
   container_network_cidr = "10.0.0.0/16"
   service_network_cidr   = "10.247.0.0/16"
}

resource "sbercloud_cce_node_pool" "cce_cluster_node_pool" {
   cluster_id               = sbercloud_cce_cluster.cce_cluster.id
   name                     = "cce-cluster-node-pool "
   os                       = "CentOS 7.6"
   initial_node_count       = 1
   flavor_id                = "s7n.xlarge.2"
   password                 = var.node_password
   scall_enable             = true
   min_node_count           = 1
   max_node_count           = 5
   scale_down_cooldown_time = 100
   priority                 = 1
   root_volume {
      size       = 40
      volumetype = "SAS"
   }
   data_volumes {
      size       = 100
      volumetype = "SAS"
   }
   labels = {
      label1 = "label1"
      label2 = "label2"
   }
   tags = {
      tag1 = "tag1"
      tag2 = "tag2"
   }
}

data "sbercloud_cce_addon_template" "autoscaler" {
   cluster_id = sbercloud_cce_cluster.cce_cluster.id
   name       = "autoscaler"
   version    = "1.25.7"
}

resource "sbercloud_cce_addon" "autoscaler" {
   cluster_id    = sbercloud_cce_cluster.cce_cluster.id
   template_name = "autoscaler"
   version       = "1.25.7"

   values {
      basic  = jsondecode(data.sbercloud_cce_addon_template.autoscaler.spec).basic
      custom = merge(
         jsondecode(data.sbercloud_cce_addon_template.autoscaler.spec).parameters.custom,
            {
               cluster_id = sbercloud_cce_cluster.cce_cluster.id
               tenant_id  = var.tenant_id
            }
      )
   }
}

resource "sbercloud_cce_addon" "cce-hpa-controller" {
   cluster_id    = sbercloud_cce_cluster.cce_cluster.id
   template_name = "cce-hpa-controller"
}

Полный пример конфигурационного файла. Cloud Native Network 2.0

terraform {
   required_providers {
      sbercloud = {
         source  = "sbercloud-terraform/sbercloud" # Initialize Cloud.ru provider
      }
   }
}

# Configure Cloud.ru provider
provider "sbercloud" {
   auth_url = "https://iam.ru-moscow-1.hc.sbercloud.ru/v3" # Authorization address
   region   = "ru-moscow-1" # The region where the cloud infrastructure will be deployed

   # Authorization keys
   access_key = var.access_key
   secret_key = var.secret_key
}

resource "sbercloud_vpc" "cce_vpc" {
   name = "cce_vpc"
   cidr = "192.168.0.0/16"
}

resource "sbercloud_vpc_subnet" "cce_vpc_subnet_1" {
   name          = "cce_vpc_subnet_1"
   cidr          = "192.168.0.0/24"
   gateway_ip    = "192.168.0.1"
   primary_dns   = "100.125.13.59"
   secondary_dns = "100.125.65.14"
   vpc_id        = sbercloud_vpc.cce_vpc.id
}

resource "sbercloud_cce_cluster" "cce_cluster" {
   name                   = "cce-cluster"
   flavor_id              = "cce.s2.small"
   container_network_type = "eni"
   vpc_id                 = sbercloud_vpc.cce_vpc.id
   subnet_id              = sbercloud_vpc_subnet.cce_vpc_subnet_1.id
   eni_subnet_id          = sbercloud_vpc_subnet.cce_vpc_subnet_1.ipv4_subnet_id
   eni_subnet_cidr        = sbercloud_vpc_subnet.cce_vpc_subnet_1.cidr
   service_network_cidr   = "10.247.0.0/16"
}

resource "sbercloud_cce_node_pool" "cce_cluster_node_pool" {
   cluster_id               = sbercloud_cce_cluster.cce_cluster.id
   name                     = "cce-cluster-node-pool "
   os                       = "CentOS 7.6"
   initial_node_count       = 1
   flavor_id                = "s7n.xlarge.2"
   password                 = var.node_password
   scall_enable             = true
   min_node_count           = 1
   max_node_count           = 5
   scale_down_cooldown_time = 100
   priority                 = 1
   root_volume {
      size       = 40
      volumetype = "SAS"
   }
   data_volumes {
      size       = 100
      volumetype = "SAS"
   }
   labels = {
      label1 = "label1"
      label2 = "label2"
   }
   tags = {
      tag1 = "tag1"
      tag2 = "tag2"
   }
}

data "sbercloud_cce_addon_template" "autoscaler" {
   cluster_id = sbercloud_cce_cluster.cce_cluster.id
   name       = "autoscaler"
   version    = "1.25.7"
}

resource "sbercloud_cce_addon" "autoscaler" {
   cluster_id    = sbercloud_cce_cluster.cce_cluster.id
   template_name = "autoscaler"
   version       = "1.25.7"

   values {
      basic  = jsondecode(data.sbercloud_cce_addon_template.autoscaler.spec).basic
      custom = merge(
         jsondecode(data.sbercloud_cce_addon_template.autoscaler.spec).parameters.custom,
            {
               cluster_id = sbercloud_cce_cluster.cce_cluster.id
               tenant_id  = var.tenant_id
            }
      )
   }
}

resource "sbercloud_cce_addon" "cce-hpa-controller" {
   cluster_id    = sbercloud_cce_cluster.cce_cluster.id
   template_name = "cce-hpa-controller"
}
Запустили Evolution free tier
для Dev & Test
Получить