mws_mkafka_cluster (Resource)
Кластер Managed Kafka — это группа узлов (брокеров), объединенных для приема, хранения и передачи потоков данных с помощью Apache Kafka. В облачной инфраструктуре кластер — единый интерфейс для управления потоками данных в реальном времени
Пример использования
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" "broker_addr_1" {
address = "${var.kafka_name}-broker-addr-1"
network = mws_vpc_network.network.network
subnet = mws_vpc_subnet.subnet_a.metadata.id
}
resource "mws_vpc_address" "broker_addr_2" {
address = "${var.kafka_name}-broker-addr-2"
network = mws_vpc_network.network.network
subnet = mws_vpc_subnet.subnet_b.metadata.id
}
resource "mws_vpc_address" "broker_addr_3" {
address = "${var.kafka_name}-broker-addr-3"
network = mws_vpc_network.network.network
subnet = mws_vpc_subnet.subnet_b.metadata.id
}
resource "mws_mkafka_cluster" "example" {
cluster = var.kafka_name
version = "4.0"
metadata = {
display_name = "Example Kafka Cluster"
description = "Managed Kafka cluster example with VPC endpoints"
}
active = true
endpoints = [
{
name = "vpc-endpoint"
network = mws_vpc_network.network.metadata.id
broker_addresses = [
{ ref = mws_vpc_address.broker_addr_1.id },
{ ref = mws_vpc_address.broker_addr_2.id },
{ ref = mws_vpc_address.broker_addr_3.id }
]
}
]
instances = {
broker = {
vm_type = "compute/vmTypes/gen-2-4"
disk = {
size = "10Gb"
type = "NETWORK_STANDARD_SSD"
}
allocation = [
{
zone = "ru-central1-b"
count = 3
}
]
}
controller = {
combined_with_broker = false
vm_type = "compute/vmTypes/gen-2-4"
disk = {
size = "10Gb"
type = "NETWORK_STANDARD_SSD"
}
allocation = [
{
zone = "ru-central1-b"
count = 3
}
]
}
}
maintenance_window = {
weekly = {
days = ["TUESDAY"]
hour = 4
}
}
timeouts = {
create = "1h"
update = "1h"
delete = "1h"
}
}
variable "network_name" {
type = string
default = "kafka-vpc-network"
description = "VPC network name"
}
variable "subnet_name" {
type = string
default = "kafka-subnet"
description = "Base name for subnets"
}
variable "subnet_cidr_a" {
type = string
default = "192.168.1.0/24"
description = "CIDR for subnet A"
}
variable "subnet_cidr_b" {
type = string
default = "192.168.2.0/24"
description = "CIDR for subnet B"
}
variable "kafka_name" {
type = string
default = "kafka-cluster"
description = "Kafka cluster name"
}Schema
Required
cluster(String) Название или идентификатор кластера.endpoints(Attributes List) Описание эндпойнтов в сетях пользователя (VPC) для подключения к брокерам кластера. (see below for nested schema)instances(Attributes) Описание ресурсов хостов брокеров и контроллеров. (see below for nested schema)version(String) Версия продукта.
Optional
active(Boolean) Значение включен/выключен кластер.kind(String)maintenance_window(Attributes) (see below for nested schema)metadata(Attributes) (see below for nested schema)product_config(String) Настройки Kafka. Если не указаны, будут использованы настройки по-умолчанию.project(String) Путь к проектуschema_registry(Attributes) Настройка Schema Registry для кластера. (see below for nested schema)timeouts(Attributes) (see below for nested schema)
Read-Only
id(String) The ID of this resource.status(Attributes) (see below for nested schema)
Nested Schema for endpoints
Required:
broker_addresses(Attributes List) Список адресов в пользовательской сети, на которые "отображаются" брокеры. (see below for nested schema)name(String) Имя эндпойнта.network(String) Идентификатор пользовательской сети (VPC).
Optional:
external_access(Attributes) Настройка внешнего доступа к кластеру Kafka. (see below for nested schema)
Nested Schema for endpoints.broker_addresses
Optional:
ref(String) Идентификатор существующего адреса.spec(Attributes) Спецификация нового адреса. Адрес будет выделен в ходе реконсиляции кластера. (see below for nested schema)
Nested Schema for endpoints.broker_addresses.spec
Required:
subnet(String) Идентификатор подсети, в которой необходимо выделить адрес.
Nested Schema for endpoints.external_access
Required:
allowed(Boolean) Назначить внешние адреса для кластера Kafka.
Optional:
broker_addresses(Attributes List) Список внешних адресов, используемых для настройки доступа к кластеру Kafka. Если флаг "allowed" установлен в true и адреса не указаны, внешние адреса будут выделены автоматически. (see below for nested schema)
Nested Schema for endpoints.external_access.broker_addresses
Optional:
ref(String) Идентификатор существующего внешнего адреса.spec(Attributes) Спецификация нового внешнего адреса. Адрес будет выделен в ходе реконсиляции кластера. (see below for nested schema)
Nested Schema for endpoints.external_access.broker_addresses.spec
Nested Schema for instances
Required:
broker(Attributes) Параметры виртуальной машины, где будет работать брокер Кафки. (see below for nested schema)controller(Attributes) Параметры виртуальной машины, где будет работать KRaft контроллер Кафки. (see below for nested schema)
Nested Schema for instances.broker
Required:
disk(Attributes) Параметры диска с данными на узле кластера. (see below for nested schema)vm_type(String) Тип виртуальной машины, описывающий ресурсы (vCPU, memory).
Optional:
allocation(Attributes List) Параметры размещения брокеров по зонам. (see below for nested schema)
Nested Schema for instances.broker.disk
Required:
size(String) Размер диска.
Optional:
iops(Number) Количество дисковых операций в секунду.type(String) Тип используемого диска:
- "NETWORK_STANDARD_SSD" — сетевой SSD
Nested Schema for instances.broker.allocation
Required:
count(Number) Количество брокеров в зоне/подсети.zone(String) Зона расположения узла.
Nested Schema for instances.controller
Optional:
allocation(Attributes List) Параметры размещения контроллеров по зонам. (see below for nested schema)combined_with_broker(Boolean) Размещать контроллеры на тех же виртуальных машинах, что и брокерыdisk(Attributes) Параметры диска с данными на узле кластера. (see below for nested schema)vm_type(String) Тип виртуальной машины, описывающий ресурсы (vCPU, memory).
Nested Schema for instances.controller.allocation
Required:
count(Number) Количество брокеров в зоне/подсети.zone(String) Зона расположения узла.
Nested Schema for instances.controller.disk
Required:
size(String) Размер диска.
Optional:
iops(Number) Количество дисковых операций в секунду.type(String) Тип используемого диска:
- "NETWORK_STANDARD_SSD" — сетевой SSD
Nested Schema for maintenance_window
Required:
weekly(Attributes) (see below for nested schema)
Nested Schema for maintenance_window.weekly
Required:
days(List of String) Дни недели, в который будет запущено задание на тех.обслуживаниеhour(Number) Час, в который будет запущено задание на тех.обслуживание
Optional:
duration(String) Допустимая продолжительность процесса обновления. Если не указано, то не ограничено по времени. Принимается только формат в часах (h)
Nested Schema for metadata
Optional:
description(String) Описание ресурса.display_name(String) Отображаемое имя. Необязательное поле, можно свободно задавать и изменять для удобства организации ресурсов.
Read-Only:
create_time(String) Дата создания объекта.delete_time(String) Время запроса на удаление ресурса (не фактическое время удаления).id(String) ссылка на типизированный референс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 schema_registry
Optional:
enabled(Boolean) Включить Schema Registry в кластере.
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:
effective_kafka_config(Map of String) Конфигурация параметров кластера после валидации и преобразования из пользователского вводаendpoints(Attributes List) Описание эндпойнтов в сетях пользователя (VPC) для подключения к брокерам кластера. (see below for nested schema)health(String) Работоспособность кластера- "ALIVE" - Полностью работоспособен
- "DEGRADED" - Деградирует (некоторые, но не все, экземпляры неработоспособны)
- "FAILED" - Неработоспособен
- "UNKNOWN" - Не удаётся определить состояние (на этапе создания)
instances(Attributes) Описание ресурсов хостов брокеров и контроллеров. (see below for nested schema)maintenance_window(Attributes) (see below for nested schema)message(String)ready(Attributes) Информация о статусе реконсиляции (see below for nested schema)schema_registry(Attributes) Настройка Schema Registry для кластера. (see below for nested schema)state(String) Состояние кластера- "CREATING" - Создаётся
- "RUNNING" - Работает в штатном режиме
- "STOPPING" - Останавливается
- "STOPPED" - Остановлен
- "STARTING" - Запуск ранее остановленного
- "UPDATING" - Выполняется обновление
- "ERROR" - Произошла ошибка, требуется участие команды поддержки
- "DELETING" - Удаляется
- "DELETED" - Удалён
- "UNIDENTIFIED" - Не удаётся определить статус
- "RESTORING" - Восстанавливается
Nested Schema for status.endpoints
Read-Only:
bootstrap_servers(String) Список адресов для первоначального подключения к кластеру внутри пользовательской (VPC).broker_addresses(Attributes List) Список адресов в пользовательской сети, на которые "отображаются" брокеры. (see below for nested schema)external_access(Attributes) Настройка внешнего доступа к кластеру Kafka. (see below for nested schema)name(String) Имя эндпойнта.network(String) Идентификатор пользовательской сети (VPC).port(Number) Порт для доступа к кластеру Kafka внутри пользовательской сети (VPC).schema_registry(Attributes) Адреса Schema Registry во внутренней сети (VPC). (see below for nested schema)
Nested Schema for status.endpoints.broker_addresses
Read-Only:
dns(Attributes List) Доменные имена. (see below for nested schema)ip_address(String) Выделенный адрес.ref(String) Идентификатор адреса.subnet(String) Подсеть, в которой выделен адрес.
Nested Schema for status.endpoints.broker_addresses.dns
Read-Only:
name(String)
Nested Schema for status.endpoints.external_access
Read-Only:
allowed(Boolean) Назначить внешние адреса для кластера Kafka.bootstrap_servers(String) Список адресов для первоначального подключения к кластеру Apache Kafka из внешней сети.broker_addresses(Attributes List) Список внешних адресов, выделенных для брокеров Kafka. (see below for nested schema)port(Number) Порт, используемый для доступа к кластеру Kafka из внешней сети.schema_registry(Attributes) Внешние HTTPS-адреса Schema Registry. (see below for nested schema)
Nested Schema for status.endpoints.external_access.broker_addresses
Read-Only:
ip_address(String) Выделенный адрес.managed(Boolean) False если ссылка на внешний адрес был указана в спецификации, true если адрес был созданref(String) Идентификатор адреса.
Nested Schema for status.endpoints.external_access.schema_registry
Read-Only:
urls(List of String) Список HTTPS URL Schema Registry.
Nested Schema for status.endpoints.schema_registry
Read-Only:
urls(List of String) Список HTTPS URL Schema Registry.
Nested Schema for status.instances
Read-Only:
broker(Attributes) Параметры виртуальной машины, где работает брокер Кафки. (see below for nested schema)controller(Attributes) Параметры виртуальной машины, где работает контроллер. (see below for nested schema)
Nested Schema for status.instances.broker
Read-Only:
disk(Attributes) Параметры диска с данными на узле кластера Managed Kafka. (see below for nested schema)
Nested Schema for status.instances.broker.disk
Read-Only:
iops(Number) Количество дисковых операций в секунду.
Nested Schema for status.instances.controller
Read-Only:
combined_with_broker(Boolean) Контроллеры размещаются на тех же виртуальных машинах, что и брокерыdisk(Attributes) Параметры диска с данными на узле кластера Managed Kafka. (see below for nested schema)
Nested Schema for status.instances.controller.disk
Read-Only:
iops(Number) Количество дисковых операций в секунду.
Nested Schema for status.maintenance_window
Required:
weekly(Attributes) (see below for nested schema)
Nested Schema for status.maintenance_window.weekly
Required:
days(List of String) Дни недели, в который будет запущено задание на тех.обслуживаниеhour(Number) Час, в который будет запущено задание на тех.обслуживание
Optional:
duration(String) Допустимая продолжительность процесса обновления. Если не указано, то не ограничено по времени. Принимается только формат в часах (h)
Nested Schema for status.ready
Read-Only:
message(String) Описание статусаstate(String) Состояние ресурса
Nested Schema for status.schema_registry
Optional:
enabled(Boolean) Включить Schema Registry в кластере.