Skip to content

mws_mk8s_cluster (Resource)

Кластер Managed Kubernetes — кластер Kubernetes на базе облачной инфраструктуры MWS Cloud Platform. Представляет собой совокупность Control Plane (управляющего слоя) и групп рабочих узлов

Пример использования

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_mk8s_cluster" "example" {
  availability = {
    # standalone = {
    #  zone = "ru-central1-a"
    # }
    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" // or actual
  }
}

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 "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"
}

Schema

Required

Optional

  • kind (String)
  • metadata (Attributes) Набор общих для всех пользовательских объектов атрибутов. Может быть расширен атрибутами, специфичными для контейнеров. (see below for nested schema)
  • project (String) Путь к проекту
  • timeouts (Attributes) (see below for nested schema)

Read-Only

  • id (String) The ID of this resource.
  • status (Attributes) Описывает статусную модель k8s cluster. (see below for nested schema)

Nested Schema for availability

Optional:

  • standalone (Attributes) Кластер с одним мастером (see below for nested schema)
  • zonal_ha (Attributes) Зональный высокодоступный кластер с несколькими мастерами (see below for nested schema)

Nested Schema for availability.standalone

Required:

  • zone (String) Имя зоны для размещения cluster

Nested Schema for availability.zonal_ha

Required:

  • zone (String) Имя зоны для размещения cluster

Nested Schema for network

Required:

  • pods_cidr (String) необходим ip-range v4
  • primary_endpoint (Attributes) ip-адрес внутри vpc (see below for nested schema)
  • services_cidr (String) необходим ip-range v4

Optional:

Nested Schema for network.primary_endpoint

Optional:

  • ref (String)

Nested Schema for network.public_endpoint

Optional:

  • ref (String)

Nested Schema for version_control

Required:

  • release_channel (String) Cluster обновляется всегда до default версии, поэтому необходимо выбрать релизный канал и настроить окно обслуживания

Optional:

  • maintenance_window (Attributes) Если окно обслуживания не заполнено, то время проведения работ не ограничено. Duration нельзя указывать, так как обновление мастер нод не прерывается (see below for nested schema)
  • version (String)

Nested Schema for version_control.maintenance_window

Required:

Nested Schema for version_control.maintenance_window.weekly

Required:

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

Optional:

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

Nested Schema for metadata

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)

Nested Schema for metadata.usages

Read-Only:

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

Nested Schema for timeouts

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).

Nested Schema for status

Read-Only:

Nested Schema for status.cluster_status

Read-Only:

  • message (String)
  • state (String) текущий статус cluster

Nested Schema for status.network

Read-Only:

Nested Schema for status.network.primary_endpoint

Read-Only:

  • ref (String)

Nested Schema for status.network.public_endpoint

Read-Only:

  • ref (String)

Nested Schema for status.network.subnet

Read-Only:

  • ref (String)

Nested Schema for status.network.vpc_network

Read-Only:

  • ref (String)

Nested Schema for status.ready

Read-Only:

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

Nested Schema for status.version_control

Read-Only:

  • maintenance_window (Attributes) (see below for nested schema)
  • release_channel (String) Cluster обновляется всегда до default версии, поэтому необходимо выбрать релизный канал и настроить окно обслуживания
  • version (String)

Nested Schema for status.version_control.maintenance_window

Required:

Nested Schema for status.version_control.maintenance_window.weekly

Required:

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

Optional:

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