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
availability(Attributes) (see below for nested schema)cluster_name(String) Имя Clusternetwork(Attributes) (see below for nested schema)version_control(Attributes) (see below for nested schema)
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 v4primary_endpoint(Attributes) ip-адрес внутри vpc (see below for nested schema)services_cidr(String) необходим ip-range v4
Optional:
public_endpoint(Attributes) внешний ip-адрес (see below for nested schema)
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:
weekly(Attributes) (see below for nested schema)
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:
cluster_ca_certificate(String) root сертификат кластераcluster_status(Attributes) (see below for nested schema)network(Attributes) (see below for nested schema)ready(Attributes) Информация о статусе реконсиляции (see below for nested schema)version_control(Attributes) (see below for nested schema)
Nested Schema for status.cluster_status
Read-Only:
message(String)state(String) текущий статус cluster
Nested Schema for status.network
Read-Only:
primary_address(String)primary_endpoint(Attributes) внутренний ip-адрес (see below for nested schema)public_address(String)public_endpoint(Attributes) внешний ip-адрес (see below for nested schema)subnet(Attributes) (see below for nested schema)vpc_network(Attributes) (see below for nested schema)
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:
weekly(Attributes) (see below for nested schema)
Nested Schema for status.version_control.maintenance_window.weekly
Required:
days(List of String) Дни недели, в который будет запущено задание на тех.обслуживаниеhour(Number) Час, в который будет запущено задание на тех.обслуживание
Optional:
duration(String) Допустимая продолжительность процесса обновления. Если не указано, то не ограничено по времени. Принимается только формат в часах (h)