Skip to content

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

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:

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:

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 в кластере.