Перейти к содержимому

Группа узлов в кластере Managed Kubernetes — это группа виртуальных машин Compute, на которых запускаются контейнеры с приложениями

terraform
resource "mws_vpc_network" "network" {
network = var.network_name
}
resource "mws_vpc_subnet" "subnet_a" {
subnet = "${var.subnet_name}-a"
network = mws_vpc_network.network.network
cidr = var.subnet_cidr_a
}
resource "mws_vpc_subnet" "subnet_b" {
subnet = "${var.subnet_name}-b"
network = mws_vpc_network.network.network
cidr = var.subnet_cidr_b
}
resource "mws_vpc_address" "address" {
address = var.address_name
network = mws_vpc_network.network.network
subnet = mws_vpc_subnet.subnet_a.metadata.id
}
resource "mws_iam_service_account" "sa" {
service_account = var.service_account_name
}
resource "mws_mk8s_cluster" "example" {
availability = {
zonal_ha = { // zonal high available
zone = "ru-central1-b"
}
}
cluster_name = var.cluster_name
metadata = {
description = "Zonal HA Kubernetes cluster"
display_name = "HA Example Cluster"
}
network = {
pods_cidr = var.pods_cidr
services_cidr = var.services_cidr
primary_endpoint = {
ref = mws_vpc_address.address.id
}
}
version_control = {
release_channel = "stable"
maintenance_window = {
weekly = {
days = ["MONDAY", "WEDNESDAY"]
hour = 3
}
}
version = "v1.34.1-mws.1"
}
}
resource "mws_mk8s_node_group" "example" {
cluster_name = mws_mk8s_cluster.example.cluster_name
node_group_name = "${var.cluster_name}-example-node-group"
service_account = {
ref = mws_iam_service_account.sa.metadata.id
}
subnet = {
ref = mws_vpc_subnet.subnet_a.metadata.id
}
vm_type = {
ref = "compute/vmTypes/gen-2-8"
}
scale = {
autoscaling = {
min = 1
max = 3
}
}
rollout_strategy = {
max_surge = 1
max_unavailable = 0
}
version_control = {
auto_update = true
version = "v1.34.1-mws.1"
maintenance_window = {
weekly = {
days = ["MONDAY", "WEDNESDAY"]
hour = 3
duration = "4h"
}
}
}
image_storage_size = "20Gb"
labels = [
{ key = "environment", value = "production" },
{ key = "team", value = "devops" }
]
taints = []
zone = "ru-central1-a"
}
variable "network_name" {
type = string
default = "my-ha-network"
description = "VPC network name"
}
variable "subnet_name" {
type = string
default = "my-ha-subnet"
description = "Base name for subnets"
}
variable "subnet_cidr_a" {
type = string
default = "192.168.0.0/17"
description = "CIDR for subnet A"
}
variable "subnet_cidr_b" {
type = string
default = "192.168.128.0/17"
description = "CIDR for subnet B"
}
variable "address_name" {
type = string
default = "k8s-primary-ip"
description = "Name for the primary endpoint address"
}
variable "service_account_name" {
type = string
default = "my-service-account"
description = "Service account name"
}
variable "cluster_name" {
type = string
default = "ha-k8s-cluster"
description = "Name of the Kubernetes cluster"
}
variable "pods_cidr" {
type = string
default = "10.244.0.0/16"
description = "Pods CIDR block"
}
variable "services_cidr" {
type = string
default = "10.96.0.0/16"
description = "Services CIDR block"
}
  • cluster_name (String) Имя Cluster
  • node_group_name (String) Имя Node-группы
  • rollout_strategy (Attributes) Стратегия перекатки (rollout) worker нод в нод группе (see below for nested schema)
  • scale (Attributes) Необходимо заполнить одно из полей fixed или auto scale (see below for nested schema)
  • service_account (Attributes) serviceAccount необходим для поддержки функций:
  • скачивания образов из облачного registry (права на чтение образов)
  • сбор системных метрик с worker нод (права на чтение статусов worker нод) (see below for nested schema)
  • subnet (Attributes) (see below for nested schema)
  • version_control (Attributes) (see below for nested schema)
  • vm_type (Attributes) тип VM (see below for nested schema)
  • image_storage_iops (Number) Количество операций ввода-вывода в секунду (IOPS) для хранилища image-ей и контейнеров
  • image_storage_size (String) размер хранилища для image-ей и контейнеров. Размер в Gb
  • kind (String)
  • labels (Attributes List) (see below for nested schema)
  • metadata (Attributes) Набор общих для всех пользовательских объектов атрибутов. Может быть расширен атрибутами, специфичными для контейнеров. (see below for nested schema)
  • project (String) Путь к проекту
  • taints (Attributes List) (see below for nested schema)
  • timeouts (Attributes) (see below for nested schema)
  • zone (String)
  • id (String) The ID of this resource.
  • status (Attributes) Описывает статусную модель k8s нод групп. (see below for nested schema)

Optional:

  • max_surge (Number)
  • max_unavailable (Number)

Optional:

  • autoscaling (Attributes) (see below for nested schema)
  • fixed (Number) Количество узлов в node group

Required:

  • max (Number) Максимальное количество нод в Node group.
  • min (Number) Минимально количество нод в Node group.

Required:

  • ref (String)

Optional:

  • ref (String)

