mws_mk8s_node_group (Resource)
Группа узлов в кластере 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_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 = var.service_account_ref
}
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 "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"
}
variable "service_account_ref" {
type = string
description = "Service account reference (iam/projects/<project>/serviceAccounts/<service-account>)"
}Schema
Required
cluster_name(String) Имя Clusternode_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)
Optional
image_storage_size(String) размер хранилища для image-ей и контейнеров. Размер в Gbkind(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)
Read-Only
id(String) The ID of this resource.status(Attributes) Описывает статусную модель k8s нод групп. (see below for nested schema)
Nested Schema for rollout_strategy
Optional:
max_surge(Number)max_unavailable(Number)
Nested Schema for scale
Optional:
autoscaling(Attributes) (see below for nested schema)fixed(Number) Количество узлов в node group
Nested Schema for scale.autoscaling
Required:
max(Number) Максимальное количество нод в Node group.min(Number) Минимально количество нод в Node group.
Nested Schema for service_account
Required:
ref(String)
Nested Schema for subnet
Optional:
ref(String)
Nested Schema for version_control
Optional:
auto_update(Boolean) авто обновление версии нод группы в рамках релизного канала и окна обслуживания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 vm_type
Optional:
ref(String)
Nested Schema for labels
Required:
key(String) Ключ может состоять из двух частей: необязательный префикс и ключ, разделенные '/' Максимальная длина префикса 253 символа. Максимальная длина ключа 63 символа.value(String) Значение метки на узле.
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 taints
Required:
effect(String) Эффект taint на node, влияющий на pod scheduling, которые под него попадают.key(String) Ключ может состоять из двух частей: необязательный префикс и ключ, разделенные "/". Максимальная длина префикса 253 символа. Максимальная длина ключа 63 символа.value(String) Значение taint на node. Если строка пустая, то value нет.
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:
cpu(String) Количество виртуальных ядер на ноде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)
Nested Schema for status.labels
Required:
key(String) Ключ может состоять из двух частей: необязательный префикс и ключ, разделенные '/' Максимальная длина префикса 253 символа. Максимальная длина ключа 63 символа.value(String) Значение метки на узле.
Nested Schema for status.node_group_status
Read-Only:
message(String)state(String) текущий статус node group.
Nested Schema for status.ready
Read-Only:
message(String) Описание статусаstate(String) Состояние ресурса
Nested Schema for status.rollout_strategy
Read-Only:
max_surge(Number)max_unavailable(Number)
Nested Schema for status.scale
Read-Only:
autoscaling(Attributes) (see below for nested schema)fixed(Number)
Nested Schema for status.scale.autoscaling
Read-Only:
max(Number) Максимальное количество нод в Node group.min(Number) Минимально количество нод в Node group.
Nested Schema for status.service_account
Read-Only:
ref(String)
Nested Schema for status.taints
Required:
effect(String) Эффект taint на node, влияющий на pod scheduling, которые под него попадают.key(String) Ключ может состоять из двух частей: необязательный префикс и ключ, разделенные "/". Максимальная длина префикса 253 символа. Максимальная длина ключа 63 символа.value(String) Значение taint на node. Если строка пустая, то value нет.
Nested Schema for status.version_control
Read-Only:
auto_update(Boolean)maintenance_window(Attributes) (see below for nested schema)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)
Nested Schema for status.vm_type
Read-Only:
ref(String)