Optional:

  • auto_update (Boolean) авто обновление версии нод группы в рамках релизного канала и окна обслуживания
  • maintenance_window (Attributes) Если окно обслуживания не заполнено, то время проведения работ не ограничено. Duration можно указывать. Если отсутствует, то не ограничено по времени (see below for nested schema)
  • version (String) Минимальная версия NodeGroup. Не может быть выше версии кластера. Автоматически обновляется до default-версии в окно обслуживания. Если указанная версия выше текущей, обновление запустится немедленно. Во время автоматического обновления это поле не изменяется, а актуальная версия указывается в статусе NodeGroup

Required:

Required:

  • days (List of String) Дни недели, в который будет запущено задание на тех.обслуживание
  • hour (Number) Час, в который будет запущено задание на тех.обслуживание

Optional:

  • duration (String) Допустимая продолжительность процесса обновления. Если не указано, то не ограничено по времени. Принимается только формат в часах (h)

Optional:

  • ref (String)

Required:

  • key (String) Ключ может состоять из двух частей: необязательный префикс и ключ, разделенные ’/’ Максимальная длина префикса 253 символа. Максимальная длина ключа 63 символа.
  • value (String) Значение метки на узле.

Optional:

  • description (String) Описание ресурса
  • display_name (String) Отображаемое имя свойства
  • name (String, Deprecated) Обязательное уникальное, глобально или в пределах проекта, имя. Используется в качестве части составного идентификатора объекта.

Read-Only:

  • create_time (String) Дата создания объекта
  • delete_time (String) Время запроса на удаление ресурса
  • id (String) ID свойства
  • purge_time (String) Время удаления ресурса
  • usages (Attributes List) Связи с другими ресурсами. В зависимости от типа связи, операции над ресурсом могут быть ограничены (see below for nested schema)

Read-Only:

  • name (String) Имя связи, требуется для модификации коллекции
  • resource (String) Ссылка на ресурс
  • usage_type (String) Тип связи. Помимо стандартных own и use могут быть добавлены специализированные типы для конкретных сервисов

Required:

  • effect (String) Эффект taint на node, влияющий на pod scheduling, которые под него попадают.
  • key (String) Ключ может состоять из двух частей: необязательный префикс и ключ, разделенные ”/”. Максимальная длина префикса 253 символа. Максимальная длина ключа 63 символа.
  • value (String) Значение taint на node. Если строка пустая, то value нет.

Optional:

  • create (String) A string that can be parsed as a duration consisting of numbers and unit suffixes, such as ”30s” or “2h45m”. Valid time units are “s” (seconds), “m” (minutes), “h” (hours).
  • delete (String) A string that can be parsed as a duration consisting of numbers and unit suffixes, such as ”30s” or “2h45m”. Valid time units are “s” (seconds), “m” (minutes), “h” (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
  • update (String) A string that can be parsed as a duration consisting of numbers and unit suffixes, such as ”30s” or “2h45m”. Valid time units are “s” (seconds), “m” (minutes), “h” (hours).

Read-Only:

  • cpu (String) Количество виртуальных ядер на ноде
  • image_storage_iops (Number) Количество операций ввода-вывода в секунду (IOPS) для хранилища image-ей и контейнеров
  • image_storage_size (String)
  • labels (Attributes List) (see below for nested schema)
  • memory (String) Количество оперативной памяти на ноде
  • node_group_status (Attributes) (see below for nested schema)
  • nodes_ready (Number) Текущее количество нод готовых для работы
  • ready (Attributes) Информация о статусе реконсиляции (see below for nested schema)
  • rollout_strategy (Attributes) Стратегия перекатки (rollout) worker нод в нод группе (see below for nested schema)
  • scale (Attributes) (see below for nested schema)
  • service_account (Attributes) (see below for nested schema)
  • taints (Attributes List) (see below for nested schema)
  • version_control (Attributes) (see below for nested schema)
  • vm_type (Attributes) (see below for nested schema)

Required:

  • key (String) Ключ может состоять из двух частей: необязательный префикс и ключ, разделенные ’/’ Максимальная длина префикса 253 символа. Максимальная длина ключа 63 символа.
  • value (String) Значение метки на узле.

Read-Only:

  • message (String)
  • state (String) текущий статус node group.

Read-Only:

  • message (String) Описание статуса
  • state (String) Состояние ресурса

Read-Only:

  • max_surge (Number)
  • max_unavailable (Number)

Read-Only:

Read-Only:

  • max (Number) Максимальное количество нод в Node group.
  • min (Number) Минимально количество нод в Node group.

Read-Only:

  • ref (String)

Required:

  • effect (String) Эффект taint на node, влияющий на pod scheduling, которые под него попадают.
  • key (String) Ключ может состоять из двух частей: необязательный префикс и ключ, разделенные ”/”. Максимальная длина префикса 253 символа. Максимальная длина ключа 63 символа.
  • value (String) Значение taint на node. Если строка пустая, то value нет.

Read-Only:

  • auto_update (Boolean)
  • maintenance_window (Attributes) (see below for nested schema)
  • version (String) Текущая версия NodeGroup

Required:

Required:

  • days (List of String) Дни недели, в который будет запущено задание на тех.обслуживание
  • hour (Number) Час, в который будет запущено задание на тех.обслуживание

Optional:

  • duration (String) Допустимая продолжительность процесса обновления. Если не указано, то не ограничено по времени. Принимается только формат в часах (h)

Read-Only:

  • ref (String)