[Документация Yandex Cloud](../../index.md) > [Yandex Managed Service for Apache Kafka®](../index.md) > [Пошаговые инструкции](index.md) > Кластеры > Создание кластера

# Создание кластера Apache Kafka®


{% note info %}

В [регионе Казахстан](../../overview/concepts/region.md) доступна только [зона доступности](../../overview/concepts/geo-scope.md) `kz1-a`.

{% endnote %}

{% note info %}

В [регионе Казахстан](../../overview/concepts/region.md) доступны только [платформы](../../compute/concepts/vm-platforms.md#standard-platforms) `standard-v3` (Intel Ice Lake) и `standard-v3-t4i` (Intel Ice Lake with T4i). Другие типы платформ, кластеры GPU и выделенные хосты недоступны.

{% endnote %}



[Кластер Managed Service for Apache Kafka®](../concepts/index.md) — один или несколько [хостов-брокеров](../concepts/brokers.md), на которых размещены [топики и соответствующие топикам разделы](../concepts/topics.md). [Производители и потребители](../concepts/producers-consumers.md) могут работать с этими топиками, подключившись к хостам [кластера](../../glossary/cluster.md) Managed Service for Apache Kafka®.

{% note info %}

Доступные типы диска [зависят](../concepts/storage.md) от выбранного [класса хостов](../concepts/instance-types.md).

{% endnote %}

## Различия в конфигурации кластеров с ZooKeeper и протоколом Apache Kafka® Raft {#zk-vs-kraft}

В различных версиях Apache Kafka® используются разные инструменты для хранения метаданных, состояния и конфигурации кластера:

* в версиях 3.5 и ниже поддерживается [ZooKeeper](../concepts/index.md#zookeeper);
* в версии 3.6 и до версии 3.9 (включительно) поддерживаются ZooKeeper и [Apache Kafka® Raft](../concepts/index.md#kraft);
* в версиях 4.0 и выше поддерживается только [Apache Kafka® Raft](../concepts/index.md#kraft).

**Хосты с ZooKeeper** {#host-zookeeper}

При выборе версии Apache Kafka® 3.5 и ниже поддерживается только ZooKeeper.

Если вы создаете кластер, в котором больше одного хоста, то в кластер будут добавлены три отдельных хоста ZooKeeper.

**Хосты с KRaft** {#host-kraft}

При выборе версии Apache Kafka® 3.6 и выше дополнительно поддерживается протокол KRaft.

Протокол KRaft доступен в одном из выбранных режимов:

* **KRaft (комбинированный режим)** — на одном хосте Apache Kafka® одновременно размещаются [брокер](../concepts/brokers.md) и контроллер метаданных KRaft. При этом в кластере создаются только три хоста-брокера Apache Kafka®.

  
  Задать количество хостов-брокеров вручную нельзя.

* **KRaft (на отдельных хостах)** — брокер и контроллер метаданных KRaft размещаются на отдельных хостах. При создании кластера с несколькими хостами-брокерами, в него добавляются три отдельных хоста KRaft.

  Количество хостов-брокеров задается вручную.

Хосты KRaft нельзя удалить. Количество хостов KRaft фиксировано.

Подробнее о различиях в конфигурации кластеров с ZooKeeper и KRaft читайте в разделе [Взаимосвязь ресурсов в Managed Service for Apache Kafka®](../concepts/index.md).


## Перед началом работы {#before-you-begin}

1. Рассчитайте [минимальный размер хранилища](../concepts/storage.md#minimal-storage-size) для топиков.
1. [Назначьте](../../iam/operations/roles/grant.md) вашему аккаунту в Yandex Cloud роли:

    * [managed-kafka.editor](../security/index.md#roles-list) или выше — чтобы создать кластер;
    * [vpc.user](../../vpc/security/index.md#vpc-user) — чтобы работать с [сетью](../../vpc/concepts/network.md#network) кластера;
    * [kms.keys.user](../../kms/security/index.md#kms-keys-user) — чтобы управлять [шифрованием диска](../concepts/storage.md#disk-encryption);
    * [mdb.viewer](../../iam/roles-reference.md#mdb-viewer) — чтобы просматривать кластеры управляемых баз данных (MDB) на дашборде в [консоли управления](https://kz.console.yandex.cloud).

Если вы указываете идентификаторы групп безопасности при создании кластера Managed Service for Apache Kafka®, для подключения к нему может понадобиться дополнительная [настройка групп безопасности](connect/index.md#configuring-security-groups).


## Создать кластер с ZooKeeper {#create-cluster}

{% note warning %}

При создании кластера с ZooKeeper не указывайте настройки KRaft.

{% endnote %}

{% list tabs group=instructions %}

- Консоль управления {#console}

  Чтобы создать кластер Managed Service for Apache Kafka®:

  1. В [консоли управления](https://kz.console.yandex.cloud) выберите [каталог](../../resource-manager/concepts/resources-hierarchy.md#folder).
  1. [Перейдите](https://kz.console.yandex.cloud/link/managed-kafka) в сервис **Managed Service for&nbsp;Kafka**.
  1. Нажмите кнопку **Создать кластер**.
  1. В блоке **Базовые параметры**:
     1. Введите имя кластера Managed Service for Apache Kafka® и его описание. Имя кластера Managed Service for Apache Kafka® должно быть уникальным в рамках каталога.
     1. ## Окружение {#environment}
        
        Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
          * `PRODUCTION` — для стабильных версий приложений.
          * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
        
        ## Класс хостов {#broker-class}
        
        В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
        
        Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
        
        При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
        
        ## Конфигурация хостов по умолчанию {#default-config}
        
        По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
        
        * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
        * объем диска — `10` ГБ;
        * [тип диска](../concepts/storage.md) — `network-ssd`.
        
        ## Автоматическое увеличение размера хранилища {#auto-rescale}
        
        Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
        
        ```bash
        yc managed-kafka cluster create \
        ...
        --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                                `planned-usage-threshold=<процент_для_планового_увеличения>,`
                                `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
        ...
        ```
        
        Где:
        
        * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
        
           Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
        
           Если вы задали этот параметр, настройте расписание технического обслуживания.
        
        * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
        
           Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
        
        * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
        
           Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
        
        {% note warning %}
        
        Размер хранилища нельзя уменьшить после автоматического увеличения.
        
        {% endnote %}
        
        ## Статус кластера {#status}
        
        Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
        
        ## Предупреждение про зоны доступности и создание кластера {#note-warning}
        
        {% note warning %}
                
        Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
                
        {% endnote %}
        
        ## Настройка времени технического обслуживания {#maintenance}
        
        Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
        
        ```bash
        yc managed-kafka cluster create \
        ...
        --maintenance-window type=<тип_технического_обслуживания>,`
                            `day=<день_недели>,`
                            `hour=<порядковый_номер_часового_интервала> \
        ...
        ```
        
        Где `type` — тип технического обслуживания:
        
        * `anytime` (по умолчанию) — в любое время.
        * `weekly` — по расписанию. Для этого значения дополнительно укажите:
            * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
            * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
        
              > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
        
        ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
        
        {% note warning %}
                            
        Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                            
        {% endnote %}
        
        ## Защита кластера от удаления {#protect-from-deletion}
        
        {% note info %}
        
        Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
        
        {% endnote %}
     1. Выберите версию Apache Kafka®.
  1. ## Окружение {#environment}
     
     Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
       * `PRODUCTION` — для стабильных версий приложений.
       * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
     
     ## Класс хостов {#broker-class}
     
     В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
     
     Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
     
     При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
     
     ## Конфигурация хостов по умолчанию {#default-config}
     
     По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
     
     * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
     * объем диска — `10` ГБ;
     * [тип диска](../concepts/storage.md) — `network-ssd`.
     
     ## Автоматическое увеличение размера хранилища {#auto-rescale}
     
     Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
     
     ```bash
     yc managed-kafka cluster create \
     ...
     --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                             `planned-usage-threshold=<процент_для_планового_увеличения>,`
                             `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
     ...
     ```
     
     Где:
     
     * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
     
        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
     
        Если вы задали этот параметр, настройте расписание технического обслуживания.
     
     * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
     
        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
     
     * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
     
        Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
     
     {% note warning %}
     
     Размер хранилища нельзя уменьшить после автоматического увеличения.
     
     {% endnote %}
     
     ## Статус кластера {#status}
     
     Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
     
     ## Предупреждение про зоны доступности и создание кластера {#note-warning}
     
     {% note warning %}
             
     Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
             
     {% endnote %}
     
     ## Настройка времени технического обслуживания {#maintenance}
     
     Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
     
     ```bash
     yc managed-kafka cluster create \
     ...
     --maintenance-window type=<тип_технического_обслуживания>,`
                         `day=<день_недели>,`
                         `hour=<порядковый_номер_часового_интервала> \
     ...
     ```
     
     Где `type` — тип технического обслуживания:
     
     * `anytime` (по умолчанию) — в любое время.
     * `weekly` — по расписанию. Для этого значения дополнительно укажите:
         * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
         * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
     
           > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
     
     ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
     
     {% note warning %}
                         
     Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                         
     {% endnote %}
     
     ## Защита кластера от удаления {#protect-from-deletion}
     
     {% note info %}
     
     Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
     
     {% endnote %}
     
  1. В блоке **Хранилище**:
     * Выберите тип диска.

       {% note warning %}
       
       Тип диска нельзя изменить после создания кластера.
       
       {% endnote %}

       От выбранного типа зависит, с каким шагом можно будет изменить размер диска:
       
       * Сетевые HDD- и SSD-диски — с шагом 1 ГБ.
       * Локальные SSD-диски:
           * для платформы **Intel Cascade Lake** — с шагом 100 ГБ;
           * для платформ **Intel Ice Lake** и **AMD Zen 4** — с шагом 368 ГБ.
       * Нереплицируемые SSD-диски — с шагом 93 ГБ.

       Тип диска для кластера Managed Service for Apache Kafka® нельзя изменить после создания.
     * Выберите объем хранилища, который будет использоваться для данных.

  
  1. В блоке **Автоматическое увеличение размера хранилища** задайте [пороги заполненности](../concepts/storage.md#auto-rescale) хранилища, при достижении которых его размер будет увеличиваться:

     1. В поле **Увеличивать размер** выберите один или оба порога:
         * **В окно обслуживания при заполненности более** — порог для планового увеличения. Когда он достигнут, объем хранилища увеличивается во время ближайшего [окна обслуживания](../concepts/maintenance.md#maintenance-window).
         * **Незамедлительно при заполненности более** — порог для незамедлительного увеличения. Когда он достигнут, объем хранилища увеличивается немедленно.         
     1. Задайте пороговое значение (в процентах от общего объема хранилища). Если выбраны оба порога, значение для незамедлительного увеличения должно быть выше, чем для планового.
     1. Задайте **Максимальный размер хранилища**.

  1. В блоке **Сетевые настройки**:
     1. Выберите зону доступности, в которой нужно разместить хосты-брокеры Apache Kafka®.


     1. Выберите [сеть](../../vpc/concepts/network.md#network).
     1. Выберите [подсеть](../../vpc/concepts/network.md#subnet) в зоне доступности для этой сети. Чтобы [создать новую подсеть](../../vpc/operations/subnet-create.md), нажмите на кнопку **Создать** рядом с нужной зоной доступности.


     1. Выберите [группы безопасности](../../vpc/concepts/security-groups.md) для сетевого трафика кластера Managed Service for Apache Kafka®.
     1. Для доступа к хостам-брокерам из интернета выберите опцию **Публичный доступ**. В этом случае подключаться к ним можно только с использованием SSL-соединения. Подробнее в разделе [Подключение к кластеру Apache Kafka® из приложений](connect/clients.md).


  1. В блоке **Хосты**:
     1. Укажите количество хостов-брокеров Apache Kafka® для размещения в выбранной зоне доступности.

        При выборе количества хостов-брокеров учтите следующие особенности:
        * Добавление в кластер более одного хоста-брокера приведет к автоматическому добавлению трех хостов ZooKeeper.
        * Репликация возможна при наличии как минимум двух хостов-брокеров в кластере Managed Service for Apache Kafka®.
        * Для высокой доступности кластера Managed Service for Apache Kafka® должны выполняться [определенные условия](../concepts/ha-cluster.md).
    
     1. В качестве сервиса координации выберите **ZooKeeper (на отдельных хостах)**.

  1. Если вы указали более одного хоста-брокера, то в блоке **Класс хоста ZooKeeper** укажите характеристики [хостов ZooKeeper](../concepts/index.md) для размещения в выбранной зоне доступности.
  1. При необходимости задайте дополнительные настройки кластера Managed Service for Apache Kafka®:

     * **Обслуживание** — настройки времени [технического обслуживания](../concepts/maintenance.md):
     
         * Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт **В любое время** (по умолчанию).
         * Чтобы указать предпочтительное время начала обслуживания, выберите пункт **По расписанию** и укажите день недели и интервал времени по UTC. Например, можно выбрать время, когда кластер наименее загружен.
         
         Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление СУБД, применение патчей и т. д.
     
     
     * **Защита от удаления** — управляет защитой кластера от непреднамеренного удаления.
     
         Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
     
     
     * **Шифрование дисков** — включите настройку, чтобы зашифровать диски [пользовательским ключом KMS](../../kms/concepts/key.md).
     
        * Чтобы [создать](../../kms/operations/key.md#create) новый ключ, нажмите кнопку **Создать**.
     
        * Чтобы использовать созданный ранее ключ, выберите его в поле **Ключ KMS**.
     
        Подробнее о шифровании дисков читайте в разделе [Хранилище](../concepts/storage.md#disk-encryption).
     
        {% note warning %}
        
        Включить шифрование дисков можно только при создании кластера.
        
        {% endnote %}
     
     
     * **Реестр схем данных** — включите настройку, чтобы управлять схемами данных с помощью [Managed Schema Registry](../concepts/managed-schema-registry.md).
     
         {% note warning %}
         
         Невозможно отключить управление схемами данных с помощью Managed Schema Registry после его подключения.
         
         {% endnote %}
     
     * **Kafka Rest API** — включите настройку, чтобы разрешить отправку запросов к API Apache Kafka®.
     
         В качестве реализации используется приложение с открытым исходным кодом [Karapace](https://github.com/Aiven-Open/karapace). API Karapace совместимо с [API Confluent REST Proxy](https://docs.confluent.io/platform/current/kafka-rest/api.html) за исключением небольших расхождений.
     
         {% note warning %}
     
         Настройку **Kafka Rest API** невозможно отключить после ее включения.
     
         {% endnote %}
     
     
     * **Kafka UI** — включите настройку, чтобы использовать [веб-интерфейс Apache Kafka®](../concepts/kafka-ui.md).

  1. При необходимости задайте [настройки Apache Kafka®](../concepts/settings-list.md#cluster-settings).
  1. Нажмите кнопку **Создать**.
  1. ## Окружение {#environment}
     
     Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
       * `PRODUCTION` — для стабильных версий приложений.
       * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
     
     ## Класс хостов {#broker-class}
     
     В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
     
     Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
     
     При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
     
     ## Конфигурация хостов по умолчанию {#default-config}
     
     По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
     
     * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
     * объем диска — `10` ГБ;
     * [тип диска](../concepts/storage.md) — `network-ssd`.
     
     ## Автоматическое увеличение размера хранилища {#auto-rescale}
     
     Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
     
     ```bash
     yc managed-kafka cluster create \
     ...
     --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                             `planned-usage-threshold=<процент_для_планового_увеличения>,`
                             `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
     ...
     ```
     
     Где:
     
     * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
     
        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
     
        Если вы задали этот параметр, настройте расписание технического обслуживания.
     
     * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
     
        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
     
     * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
     
        Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
     
     {% note warning %}
     
     Размер хранилища нельзя уменьшить после автоматического увеличения.
     
     {% endnote %}
     
     ## Статус кластера {#status}
     
     Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
     
     ## Предупреждение про зоны доступности и создание кластера {#note-warning}
     
     {% note warning %}
             
     Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
             
     {% endnote %}
     
     ## Настройка времени технического обслуживания {#maintenance}
     
     Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
     
     ```bash
     yc managed-kafka cluster create \
     ...
     --maintenance-window type=<тип_технического_обслуживания>,`
                         `day=<день_недели>,`
                         `hour=<порядковый_номер_часового_интервала> \
     ...
     ```
     
     Где `type` — тип технического обслуживания:
     
     * `anytime` (по умолчанию) — в любое время.
     * `weekly` — по расписанию. Для этого значения дополнительно укажите:
         * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
         * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
     
           > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
     
     ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
     
     {% note warning %}
                         
     Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                         
     {% endnote %}
     
     ## Защита кластера от удаления {#protect-from-deletion}
     
     {% note info %}
     
     Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
     
     {% endnote %}

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Чтобы создать кластер Managed Service for Apache Kafka®:

  1. Посмотрите описание команды CLI для создания кластера Managed Service for Apache Kafka®:

     ```bash
     yc managed-kafka cluster create --help
     ```

  1. Укажите параметры кластера Managed Service for Apache Kafka® в команде создания (в примере приведены не все параметры):

     
     ```bash
     yc managed-kafka cluster create \
        --name <имя_кластера> \
        --environment <окружение> \
        --version <версия> \
        --schema-registry \
        --network-name <имя_сети> \
        --subnet-ids <идентификаторы_подсетей> \
        --zone-ids <зоны_доступности> \
        --brokers-count <количество_хостов-брокеров_в_зоне> \
        --resource-preset <класс_хоста> \
        --disk-type <network-hdd|network-ssd|network-ssd-nonreplicated|local-ssd> \
        --disk-size <размер_хранилища_ГБ> \
        --assign-public-ip <разрешить_публичный_доступ_к_кластеру> \
        --security-group-ids <список_идентификаторов_групп_безопасности> \
        --deletion-protection \
        --kafka-ui-enabled <true_или_false> \
        --disk-encryption-key-id <идентификатор_ключа_KMS>
     ```


     Где:

     * `--environment` — окружение кластера: `prestable` или `production`.
     * `--version` — версия Apache Kafka®: 3.6, 3.7, 3.8 или 3.9. Дополнительно передайте [конфигурацию хостов ZooKeeper](../concepts/index.md#zookeeper).
     * `--schema-registry` — управление схемами данных с помощью [Managed Schema Registry](../concepts/managed-schema-registry.md).

         {% note warning %}
         
         Невозможно отключить управление схемами данных с помощью Managed Schema Registry после его подключения.
         
         {% endnote %}

     * `--zone-ids` и `--brokers-count` — зоны доступности и число хостов-брокеров в каждой зоне.
     * `--resource-preset` — [класс хостов](../concepts/instance-types.md).
     * `--disk-type` — [тип диска](../concepts/storage.md).

        {% note warning %}
        
        Тип диска нельзя изменить после создания кластера.
        
        {% endnote %}

     * `--deletion-protection` — защита кластера от непреднамеренного удаления: `true` или `false`.

        ## Окружение {#environment}
        
        Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
          * `PRODUCTION` — для стабильных версий приложений.
          * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
        
        ## Класс хостов {#broker-class}
        
        В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
        
        Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
        
        При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
        
        ## Конфигурация хостов по умолчанию {#default-config}
        
        По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
        
        * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
        * объем диска — `10` ГБ;
        * [тип диска](../concepts/storage.md) — `network-ssd`.
        
        ## Автоматическое увеличение размера хранилища {#auto-rescale}
        
        Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
        
        ```bash
        yc managed-kafka cluster create \
        ...
        --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                                `planned-usage-threshold=<процент_для_планового_увеличения>,`
                                `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
        ...
        ```
        
        Где:
        
        * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
        
           Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
        
           Если вы задали этот параметр, настройте расписание технического обслуживания.
        
        * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
        
           Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
        
        * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
        
           Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
        
        {% note warning %}
        
        Размер хранилища нельзя уменьшить после автоматического увеличения.
        
        {% endnote %}
        
        ## Статус кластера {#status}
        
        Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
        
        ## Предупреждение про зоны доступности и создание кластера {#note-warning}
        
        {% note warning %}
                
        Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
                
        {% endnote %}
        
        ## Настройка времени технического обслуживания {#maintenance}
        
        Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
        
        ```bash
        yc managed-kafka cluster create \
        ...
        --maintenance-window type=<тип_технического_обслуживания>,`
                            `day=<день_недели>,`
                            `hour=<порядковый_номер_часового_интервала> \
        ...
        ```
        
        Где `type` — тип технического обслуживания:
        
        * `anytime` (по умолчанию) — в любое время.
        * `weekly` — по расписанию. Для этого значения дополнительно укажите:
            * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
            * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
        
              > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
        
        ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
        
        {% note warning %}
                            
        Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                            
        {% endnote %}
        
        ## Защита кластера от удаления {#protect-from-deletion}
        
        {% note info %}
        
        Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
        
        {% endnote %}

     
     * `--kafka-ui-enabled` — использование [веб-интерфейса Kafka UI для Apache Kafka®](../concepts/kafka-ui.md): `true` или `false`.
     * `--disk-encryption-key-id` — идентификатор [пользовательского ключа KMS](../../kms/concepts/key.md). Чтобы зашифровать диск, передайте идентификатор ключа KMS в параметре. Подробнее о шифровании дисков в разделе [Хранилище](../concepts/storage.md#disk-encryption).
       
       {% note warning %}
          
       Включить шифрование дисков можно только при создании кластера.
          
       {% endnote %}


     {% note tip %}

     При необходимости здесь же можно задать [настройки Apache Kafka®](../concepts/settings-list.md#cluster-settings).

     {% endnote %}

  1. Чтобы использовать ZooKeeper в кластере, передайте [конфигурацию хостов ZooKeeper](../concepts/index.md#zookeeper):
       
     ```bash
     yc managed-kafka cluster create \
         ...
         --zookeeper-resource-preset <класс_хоста> \
         --zookeeper-disk-size <размер_хранилища_ГБ> \
         --zookeeper-disk-type <network-hdd|network-ssd|network-ssd-nonreplicated|local-ssd> \
         ...

     ```

     Где:
     * `--zookeeper-resource-preset` — [класс хостов](../concepts/instance-types.md) ZooKeeper.
     * `--zookeeper-disk-size` — размер хранилища.
     * `--zookeeper-disk-type` — [тип диска](../concepts/storage.md) ZooKeeper.
  
  1. ## Окружение {#environment}
     
     Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
       * `PRODUCTION` — для стабильных версий приложений.
       * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
     
     ## Класс хостов {#broker-class}
     
     В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
     
     Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
     
     При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
     
     ## Конфигурация хостов по умолчанию {#default-config}
     
     По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
     
     * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
     * объем диска — `10` ГБ;
     * [тип диска](../concepts/storage.md) — `network-ssd`.
     
     ## Автоматическое увеличение размера хранилища {#auto-rescale}
     
     Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
     
     ```bash
     yc managed-kafka cluster create \
     ...
     --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                             `planned-usage-threshold=<процент_для_планового_увеличения>,`
                             `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
     ...
     ```
     
     Где:
     
     * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
     
        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
     
        Если вы задали этот параметр, настройте расписание технического обслуживания.
     
     * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
     
        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
     
     * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
     
        Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
     
     {% note warning %}
     
     Размер хранилища нельзя уменьшить после автоматического увеличения.
     
     {% endnote %}
     
     ## Статус кластера {#status}
     
     Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
     
     ## Предупреждение про зоны доступности и создание кластера {#note-warning}
     
     {% note warning %}
             
     Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
             
     {% endnote %}
     
     ## Настройка времени технического обслуживания {#maintenance}
     
     Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
     
     ```bash
     yc managed-kafka cluster create \
     ...
     --maintenance-window type=<тип_технического_обслуживания>,`
                         `day=<день_недели>,`
                         `hour=<порядковый_номер_часового_интервала> \
     ...
     ```
     
     Где `type` — тип технического обслуживания:
     
     * `anytime` (по умолчанию) — в любое время.
     * `weekly` — по расписанию. Для этого значения дополнительно укажите:
         * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
         * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
     
           > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
     
     ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
     
     {% note warning %}
                         
     Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                         
     {% endnote %}
     
     ## Защита кластера от удаления {#protect-from-deletion}
     
     {% note info %}
     
     Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
     
     {% endnote %}

  1. ## Окружение {#environment}
     
     Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
       * `PRODUCTION` — для стабильных версий приложений.
       * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
     
     ## Класс хостов {#broker-class}
     
     В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
     
     Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
     
     При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
     
     ## Конфигурация хостов по умолчанию {#default-config}
     
     По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
     
     * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
     * объем диска — `10` ГБ;
     * [тип диска](../concepts/storage.md) — `network-ssd`.
     
     ## Автоматическое увеличение размера хранилища {#auto-rescale}
     
     Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
     
     ```bash
     yc managed-kafka cluster create \
     ...
     --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                             `planned-usage-threshold=<процент_для_планового_увеличения>,`
                             `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
     ...
     ```
     
     Где:
     
     * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
     
        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
     
        Если вы задали этот параметр, настройте расписание технического обслуживания.
     
     * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
     
        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
     
     * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
     
        Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
     
     {% note warning %}
     
     Размер хранилища нельзя уменьшить после автоматического увеличения.
     
     {% endnote %}
     
     ## Статус кластера {#status}
     
     Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
     
     ## Предупреждение про зоны доступности и создание кластера {#note-warning}
     
     {% note warning %}
             
     Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
             
     {% endnote %}
     
     ## Настройка времени технического обслуживания {#maintenance}
     
     Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
     
     ```bash
     yc managed-kafka cluster create \
     ...
     --maintenance-window type=<тип_технического_обслуживания>,`
                         `day=<день_недели>,`
                         `hour=<порядковый_номер_часового_интервала> \
     ...
     ```
     
     Где `type` — тип технического обслуживания:
     
     * `anytime` (по умолчанию) — в любое время.
     * `weekly` — по расписанию. Для этого значения дополнительно укажите:
         * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
         * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
     
           > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
     
     ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
     
     {% note warning %}
                         
     Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                         
     {% endnote %}
     
     ## Защита кластера от удаления {#protect-from-deletion}
     
     {% note info %}
     
     Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
     
     {% endnote %}


- Terraform {#tf}

  [Terraform](https://www.terraform.io/) позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.
  
  Terraform распространяется под лицензией [Business Source License](https://github.com/hashicorp/terraform/blob/main/LICENSE), а [провайдер Yandex Cloud для Terraform](https://github.com/yandex-cloud/terraform-provider-yandex) — под лицензией [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/).
  
  Подробная информация о ресурсах провайдера в документации на сайте [Terraform](https://www.terraform.io/docs/providers/yandex/index.html) или в [зеркале](../../terraform/index.md).

  Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../terraform/authentication.md) соответствующим способом.

  Чтобы создать кластер Managed Service for Apache Kafka®:
  1. Опишите в конфигурационном файле создаваемые ресурсы:
     * Кластер Managed Service for Apache Kafka® — описание кластера и его хостов. При необходимости здесь же можно задать [настройки Apache Kafka®](../concepts/settings-list.md#cluster-settings).

     * Сеть — описание [облачной сети](../../vpc/concepts/network.md#network), в которой будет расположен кластер. Если подходящая сеть у вас уже есть, описывать ее повторно не нужно.

     * Подсети — описание [подсетей](../../vpc/concepts/network.md#subnet), к которым будут подключены хосты кластера. Если подходящие подсети у вас уже есть, описывать их повторно не нужно.

     Пример структуры конфигурационного файла:

     
     ```hcl
     resource "yandex_mdb_kafka_cluster" "<имя_кластера>" {
       environment            = "<окружение>"
       name                   = "<имя_кластера>"
       network_id             = "<идентификатор_сети>"
       subnet_ids             = ["<список_идентификаторов_подсетей>"]
       security_group_ids     = ["<список_идентификаторов_групп_безопасности_кластера>"]
       deletion_protection    = <защитить_кластер_от_удаления>

       config {
         version          = "<версия>"
         zones            = ["<зоны_доступности>"]
         brokers_count    = <количество_хостов-брокеров>
         assign_public_ip = "<разрешить_публичный_доступ_к_кластеру>"
         schema_registry  = "<включить_управление_схемами_данных>"
         kafka_ui {
           enabled = <использовать_веб-интерфейс_Kafka_UI>
         }
         kafka {
           resources {
             disk_size          = <размер_хранилища_ГБ>
             disk_type_id       = "<тип_диска>"
             resource_preset_id = "<класс_хоста>"
           }
           kafka_config {}
         }
       }
     }

     resource "yandex_vpc_network" "<имя_сети>" {
       name = "<имя_сети>"
     }

     resource "yandex_vpc_subnet" "<имя_подсети>" {
       name           = "<имя_подсети>"
       zone           = "<зона_доступности>"
       network_id     = "<идентификатор_сети>"
       v4_cidr_blocks = ["<диапазон>"]
     }
     ```


     Где:

     * `environment` — окружение кластера: `PRESTABLE` или `PRODUCTION`.
     * `version` — версия Apache Kafka®: 3.6, 3.7, 3.8 или 3.9. Дополнительно передайте [конфигурацию хостов ZooKeeper](../concepts/index.md#zookeeper).
     * `zones` и `brokers_count` — зоны доступности и число хостов-брокеров в каждой зоне.
     * `deletion_protection` — защита кластера от непреднамеренного удаления: `true` или `false`.

       ## Окружение {#environment}
       
       Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
         * `PRODUCTION` — для стабильных версий приложений.
         * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
       
       ## Класс хостов {#broker-class}
       
       В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
       
       Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
       
       При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
       
       ## Конфигурация хостов по умолчанию {#default-config}
       
       По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
       
       * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
       * объем диска — `10` ГБ;
       * [тип диска](../concepts/storage.md) — `network-ssd`.
       
       ## Автоматическое увеличение размера хранилища {#auto-rescale}
       
       Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
       
       ```bash
       yc managed-kafka cluster create \
       ...
       --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                               `planned-usage-threshold=<процент_для_планового_увеличения>,`
                               `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
       ...
       ```
       
       Где:
       
       * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
       
          Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
       
          Если вы задали этот параметр, настройте расписание технического обслуживания.
       
       * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
       
          Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
       
       * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
       
          Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
       
       {% note warning %}
       
       Размер хранилища нельзя уменьшить после автоматического увеличения.
       
       {% endnote %}
       
       ## Статус кластера {#status}
       
       Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
       
       ## Предупреждение про зоны доступности и создание кластера {#note-warning}
       
       {% note warning %}
               
       Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
               
       {% endnote %}
       
       ## Настройка времени технического обслуживания {#maintenance}
       
       Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
       
       ```bash
       yc managed-kafka cluster create \
       ...
       --maintenance-window type=<тип_технического_обслуживания>,`
                           `day=<день_недели>,`
                           `hour=<порядковый_номер_часового_интервала> \
       ...
       ```
       
       Где `type` — тип технического обслуживания:
       
       * `anytime` (по умолчанию) — в любое время.
       * `weekly` — по расписанию. Для этого значения дополнительно укажите:
           * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
           * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
       
             > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
       
       ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
       
       {% note warning %}
                           
       Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                           
       {% endnote %}
       
       ## Защита кластера от удаления {#protect-from-deletion}
       
       {% note info %}
       
       Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
       
       {% endnote %}

     
     * `disk_encryption_key_id` — шифрование диска [пользовательским ключом KMS](../../kms/concepts/key.md). Чтобы зашифровать диск, передайте идентификатор ключа KMS. Подробнее о шифровании дисков в разделе [Шифрование диска](../concepts/storage.md#disk-encryption).
     * `assign_public_ip` — публичный доступ к кластеру: `true` или `false`.


     * `schema_registry` — управление схемами данных с помощью [Managed Schema Registry](../concepts/managed-schema-registry.md): `true` или `false`. Значение по умолчанию — `false`.

       {% note warning %}
       
       Невозможно отключить управление схемами данных с помощью Managed Schema Registry после его подключения.
       
       {% endnote %}

       

     * `kafka_ui` — использование [веб-интерфейса Kafka UI для Apache Kafka®](../concepts/kafka-ui.md): `true` или `false`. Значение по умолчанию — `false`.


     Чтобы использовать ZooKeeper в кластере, добавьте к описанию кластера блок `zookeeper`:

     ```hcl
     resource "yandex_mdb_kafka_cluster" "<имя_кластера>" {
       ...
       zookeeper {
         resources {
           resource_preset_id = "<класс_хоста>"
           disk_type_id       = "<тип_диска>"
           disk_size          = <размер_хранилища_ГБ>
         }
       }
     }
     ```

     Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров), добавьте к описанию кластера блок `maintenance_window`:
     
     ```hcl
     resource "yandex_mdb_kafka_cluster" "<имя_кластера>" {
       ...
       maintenance_window {
         type = "<тип_технического_обслуживания>"
         day  = "<день_недели>"
         hour = <порядковый_номер_часового_интервала>
       }
       ...
     }
     ```
     
     Где:
     
     * `type` — тип технического обслуживания. Принимает значения:
         * `ANYTIME` — в любое время.
         * `WEEKLY` — по расписанию.
     * `day` — день недели для типа `WEEKLY`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
     * `hour` — порядковый номер часового интервала по UTC для типа `WEEKLY`: от `1` до `24`.
     
       > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

     
     Чтобы зашифровать диски [пользовательским ключом KMS](../../kms/concepts/key.md), добавьте параметр `disk_encryption_key_id`:
     
     ```hcl
     resource "yandex_mdb_kafka_cluster" "<имя_кластера>" {
         ...
         disk_encryption_key_id = <идентификатор_ключа_KMS>
         ...
     }
     ```
     
     Подробнее о шифровании дисков читайте в разделе [Хранилище](../concepts/storage.md#disk-encryption).


  1. Проверьте корректность настроек.

     1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
     1. Выполните команду:
     
        ```bash
        terraform validate
        ```
     
        Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  1. Создайте кластер Managed Service for Apache Kafka®.

     1. Выполните команду для просмотра планируемых изменений:
     
        ```bash
        terraform plan
        ```
     
        Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
     
     1. Если вас устраивают планируемые изменения, внесите их:
        1. Выполните команду:
     
           ```bash
           terraform apply
           ```
     
        1. Подтвердите изменение ресурсов.
        1. Дождитесь завершения операции.

     После этого в указанном каталоге будут созданы все требуемые ресурсы, а в терминале отобразятся [FQDN хостов кластера Managed Service for Apache Kafka®](../concepts/network.md#hostname). Проверить появление ресурсов и их настройки можно в [консоли управления](https://kz.console.yandex.cloud).

  Подробнее в [документации провайдера Terraform](../../terraform/resources/mdb_kafka_cluster.md).

  {% note warning "Ограничения по времени" %}
  
  Провайдер Terraform ограничивает время на выполнение всех операций с кластером Managed Service for Apache Kafka® 60 минутами.
  
  Операции, длящиеся дольше указанного времени, прерываются.
  
  {% cut "Как изменить эти ограничения?" %}
  
  Добавьте к описанию кластера блок `timeouts`, например:
  
  ```hcl
  resource "yandex_mdb_kafka_cluster" "<имя_кластера>" {
    ...
    timeouts {
      create = "1h30m" # Полтора часа
      update = "2h"    # 2 часа
      delete = "30m"   # 30 минут
    }
  }
  ```
  
  {% endcut %}
  
  {% endnote %}

- REST API {#api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Воспользуйтесь методом [Cluster.create](../api-ref/Cluster/create.md) и выполните запрос, например, с помощью [cURL](https://curl.se/):

        1. Создайте файл `body.json` и добавьте в него следующее содержимое:

            {% note info %}

            В примере приведены не все доступные параметры.

            {% endnote %}

            
            ```json
            {
              "folderId": "<идентификатор_каталога>",
              "name": "<имя_кластера>",
              "environment": "<окружение>",
              "networkId": "<идентификатор_сети>",
              "securityGroupIds": [
                "<идентификатор_группы_безопасности_1>",
                "<идентификатор_группы_безопасности_2>",
                ...
                "<идентификатор_группы_безопасности_N>"
              ],
              "configSpec": {
                "version": "<версия_Apache Kafka®>",
                "kafka": {
                  "resources": {
                    "resourcePresetId": "<класс_хостов Apache Kafka®>",
                    "diskSize": "<размер_хранилища_в_байтах>",
                    "diskTypeId": "<тип_диска>"
                  }
                },
                "zookeeper": {
                  "resources": {
                    "resourcePresetId": "<класс_хостов ZooKeeper>",
                    "diskSize": "<размер_хранилища_в_байтах>",
                    "diskTypeId": "<тип_диска>"                   
                  }
                },
                "zoneId": [
                  <список_зон_доступности>
                ],
                "brokersCount": "<количество_брокеров_в_зоне>",
                "assignPublicIp": <разрешить_публичный_доступ_к_кластеру>,
                "schemaRegistry": <включить_управление_схемами_данных>,
                "restApiConfig": {
                  "enabled": <включить_отправку_запросов_к_API_Apache Kafka®>
                },
                "diskSizeAutoscaling": {
                  <параметры_автоматического_увеличения_размера_хранилища>
                },
                "kafkaUiConfig": {
                  "enabled": <использовать_веб-интерфейс_Kafka_UI>
                }
              },
              "topicSpecs": [
                {
                  "name": "<имя_топика>",
                  "partitions": "<количество_партиций>",
                  "replicationFactor": "<фактор_репликации>"
                },
                { <аналогичный_набор_настроек_для_топика_2> },
                { ... },
                { <аналогичный_набор_настроек_для_топика_N> }
              ],
              "userSpecs": [
                {
                  "name": "<имя_пользователя>",
                  "password": "<пароль_пользователя>",
                  "permissions": [
                    {
                      "topicName": "<имя_топика>",
                      "role": "<роль_пользователя>"
                    }
                  ]
                },
                { <аналогичный_набор_настроек_для_пользователя_2> },
                { ... },
                { <аналогичный_набор_настроек_для_пользователя_N> }
              ],
              "maintenanceWindow": {
                "anytime": {},
                "weeklyMaintenanceWindow": {
                  "day": "<день_недели>",
                  "hour": "<порядковый_номер_часового_интервала>"
                }
              },
              "deletionProtection": <защитить_кластер_от_удаления>,
              "diskEncryptionKeyId": "<идентификатор_ключа_KMS>"
            }
            ```


            Где:

            * `name` — имя кластера.
            * `environment` — окружение кластера: `PRODUCTION` или `PRESTABLE`.
            * `networkId` — идентификатор [сети](../../vpc/concepts/network.md), в которой будет размещен кластер.

            
            * `securityGroupIds` — идентификаторы [групп безопасности](../../vpc/concepts/security-groups.md) в виде массива строк. Каждая строка — идентификатор группы безопасности.


            * `configSpec` — конфигурация кластера:

                * `version` — версия Apache Kafka®: 3.6, 3.7, 3.8 или 3.9. Дополнительно передайте [конфигурацию хостов ZooKeeper](../concepts/index.md#zookeeper).
                * `kafka` — конфигурация Apache Kafka®:

                    * `resources.resourcePresetId` — идентификатор [класса хостов](../concepts/instance-types.md). Список доступных классов хостов с их идентификаторами можно запросить с помощью метода [ResourcePreset.list](../api-ref/ResourcePreset/list.md).
                    * `resources.diskSize` — размер диска в байтах.
                    * `resources.diskTypeId` — [тип диска](../concepts/storage.md).

                * `zookeeper` — конфигурация ZooKeeper:

                    * `resources.resourcePresetId` — идентификатор класса хостов. Список доступных классов хостов с их идентификаторами можно запросить с помощью метода [ResourcePreset.list](../api-ref/ResourcePreset/list.md).
                    * `resources.diskSize` — размер диска в байтах.
                    * `resources.diskTypeId` — тип диска.


                * `zoneId` и `brokersCount` – зоны доступности и число хостов-брокеров в каждой зоне.

                
                * `assignPublicIp` — доступность хостов-брокеров из интернета: `true` или `false`.


                * `schemaRegistry` – управлять схемами данных с помощью [Managed Schema Registry](../concepts/managed-schema-registry.md): `true` или `false`. Значение по умолчанию — `false`. Эту настройку невозможно изменить после создания кластера Managed Service for Apache Kafka®.
                * `restApiConfig` — конфигурация Apache Kafka® REST API. Для доступа к отправке запросов к REST API Apache Kafka® укажите `enabled: true`.
                * `diskSizeAutoscaling` – [пороги заполненности](../concepts/storage.md#auto-rescale) хранилища (в процентах от общего объема хранилища), при достижении которых его размер будет увеличиваться:

                  * `plannedUsageThreshold` – процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно обслуживания](../concepts/maintenance.md#maintenance-window).
                  
                      Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
                  
                      Если вы задали этот параметр, настройте расписание окна технического обслуживания.
                  
                  * `emergencyUsageThreshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
                  
                    Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `plannedUsageThreshold`.
                  
                  * `diskSizeLimit` – максимальный размер хранилища (в байтах), который может быть установлен при достижении одного из заданных процентов заполнения.

                
                * `kafkaUiConfig` — использование [веб-интерфейса Kafka UI](../concepts/kafka-ui.md). Для доступа к веб-интерфейсу Kafka UI укажите `enabled: true`.


            * `topicSpecs` — настройки топиков в виде массива элементов. Каждый элемент соответствует отдельному топику и имеет следующую структуру:

                * `name` — имя топика.
                
                    {% note info %}
                    
                    Если нужно создать топик, начинающийся с символа `_`, используйте [Admin API Apache Kafka®](cluster-topics.md#admin-api). Создать такой топик с помощью интерфейсов Yandex Cloud нельзя.
                    
                    {% endnote %}
                
                * `partitions` – количество разделов.
                * `replicationFactor` – фактор репликации.

            * `userSpecs` — настройки пользователей в виде массива элементов. Каждый элемент соответствует отдельному пользователю и имеет следующую структуру:

                * `name` — имя пользователя. Оно может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания.
                * `password` — пароль пользователя. Длина пароля от 8 до 128 символов.
                * `permissions` — список топиков, к которым пользователь должен иметь доступ.
                
                  Список организован в виде массива элементов. Каждый элемент соответствует отдельному топику и имеет следующую структуру:
                
                  * `topicName` – имя или шаблон имени топика:
                    * `*` — чтобы разрешить доступ к любым топикам.
                    * Полное название топика — чтобы разрешить доступ конкретно к нему.
                    * `<префикс>*` — чтобы выдать доступ к топикам, названия которых начинаются с указанного префикса. Допустим, есть топики `topic_a1`, `topic_a2`, `a3`. Если указать значение `topic*`, доступ будет разрешен для топиков `topic_a1` и `topic_a2`.Для указания всех топиков в кластере используйте маску `*`.
                  * `role` – роль пользователя: `ACCESS_ROLE_CONSUMER`, `ACCESS_ROLE_PRODUCER` или `ACCESS_ROLE_ADMIN`. Роль `ACCESS_ROLE_ADMIN` доступна только если выбраны все топики (`topicName: "*"`).
                  * `allowHosts` – (опционально) список IP-адресов, с которых пользователю разрешен доступ к топику.

            * `maintenanceWindow` — настройки времени [технического обслуживания](../concepts/maintenance.md) (в том числе для выключенных кластеров). Выберите один из вариантов:

                * `anytime` (по умолчанию) — в любое время.
                * `weeklyMaintenanceWindow` — по расписанию:
                    * `day` — день недели в формате `DDD`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
                    * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.

                      > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

            * `deletionProtection` — защита кластера от непреднамеренного удаления: `true` или `false`. Значение по умолчанию — `false`.

                ## Окружение {#environment}
                
                Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
                  * `PRODUCTION` — для стабильных версий приложений.
                  * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
                
                ## Класс хостов {#broker-class}
                
                В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
                
                Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
                
                При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
                
                ## Конфигурация хостов по умолчанию {#default-config}
                
                По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
                
                * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
                * объем диска — `10` ГБ;
                * [тип диска](../concepts/storage.md) — `network-ssd`.
                
                ## Автоматическое увеличение размера хранилища {#auto-rescale}
                
                Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
                
                ```bash
                yc managed-kafka cluster create \
                ...
                --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                                        `planned-usage-threshold=<процент_для_планового_увеличения>,`
                                        `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
                ...
                ```
                
                Где:
                
                * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
                
                   Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
                
                   Если вы задали этот параметр, настройте расписание технического обслуживания.
                
                * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
                
                   Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
                
                * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
                
                   Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
                
                {% note warning %}
                
                Размер хранилища нельзя уменьшить после автоматического увеличения.
                
                {% endnote %}
                
                ## Статус кластера {#status}
                
                Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
                
                ## Предупреждение про зоны доступности и создание кластера {#note-warning}
                
                {% note warning %}
                        
                Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
                        
                {% endnote %}
                
                ## Настройка времени технического обслуживания {#maintenance}
                
                Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
                
                ```bash
                yc managed-kafka cluster create \
                ...
                --maintenance-window type=<тип_технического_обслуживания>,`
                                    `day=<день_недели>,`
                                    `hour=<порядковый_номер_часового_интервала> \
                ...
                ```
                
                Где `type` — тип технического обслуживания:
                
                * `anytime` (по умолчанию) — в любое время.
                * `weekly` — по расписанию. Для этого значения дополнительно укажите:
                    * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
                    * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
                
                      > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
                
                ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
                
                {% note warning %}
                                    
                Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                                    
                {% endnote %}
                
                ## Защита кластера от удаления {#protect-from-deletion}
                
                {% note info %}
                
                Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
                
                {% endnote %}
            
            
            * `diskEncryptionKeyId` — идентификатор [пользовательского ключа KMS](../../kms/concepts/key.md). Чтобы зашифровать диски, передайте идентификатор ключа KMS. Подробнее о шифровании дисков в разделе [Шифрование диска](../concepts/storage.md#disk-encryption).

              {% note warning %}
                  
              Включить шифрование дисков можно только при создании кластера.
                  
              {% endnote %}


            
            Идентификатор каталога можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md).


        1. Выполните запрос:

            ```bash
            curl \
              --request POST \
              --header "Authorization: Bearer $IAM_TOKEN" \
              --header "Content-Type: application/json" \
              --url 'https://mdb.api.yandexcloud.kz/managed-kafka/v1/clusters' \
              --data '@body.json'
            ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/create.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

    1. Воспользуйтесь вызовом [ClusterService/Create](../api-ref/grpc/Cluster/create.md) и выполните запрос, например, с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

        1. Создайте файл `body.json` и добавьте в него следующее содержимое:

            {% note info %}

            В примере приведены не все доступные параметры.

            {% endnote %}

            
            ```json
            {
              "folder_id": "<идентификатор_каталога>",
              "name": "<имя_кластера>",
              "environment": "<окружение>",
              "network_id": "<идентификатор_сети>",
              "security_group_ids": [
                "<идентификатор_группы_безопасности_1>",
                "<идентификатор_группы_безопасности_2>",
                ...
                "<идентификатор_группы_безопасности_N>"
              ],
              "config_spec": {
                "version": "<версия_Apache Kafka®>",
                "kafka": {
                  "resources": {
                    "resource_preset_id": "<класс_хостов Apache Kafka®>",
                    "disk_size": "<размер_хранилища_в_байтах>",
                    "disk_type_id": "<тип_диска>"
                  }
                },
                "zookeeper": {
                  "resources": {
                    "resource_preset_id": "<класс_хостов ZooKeeper>",
                    "disk_size": "<размер_хранилища_в_байтах>",
                    "disk_type_id": "<тип_диска>"                   
                  }
                },
                "zone_id": [
                  <список_зон_доступности>
                ],
                "brokers_count": {
                  "value": "<количество_брокеров_в_зоне>"
                },
                "assign_public_ip": <разрешить_публичный_доступ_к_кластеру>,
                "schema_registry": <включить_управление_схемами_данных>,
                "rest_api_config": {
                  "enabled": <включить_отправку_запросов_к_API_Apache Kafka®>
                },
                "disk_size_autoscaling": {
                  <параметры_автоматического_увеличения_размера_хранилища>
                },
                "kafka_ui_config": {
                  "enabled": <использовать_веб-интерфейс_Kafka_UI>
                }
              },
              "topic_specs": [
                {
                  "name": "<имя_топика>",
                  "partitions": {
                    "value": "<количество_партиций>"
                  },
                  "replication_factor": {
                    "value": "<фактор_репликации>"
                  }
                },
                { <аналогичный_набор_настроек_для_топика_2> },
                { ... },
                { <аналогичный_набор_настроек_для_топика_N> }
              ],
              "user_specs": [
                {
                  "name": "<имя_пользователя>",
                  "password": "<пароль_пользователя>",
                  "permissions": [
                    {
                      "topic_name": "<имя_топика>",
                      "role": "<роль_пользователя>"
                    }
                  ]
                },
                { <аналогичный_набор_настроек_для_пользователя_2> },
                { ... },
                { <аналогичный_набор_настроек_для_пользователя_N> }
              ],
              "maintenance_window": {
                "anytime": {},
                "weekly_maintenance_window": {
                  "day": "<день_недели>",
                  "hour": "<порядковый_номер_часового_интервала>"
                }
              },
              "deletion_protection": <защитить_кластер_от_удаления>,
              "disk_encryption_key_id": "<идентификатор_ключа_KMS>"
            }
            ```


            Где:

            * `name` — имя кластера.
            * `environment` — окружение кластера: `PRODUCTION` или `PRESTABLE`.
            * `network_id` — идентификатор [сети](../../vpc/concepts/network.md), в которой будет размещен кластер.

            
            * `security_group_ids` — идентификаторы [групп безопасности](../../vpc/concepts/security-groups.md) в виде массива строк. Каждая строка — идентификатор группы безопасности.


            * `config_spec` — конфигурация кластера:

                * `version` — версия Apache Kafka®: 3.6, 3.7, 3.8 или 3.9. Дополнительно передайте [конфигурацию хостов ZooKeeper](../concepts/index.md#zookeeper).
                * `kafka` — конфигурация Apache Kafka®:

                    * `resources.resource_preset_id` — идентификатор [класса хостов](../concepts/instance-types.md). Список доступных классов хостов с их идентификаторами можно запросить с помощью вызова [ResourcePreset.list](../api-ref/grpc/ResourcePreset/list.md).
                    * `resources.disk_size` — размер диска в байтах.
                    * `resources.disk_type_id` — [тип диска](../concepts/storage.md).

                * `zookeeper` — конфигурация ZooKeeper:

                    * `resources.resource_preset_id` — идентификатор класса хостов. Список доступных классов хостов с их идентификаторами можно запросить с помощью вызова [ResourcePreset.list](../api-ref/grpc/ResourcePreset/list.md).
                    * `resources.disk_size` — размер диска в байтах.
                    * `resources.disk_type_id` — тип диска.


                * `zone_id` и `brokers_count` – зоны доступности и число хостов-брокеров в каждой зоне (число передается в виде объекта с полем `value`).

                
                * `assign_public_ip` — доступность хостов-брокеров из интернета: `true` или `false`.


                * `schema_registry` – управлять схемами данных с помощью [Managed Schema Registry](../concepts/managed-schema-registry.md): `true` или `false`. Значение по умолчанию — `false`. Эту настройку невозможно изменить после создания кластера Managed Service for Apache Kafka®.
                * `rest_api_config` — конфигурация Apache Kafka® REST API. Для доступа к отправке запросов к REST API Apache Kafka® укажите `enabled: true`.
                * `disk_size_autoscaling` – чтобы в кластере не заканчивалось место на диске, укажите [пороги заполненности](../concepts/storage.md#auto-rescale) хранилища (в процентах от общего объема хранилища), при достижении которых его размер будет увеличиваться:

                  * `planned_usage_threshold` – процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно обслуживания](../concepts/maintenance.md#maintenance-window).
                  
                      Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
                  
                      Если вы задали этот параметр, настройте расписание окна технического обслуживания.
                  
                  * `emergency_usage_threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
                  
                    Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned_usage_threshold`.
                  
                  * `disk_size_limit` – максимальный размер хранилища (в байтах), который может быть установлен при достижении одного из заданных процентов заполнения.

                  

                * `kafka_ui_config` — использование [веб-интерфейса Kafka UI](../concepts/kafka-ui.md). Для доступа к веб-интерфейсу Kafka UI укажите `enabled: true`.


            * `topic_specs` — настройки топиков в виде массива элементов. Каждый элемент соответствует отдельному топику и имеет следующую структуру:

                * `name` — имя топика.
                
                    {% note info %}
                    
                    Если нужно создать топик, начинающийся с символа `_`, используйте [Admin API Apache Kafka®](cluster-topics.md#admin-api). Создать такой топик с помощью интерфейсов Yandex Cloud нельзя.
                    
                    {% endnote %}
                
                * `partitions` – количество разделов. Передается в виде объекта с полем `value`.
                * `replication_factor` – фактор репликации. Передается в виде объекта с полем `value`.

            * `user_specs` — настройки пользователей в виде массива элементов. Каждый элемент соответствует отдельному пользователю и имеет следующую структуру:

                * `name` — имя пользователя. Оно может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания.
                * `password` — пароль пользователя. Длина пароля от 8 до 128 символов.
                * `permissions` — список топиков, к которым пользователь должен иметь доступ.
                
                  Список организован в виде массива элементов. Каждый элемент соответствует отдельному топику и имеет следующую структуру:
                
                  * `topic_name` – имя или шаблон имени топика:
                    * `*` — чтобы разрешить доступ к любым топикам.
                    * Полное название топика — чтобы разрешить доступ конкретно к нему.
                    * `<префикс>*` — чтобы выдать доступ к топикам, названия которых начинаются с указанного префикса. Допустим, есть топики `topic_a1`, `topic_a2`, `a3`. Если указать значение `topic*`, доступ будет разрешен для топиков `topic_a1` и `topic_a2`.Для указания всех топиков в кластере используйте маску `*`.
                  * `role` – роль пользователя: `ACCESS_ROLE_CONSUMER`, `ACCESS_ROLE_PRODUCER` или `ACCESS_ROLE_ADMIN`. Роль `ACCESS_ROLE_ADMIN` доступна только если выбраны все топики (`topicName: "*"`).
                  * `allow_hosts` – (опционально) список IP-адресов, с которых пользователю разрешен доступ к топику, в виде массива элементов.

            * `maintenance_window` — настройки времени [технического обслуживания](../concepts/maintenance.md) (в том числе для выключенных кластеров). Выберите один из вариантов:

                * `anytime` (по умолчанию) — в любое время.
                * `weekly_maintenance_window` — по расписанию:
                    * `day` — день недели в формате `DDD`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
                    * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
                    
                      > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

            * `deletion_protection` — защита кластера от непреднамеренного удаления: `true` или `false`. Значение по умолчанию — `false`.

                ## Окружение {#environment}
                
                Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
                  * `PRODUCTION` — для стабильных версий приложений.
                  * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
                
                ## Класс хостов {#broker-class}
                
                В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
                
                Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
                
                При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
                
                ## Конфигурация хостов по умолчанию {#default-config}
                
                По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
                
                * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
                * объем диска — `10` ГБ;
                * [тип диска](../concepts/storage.md) — `network-ssd`.
                
                ## Автоматическое увеличение размера хранилища {#auto-rescale}
                
                Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
                
                ```bash
                yc managed-kafka cluster create \
                ...
                --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                                        `planned-usage-threshold=<процент_для_планового_увеличения>,`
                                        `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
                ...
                ```
                
                Где:
                
                * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
                
                   Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
                
                   Если вы задали этот параметр, настройте расписание технического обслуживания.
                
                * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
                
                   Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
                
                * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
                
                   Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
                
                {% note warning %}
                
                Размер хранилища нельзя уменьшить после автоматического увеличения.
                
                {% endnote %}
                
                ## Статус кластера {#status}
                
                Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
                
                ## Предупреждение про зоны доступности и создание кластера {#note-warning}
                
                {% note warning %}
                        
                Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
                        
                {% endnote %}
                
                ## Настройка времени технического обслуживания {#maintenance}
                
                Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
                
                ```bash
                yc managed-kafka cluster create \
                ...
                --maintenance-window type=<тип_технического_обслуживания>,`
                                    `day=<день_недели>,`
                                    `hour=<порядковый_номер_часового_интервала> \
                ...
                ```
                
                Где `type` — тип технического обслуживания:
                
                * `anytime` (по умолчанию) — в любое время.
                * `weekly` — по расписанию. Для этого значения дополнительно укажите:
                    * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
                    * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
                
                      > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
                
                ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
                
                {% note warning %}
                                    
                Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                                    
                {% endnote %}
                
                ## Защита кластера от удаления {#protect-from-deletion}
                
                {% note info %}
                
                Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
                
                {% endnote %}
            
            
            * `disk_encryption_key_id` — идентификатор [пользовательского ключа KMS](../../kms/concepts/key.md). Чтобы зашифровать диски, передайте идентификатор ключа KMS. Подробнее о шифровании дисков в разделе [Шифрование диска](../concepts/storage.md#disk-encryption).

              {% note warning %}
                  
              Включить шифрование дисков можно только при создании кластера.
                  
              {% endnote %}


            
            Идентификатор каталога можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md).


        1. Выполните запрос:

            ```bash
            curl \
              --request POST \
              --header "Authorization: Bearer $IAM_TOKEN" \
              --header "Content-Type: application/json" \
              --url 'https://mdb.api.yandexcloud.kz/managed-kafka/v1/clusters' \
              --data '@body.json'
            ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/create.md#yandex.cloud.operation.Operation).

{% endlist %}

## Создать кластер с KRaft {#create-cluster-kraft}

{% note warning %}

При создании кластера с KRaft не указывайте настройки ZooKeeper.

{% endnote %}

{% list tabs group=instructions %}

- Консоль управления {#console}

  Чтобы создать кластер Managed Service for Apache Kafka®:

  1. В [консоли управления](https://kz.console.yandex.cloud) выберите [каталог](../../resource-manager/concepts/resources-hierarchy.md#folder).
  1. [Перейдите](https://kz.console.yandex.cloud/link/managed-kafka) в сервис **Managed Service for&nbsp;Kafka**.
  1. Нажмите кнопку **Создать кластер**.
  1. В блоке **Базовые параметры**:
     1. Введите имя кластера Managed Service for Apache Kafka® и его описание. Имя кластера Managed Service for Apache Kafka® должно быть уникальным в рамках каталога.
     1. ## Окружение {#environment}
        
        Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
          * `PRODUCTION` — для стабильных версий приложений.
          * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
        
        ## Класс хостов {#broker-class}
        
        В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
        
        Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
        
        При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
        
        ## Конфигурация хостов по умолчанию {#default-config}
        
        По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
        
        * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
        * объем диска — `10` ГБ;
        * [тип диска](../concepts/storage.md) — `network-ssd`.
        
        ## Автоматическое увеличение размера хранилища {#auto-rescale}
        
        Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
        
        ```bash
        yc managed-kafka cluster create \
        ...
        --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                                `planned-usage-threshold=<процент_для_планового_увеличения>,`
                                `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
        ...
        ```
        
        Где:
        
        * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
        
           Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
        
           Если вы задали этот параметр, настройте расписание технического обслуживания.
        
        * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
        
           Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
        
        * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
        
           Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
        
        {% note warning %}
        
        Размер хранилища нельзя уменьшить после автоматического увеличения.
        
        {% endnote %}
        
        ## Статус кластера {#status}
        
        Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
        
        ## Предупреждение про зоны доступности и создание кластера {#note-warning}
        
        {% note warning %}
                
        Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
                
        {% endnote %}
        
        ## Настройка времени технического обслуживания {#maintenance}
        
        Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
        
        ```bash
        yc managed-kafka cluster create \
        ...
        --maintenance-window type=<тип_технического_обслуживания>,`
                            `day=<день_недели>,`
                            `hour=<порядковый_номер_часового_интервала> \
        ...
        ```
        
        Где `type` — тип технического обслуживания:
        
        * `anytime` (по умолчанию) — в любое время.
        * `weekly` — по расписанию. Для этого значения дополнительно укажите:
            * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
            * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
        
              > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
        
        ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
        
        {% note warning %}
                            
        Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                            
        {% endnote %}
        
        ## Защита кластера от удаления {#protect-from-deletion}
        
        {% note info %}
        
        Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
        
        {% endnote %}

     1. Выберите версию Apache Kafka® 3.6 и выше.
  1. ## Окружение {#environment}
     
     Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
       * `PRODUCTION` — для стабильных версий приложений.
       * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
     
     ## Класс хостов {#broker-class}
     
     В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
     
     Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
     
     При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
     
     ## Конфигурация хостов по умолчанию {#default-config}
     
     По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
     
     * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
     * объем диска — `10` ГБ;
     * [тип диска](../concepts/storage.md) — `network-ssd`.
     
     ## Автоматическое увеличение размера хранилища {#auto-rescale}
     
     Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
     
     ```bash
     yc managed-kafka cluster create \
     ...
     --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                             `planned-usage-threshold=<процент_для_планового_увеличения>,`
                             `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
     ...
     ```
     
     Где:
     
     * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
     
        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
     
        Если вы задали этот параметр, настройте расписание технического обслуживания.
     
     * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
     
        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
     
     * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
     
        Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
     
     {% note warning %}
     
     Размер хранилища нельзя уменьшить после автоматического увеличения.
     
     {% endnote %}
     
     ## Статус кластера {#status}
     
     Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
     
     ## Предупреждение про зоны доступности и создание кластера {#note-warning}
     
     {% note warning %}
             
     Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
             
     {% endnote %}
     
     ## Настройка времени технического обслуживания {#maintenance}
     
     Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
     
     ```bash
     yc managed-kafka cluster create \
     ...
     --maintenance-window type=<тип_технического_обслуживания>,`
                         `day=<день_недели>,`
                         `hour=<порядковый_номер_часового_интервала> \
     ...
     ```
     
     Где `type` — тип технического обслуживания:
     
     * `anytime` (по умолчанию) — в любое время.
     * `weekly` — по расписанию. Для этого значения дополнительно укажите:
         * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
         * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
     
           > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
     
     ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
     
     {% note warning %}
                         
     Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                         
     {% endnote %}
     
     ## Защита кластера от удаления {#protect-from-deletion}
     
     {% note info %}
     
     Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
     
     {% endnote %}

  1. В блоке **Хранилище**:
     * Выберите тип диска.

       {% note warning %}
       
       Тип диска нельзя изменить после создания кластера.
       
       {% endnote %}

       От выбранного типа зависит, с каким шагом можно будет изменить размер диска:
       
       * Сетевые HDD- и SSD-диски — с шагом 1 ГБ.
       * Локальные SSD-диски:
           * для платформы **Intel Cascade Lake** — с шагом 100 ГБ;
           * для платформ **Intel Ice Lake** и **AMD Zen 4** — с шагом 368 ГБ.
       * Нереплицируемые SSD-диски — с шагом 93 ГБ.

       Тип диска для кластера Managed Service for Apache Kafka® нельзя изменить после создания.
     * Выберите объем хранилища, который будет использоваться для данных.

  
  1. В блоке **Автоматическое увеличение размера хранилища** задайте [пороги заполненности](../concepts/storage.md#auto-rescale) хранилища, при достижении которых его размер будет увеличиваться:

     1. В поле **Увеличивать размер** выберите один или оба порога:
         * **В окно обслуживания при заполненности более** — порог для планового увеличения. Когда он достигнут, объем хранилища увеличивается во время ближайшего [окна обслуживания](../concepts/maintenance.md#maintenance-window).
         * **Незамедлительно при заполненности более** — порог для незамедлительного увеличения. Когда он достигнут, объем хранилища увеличивается немедленно.         
     1. Задайте пороговое значение (в процентах от общего объема хранилища). Если выбраны оба порога, значение для незамедлительного увеличения должно быть выше, чем для планового.
     1. Задайте **Максимальный размер хранилища**.

  1. В блоке **Сетевые настройки**:
     1. Выберите зону доступности, в которой нужно разместить хосты-брокеры Apache Kafka®.


     1. Выберите [сеть](../../vpc/concepts/network.md#network).
     1. Выберите [подсеть](../../vpc/concepts/network.md#subnet) в зоне доступности для этой сети. Чтобы [создать новую подсеть](../../vpc/operations/subnet-create.md), нажмите на кнопку **Создать** рядом с нужной зоной доступности.


     1. Выберите [группы безопасности](../../vpc/concepts/security-groups.md) для сетевого трафика кластера Managed Service for Apache Kafka®.
     1. Для доступа к хостам-брокерам из интернета выберите опцию **Публичный доступ**. В этом случае подключаться к ним можно только с использованием SSL-соединения. Подробнее в разделе [Подключение к кластеру Apache Kafka® из приложений](connect/clients.md).


  1. В блоке **Хосты**:

     1. Укажите количество хостов-брокеров Apache Kafka® для размещения в выбранной зоне доступности.

        При выборе количества хостов учтите следующие особенности:
        * Если в качестве сервиса координации выбран [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology) — задать количество хостов-брокеров вручную нельзя.
        * Если в качестве сервиса координации выбран [KRaft (на отдельных хостах)](../concepts/kraft.md#cluster-topology) — количество брокеров задается вручную. При создании кластера с несколькими хостами в него будут добавлены три отдельных хоста KRaft.
        * Репликация возможна при наличии как минимум двух хостов в кластере Managed Service for Apache Kafka®.
        * Для высокой доступности кластера Managed Service for Apache Kafka® должны выполняться [определенные условия](../concepts/ha-cluster.md).
      
     1. В поле **Сервис координации** выберите один из вариантов:
        * **KRaft (на отдельных хостах)** — брокер и контроллер метаданных KRaft размещаются на отдельных хостах.
        
        * **KRaft (комбинированный режим)** — на одном хосте Apache Kafka® одновременно размещаются брокер и контроллер метаданных KRaft.

          
          Можно создать кластер с тремя хостами-брокерами в одной зоне доступности.



          Задать количество хостов-брокеров вручную нельзя.

  1. Если вы указали более одного хоста-брокера, то в блоке **Класс хоста KRaft** укажите характеристики [хостов KRaft](../concepts/index.md) для размещения в выбранной зоне доступности.
  1. При необходимости задайте дополнительные настройки кластера Managed Service for Apache Kafka®:

     * **Обслуживание** — настройки времени [технического обслуживания](../concepts/maintenance.md):
     
         * Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт **В любое время** (по умолчанию).
         * Чтобы указать предпочтительное время начала обслуживания, выберите пункт **По расписанию** и укажите день недели и интервал времени по UTC. Например, можно выбрать время, когда кластер наименее загружен.
         
         Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление СУБД, применение патчей и т. д.
     
     
     * **Защита от удаления** — управляет защитой кластера от непреднамеренного удаления.
     
         Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
     
     
     * **Шифрование дисков** — включите настройку, чтобы зашифровать диски [пользовательским ключом KMS](../../kms/concepts/key.md).
     
        * Чтобы [создать](../../kms/operations/key.md#create) новый ключ, нажмите кнопку **Создать**.
     
        * Чтобы использовать созданный ранее ключ, выберите его в поле **Ключ KMS**.
     
        Подробнее о шифровании дисков читайте в разделе [Хранилище](../concepts/storage.md#disk-encryption).
     
        {% note warning %}
        
        Включить шифрование дисков можно только при создании кластера.
        
        {% endnote %}
     
     
     * **Реестр схем данных** — включите настройку, чтобы управлять схемами данных с помощью [Managed Schema Registry](../concepts/managed-schema-registry.md).
     
         {% note warning %}
         
         Невозможно отключить управление схемами данных с помощью Managed Schema Registry после его подключения.
         
         {% endnote %}
     
     * **Kafka Rest API** — включите настройку, чтобы разрешить отправку запросов к API Apache Kafka®.
     
         В качестве реализации используется приложение с открытым исходным кодом [Karapace](https://github.com/Aiven-Open/karapace). API Karapace совместимо с [API Confluent REST Proxy](https://docs.confluent.io/platform/current/kafka-rest/api.html) за исключением небольших расхождений.
     
         {% note warning %}
     
         Настройку **Kafka Rest API** невозможно отключить после ее включения.
     
         {% endnote %}
     
     
     * **Kafka UI** — включите настройку, чтобы использовать [веб-интерфейс Apache Kafka®](../concepts/kafka-ui.md).

  1. При необходимости задайте [настройки Apache Kafka®](../concepts/settings-list.md#cluster-settings).
  1. Нажмите кнопку **Создать**.
  1. ## Окружение {#environment}
     
     Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
       * `PRODUCTION` — для стабильных версий приложений.
       * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
     
     ## Класс хостов {#broker-class}
     
     В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
     
     Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
     
     При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
     
     ## Конфигурация хостов по умолчанию {#default-config}
     
     По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
     
     * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
     * объем диска — `10` ГБ;
     * [тип диска](../concepts/storage.md) — `network-ssd`.
     
     ## Автоматическое увеличение размера хранилища {#auto-rescale}
     
     Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
     
     ```bash
     yc managed-kafka cluster create \
     ...
     --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                             `planned-usage-threshold=<процент_для_планового_увеличения>,`
                             `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
     ...
     ```
     
     Где:
     
     * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
     
        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
     
        Если вы задали этот параметр, настройте расписание технического обслуживания.
     
     * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
     
        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
     
     * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
     
        Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
     
     {% note warning %}
     
     Размер хранилища нельзя уменьшить после автоматического увеличения.
     
     {% endnote %}
     
     ## Статус кластера {#status}
     
     Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
     
     ## Предупреждение про зоны доступности и создание кластера {#note-warning}
     
     {% note warning %}
             
     Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
             
     {% endnote %}
     
     ## Настройка времени технического обслуживания {#maintenance}
     
     Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
     
     ```bash
     yc managed-kafka cluster create \
     ...
     --maintenance-window type=<тип_технического_обслуживания>,`
                         `day=<день_недели>,`
                         `hour=<порядковый_номер_часового_интервала> \
     ...
     ```
     
     Где `type` — тип технического обслуживания:
     
     * `anytime` (по умолчанию) — в любое время.
     * `weekly` — по расписанию. Для этого значения дополнительно укажите:
         * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
         * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
     
           > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
     
     ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
     
     {% note warning %}
                         
     Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                         
     {% endnote %}
     
     ## Защита кластера от удаления {#protect-from-deletion}
     
     {% note info %}
     
     Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
     
     {% endnote %}

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Чтобы создать кластер Managed Service for Apache Kafka®:

  1. Посмотрите описание команды CLI для создания кластера Managed Service for Apache Kafka®:

     ```bash
     yc managed-kafka cluster create --help
     ```

  1. Укажите параметры кластера Managed Service for Apache Kafka® в команде создания (в примере приведены не все параметры):

     
     ```bash
     yc managed-kafka cluster create \
        --name <имя_кластера> \
        --environment <окружение> \
        --version <версия> \
        --schema-registry \
        --network-name <имя_сети> \
        --subnet-ids <идентификаторы_подсетей> \
        --resource-preset <класс_хоста> \
        --disk-type <network-hdd|network-ssd|network-ssd-nonreplicated|local-ssd> \
        --disk-size <размер_хранилища_ГБ> \
        --assign-public-ip <разрешить_публичный_доступ_к_кластеру> \
        --security-group-ids <список_идентификаторов_групп_безопасности> \
        --deletion-protection \
        --kafka-ui-enabled <true_или_false> \
        --disk-encryption-key-id <идентификатор_ключа_KMS>
     ```


     Где:

     * `--environment` — окружение кластера: `prestable` или `production`.
     * `--version` — версия Apache Kafka®. Указывайте версию 3.6 и выше.
     * `--schema-registry` — управление схемами данных с помощью [Managed Schema Registry](../concepts/managed-schema-registry.md).

         {% note warning %}
         
         Невозможно отключить управление схемами данных с помощью Managed Schema Registry после его подключения.
         
         {% endnote %}
    
     * `--zone-ids` и `--brokers-count` — зоны доступности и число хостов-брокеров в каждой зоне. 


       
       Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), укажите конфигурацию `--zone-ids=<одна_зона_доступности> --brokers-count=3` — одна зона доступности, три хоста-брокера.


     * `--resource-preset` — [класс хостов](../concepts/instance-types.md).
     * `--disk-type` — [тип диска](../concepts/storage.md).

        {% note warning %}
        
        Тип диска нельзя изменить после создания кластера.
        
        {% endnote %}

     * `--deletion-protection` — защита кластера от непреднамеренного удаления: `true` или `false`.

        ## Окружение {#environment}
        
        Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
          * `PRODUCTION` — для стабильных версий приложений.
          * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
        
        ## Класс хостов {#broker-class}
        
        В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
        
        Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
        
        При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
        
        ## Конфигурация хостов по умолчанию {#default-config}
        
        По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
        
        * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
        * объем диска — `10` ГБ;
        * [тип диска](../concepts/storage.md) — `network-ssd`.
        
        ## Автоматическое увеличение размера хранилища {#auto-rescale}
        
        Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
        
        ```bash
        yc managed-kafka cluster create \
        ...
        --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                                `planned-usage-threshold=<процент_для_планового_увеличения>,`
                                `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
        ...
        ```
        
        Где:
        
        * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
        
           Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
        
           Если вы задали этот параметр, настройте расписание технического обслуживания.
        
        * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
        
           Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
        
        * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
        
           Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
        
        {% note warning %}
        
        Размер хранилища нельзя уменьшить после автоматического увеличения.
        
        {% endnote %}
        
        ## Статус кластера {#status}
        
        Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
        
        ## Предупреждение про зоны доступности и создание кластера {#note-warning}
        
        {% note warning %}
                
        Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
                
        {% endnote %}
        
        ## Настройка времени технического обслуживания {#maintenance}
        
        Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
        
        ```bash
        yc managed-kafka cluster create \
        ...
        --maintenance-window type=<тип_технического_обслуживания>,`
                            `day=<день_недели>,`
                            `hour=<порядковый_номер_часового_интервала> \
        ...
        ```
        
        Где `type` — тип технического обслуживания:
        
        * `anytime` (по умолчанию) — в любое время.
        * `weekly` — по расписанию. Для этого значения дополнительно укажите:
            * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
            * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
        
              > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
        
        ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
        
        {% note warning %}
                            
        Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                            
        {% endnote %}
        
        ## Защита кластера от удаления {#protect-from-deletion}
        
        {% note info %}
        
        Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
        
        {% endnote %}

     
     * `--kafka-ui-enabled` — использование [веб-интерфейса Kafka UI для Apache Kafka®](../concepts/kafka-ui.md): `true` или `false`.
     * `--disk-encryption-key-id` — идентификатор [пользовательского ключа KMS](../../kms/concepts/key.md). Чтобы зашифровать диск, передайте идентификатор ключа KMS в параметре. Подробнее о шифровании дисков в разделе [Хранилище](../concepts/storage.md#disk-encryption).
       
       {% note warning %}
          
       Включить шифрование дисков можно только при создании кластера.
          
       {% endnote %}


     {% note tip %}

     При необходимости здесь же можно задать [настройки Apache Kafka®](../concepts/settings-list.md#cluster-settings).

     {% endnote %}
  
  1. Чтобы использовать [KRaft (на отдельных хостах)](../concepts/kraft.md#cluster-topology) передайте конфигурацию хостов KRaft.
       
     ```bash
     yc managed-kafka cluster create \
         ...
         --controller-resource-preset <класс_хоста> \
         --controller-disk-size <размер_хранилища_ГБ> \
         --controller-disk-type <network-hdd|network-ssd|network-ssd-nonreplicated|local-ssd> \
         ...

     ```

     Где:
     * `--controller-resource-preset` — [класс хостов](../concepts/instance-types.md) KRaft.
     * `--controller-disk-size` — размер хранилища.
     * `--controller-disk-type` — [тип диска](../concepts/storage.md) KRaft.

  1. ## Окружение {#environment}
     
     Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
       * `PRODUCTION` — для стабильных версий приложений.
       * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
     
     ## Класс хостов {#broker-class}
     
     В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
     
     Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
     
     При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
     
     ## Конфигурация хостов по умолчанию {#default-config}
     
     По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
     
     * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
     * объем диска — `10` ГБ;
     * [тип диска](../concepts/storage.md) — `network-ssd`.
     
     ## Автоматическое увеличение размера хранилища {#auto-rescale}
     
     Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
     
     ```bash
     yc managed-kafka cluster create \
     ...
     --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                             `planned-usage-threshold=<процент_для_планового_увеличения>,`
                             `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
     ...
     ```
     
     Где:
     
     * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
     
        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
     
        Если вы задали этот параметр, настройте расписание технического обслуживания.
     
     * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
     
        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
     
     * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
     
        Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
     
     {% note warning %}
     
     Размер хранилища нельзя уменьшить после автоматического увеличения.
     
     {% endnote %}
     
     ## Статус кластера {#status}
     
     Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
     
     ## Предупреждение про зоны доступности и создание кластера {#note-warning}
     
     {% note warning %}
             
     Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
             
     {% endnote %}
     
     ## Настройка времени технического обслуживания {#maintenance}
     
     Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
     
     ```bash
     yc managed-kafka cluster create \
     ...
     --maintenance-window type=<тип_технического_обслуживания>,`
                         `day=<день_недели>,`
                         `hour=<порядковый_номер_часового_интервала> \
     ...
     ```
     
     Где `type` — тип технического обслуживания:
     
     * `anytime` (по умолчанию) — в любое время.
     * `weekly` — по расписанию. Для этого значения дополнительно укажите:
         * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
         * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
     
           > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
     
     ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
     
     {% note warning %}
                         
     Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                         
     {% endnote %}
     
     ## Защита кластера от удаления {#protect-from-deletion}
     
     {% note info %}
     
     Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
     
     {% endnote %}

  1. ## Окружение {#environment}
     
     Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
       * `PRODUCTION` — для стабильных версий приложений.
       * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
     
     ## Класс хостов {#broker-class}
     
     В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
     
     Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
     
     При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
     
     ## Конфигурация хостов по умолчанию {#default-config}
     
     По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
     
     * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
     * объем диска — `10` ГБ;
     * [тип диска](../concepts/storage.md) — `network-ssd`.
     
     ## Автоматическое увеличение размера хранилища {#auto-rescale}
     
     Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
     
     ```bash
     yc managed-kafka cluster create \
     ...
     --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                             `planned-usage-threshold=<процент_для_планового_увеличения>,`
                             `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
     ...
     ```
     
     Где:
     
     * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
     
        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
     
        Если вы задали этот параметр, настройте расписание технического обслуживания.
     
     * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
     
        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
     
     * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
     
        Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
     
     {% note warning %}
     
     Размер хранилища нельзя уменьшить после автоматического увеличения.
     
     {% endnote %}
     
     ## Статус кластера {#status}
     
     Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
     
     ## Предупреждение про зоны доступности и создание кластера {#note-warning}
     
     {% note warning %}
             
     Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
             
     {% endnote %}
     
     ## Настройка времени технического обслуживания {#maintenance}
     
     Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
     
     ```bash
     yc managed-kafka cluster create \
     ...
     --maintenance-window type=<тип_технического_обслуживания>,`
                         `day=<день_недели>,`
                         `hour=<порядковый_номер_часового_интервала> \
     ...
     ```
     
     Где `type` — тип технического обслуживания:
     
     * `anytime` (по умолчанию) — в любое время.
     * `weekly` — по расписанию. Для этого значения дополнительно укажите:
         * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
         * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
     
           > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
     
     ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
     
     {% note warning %}
                         
     Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                         
     {% endnote %}
     
     ## Защита кластера от удаления {#protect-from-deletion}
     
     {% note info %}
     
     Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
     
     {% endnote %}


- Terraform {#tf}

  [Terraform](https://www.terraform.io/) позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.
  
  Terraform распространяется под лицензией [Business Source License](https://github.com/hashicorp/terraform/blob/main/LICENSE), а [провайдер Yandex Cloud для Terraform](https://github.com/yandex-cloud/terraform-provider-yandex) — под лицензией [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/).
  
  Подробная информация о ресурсах провайдера в документации на сайте [Terraform](https://www.terraform.io/docs/providers/yandex/index.html) или в [зеркале](../../terraform/index.md).

  Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../terraform/authentication.md) соответствующим способом.

  Чтобы создать кластер Managed Service for Apache Kafka®:
  1. Опишите в конфигурационном файле создаваемые ресурсы:
     * Кластер Managed Service for Apache Kafka® — описание кластера и его хостов. При необходимости здесь же можно задать [настройки Apache Kafka®](../concepts/settings-list.md#cluster-settings).

     * Сеть — описание [облачной сети](../../vpc/concepts/network.md#network), в которой будет расположен кластер. Если подходящая сеть у вас уже есть, описывать ее повторно не нужно.

     * Подсети — описание [подсетей](../../vpc/concepts/network.md#subnet), к которым будут подключены хосты кластера. Если подходящие подсети у вас уже есть, описывать их повторно не нужно.

     Пример структуры конфигурационного файла:

     
     ```hcl
     resource "yandex_mdb_kafka_cluster" "<имя_кластера>" {
       environment         = "<окружение>"
       name                = "<имя_кластера>"
       network_id          = "<идентификатор_сети>"
       subnet_ids          = ["<список_идентификаторов_подсетей>"]
       security_group_ids  = ["<список_идентификаторов_групп_безопасности_кластера>"]
       deletion_protection = <защитить_кластер_от_удаления>

       config {
         version          = "<версия>"
         zones            = ["<зоны_доступности>"]
         brokers_count    = <количество_хостов-брокеров>
         assign_public_ip = "<разрешить_публичный_доступ_к_кластеру>"
         schema_registry  = "<включить_управление_схемами_данных>"
         kafka_ui {
           enabled = <использовать_веб-интерфейс_Kafka_UI>
         }
         kafka {
           resources {
             disk_size          = <размер_хранилища_ГБ>
             disk_type_id       = "<тип_диска>"
             resource_preset_id = "<класс_хоста>"
           }
           kafka_config {}
         }
       }
     }

     resource "yandex_vpc_network" "<имя_сети>" {
       name = "<имя_сети>"
     }

     resource "yandex_vpc_subnet" "<имя_подсети>" {
       name           = "<имя_подсети>"
       zone           = "<зона_доступности>"
       network_id     = "<идентификатор_сети>"
       v4_cidr_blocks = ["<диапазон>"]
     }
     ```


     Где:

     * `environment` — окружение кластера: `PRESTABLE` или `PRODUCTION`.
     * `version` — версия Apache Kafka®. Указывайте версию 3.6 и выше.
     * `zones` и `brokers_count` — зоны доступности и число хостов-брокеров в каждой зоне.


       
       Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), укажите конфигурацию `zones = ["<одна_зона_доступности>"] brokers_count = 3` — одна зона доступности, три хоста-брокера.


     * `deletion_protection` — защита кластера от непреднамеренного удаления: `true` или `false`.

       ## Окружение {#environment}
       
       Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
         * `PRODUCTION` — для стабильных версий приложений.
         * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
       
       ## Класс хостов {#broker-class}
       
       В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
       
       Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
       
       При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
       
       ## Конфигурация хостов по умолчанию {#default-config}
       
       По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
       
       * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
       * объем диска — `10` ГБ;
       * [тип диска](../concepts/storage.md) — `network-ssd`.
       
       ## Автоматическое увеличение размера хранилища {#auto-rescale}
       
       Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
       
       ```bash
       yc managed-kafka cluster create \
       ...
       --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                               `planned-usage-threshold=<процент_для_планового_увеличения>,`
                               `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
       ...
       ```
       
       Где:
       
       * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
       
          Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
       
          Если вы задали этот параметр, настройте расписание технического обслуживания.
       
       * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
       
          Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
       
       * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
       
          Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
       
       {% note warning %}
       
       Размер хранилища нельзя уменьшить после автоматического увеличения.
       
       {% endnote %}
       
       ## Статус кластера {#status}
       
       Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
       
       ## Предупреждение про зоны доступности и создание кластера {#note-warning}
       
       {% note warning %}
               
       Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
               
       {% endnote %}
       
       ## Настройка времени технического обслуживания {#maintenance}
       
       Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
       
       ```bash
       yc managed-kafka cluster create \
       ...
       --maintenance-window type=<тип_технического_обслуживания>,`
                           `day=<день_недели>,`
                           `hour=<порядковый_номер_часового_интервала> \
       ...
       ```
       
       Где `type` — тип технического обслуживания:
       
       * `anytime` (по умолчанию) — в любое время.
       * `weekly` — по расписанию. Для этого значения дополнительно укажите:
           * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
           * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
       
             > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
       
       ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
       
       {% note warning %}
                           
       Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                           
       {% endnote %}
       
       ## Защита кластера от удаления {#protect-from-deletion}
       
       {% note info %}
       
       Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
       
       {% endnote %}

     
     * `assign_public_ip` — публичный доступ к кластеру: `true` или `false`.


     * `schema_registry` — управление схемами данных с помощью [Managed Schema Registry](../concepts/managed-schema-registry.md): `true` или `false`. Значение по умолчанию — `false`.

       {% note warning %}
       
       Невозможно отключить управление схемами данных с помощью Managed Schema Registry после его подключения.
       
       {% endnote %}

       

     * `kafka_ui` — использование [веб-интерфейса Kafka UI для Apache Kafka®](../concepts/kafka-ui.md): `true` или `false`. Значение по умолчанию — `false`.


     Чтобы использовать [KRaft (на отдельных хостах)](../concepts/kraft.md#cluster-topology), добавьте к описанию кластера блок `kraft`:

     ```hcl
     resource "yandex_mdb_kafka_cluster" "<имя_кластера>" {
       ...
       kraft {
         resources {
           resource_preset_id = "<класс_хоста>"
           disk_type_id       = "<тип_диска>"
           disk_size          = <размер_хранилища_ГБ>
         }
       }
     }
     ```

     Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров), добавьте к описанию кластера блок `maintenance_window`:
     
     ```hcl
     resource "yandex_mdb_kafka_cluster" "<имя_кластера>" {
       ...
       maintenance_window {
         type = "<тип_технического_обслуживания>"
         day  = "<день_недели>"
         hour = <порядковый_номер_часового_интервала>
       }
       ...
     }
     ```
     
     Где:
     
     * `type` — тип технического обслуживания. Принимает значения:
         * `ANYTIME` — в любое время.
         * `WEEKLY` — по расписанию.
     * `day` — день недели для типа `WEEKLY`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
     * `hour` — порядковый номер часового интервала по UTC для типа `WEEKLY`: от `1` до `24`.
     
       > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

     
     Чтобы зашифровать диски [пользовательским ключом KMS](../../kms/concepts/key.md), добавьте параметр `disk_encryption_key_id`:
     
     ```hcl
     resource "yandex_mdb_kafka_cluster" "<имя_кластера>" {
         ...
         disk_encryption_key_id = <идентификатор_ключа_KMS>
         ...
     }
     ```
     
     Подробнее о шифровании дисков читайте в разделе [Хранилище](../concepts/storage.md#disk-encryption).


  1. Проверьте корректность настроек.

     1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
     1. Выполните команду:
     
        ```bash
        terraform validate
        ```
     
        Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  1. Создайте кластер Managed Service for Apache Kafka®.

     1. Выполните команду для просмотра планируемых изменений:
     
        ```bash
        terraform plan
        ```
     
        Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
     
     1. Если вас устраивают планируемые изменения, внесите их:
        1. Выполните команду:
     
           ```bash
           terraform apply
           ```
     
        1. Подтвердите изменение ресурсов.
        1. Дождитесь завершения операции.

     После этого в указанном каталоге будут созданы все требуемые ресурсы, а в терминале отобразятся [FQDN хостов кластера Managed Service for Apache Kafka®](../concepts/network.md#hostname). Проверить появление ресурсов и их настройки можно в [консоли управления](https://kz.console.yandex.cloud).

  Подробнее в [документации провайдера Terraform](../../terraform/resources/mdb_kafka_cluster.md).

  {% note warning "Ограничения по времени" %}
  
  Провайдер Terraform ограничивает время на выполнение всех операций с кластером Managed Service for Apache Kafka® 60 минутами.
  
  Операции, длящиеся дольше указанного времени, прерываются.
  
  {% cut "Как изменить эти ограничения?" %}
  
  Добавьте к описанию кластера блок `timeouts`, например:
  
  ```hcl
  resource "yandex_mdb_kafka_cluster" "<имя_кластера>" {
    ...
    timeouts {
      create = "1h30m" # Полтора часа
      update = "2h"    # 2 часа
      delete = "30m"   # 30 минут
    }
  }
  ```
  
  {% endcut %}
  
  {% endnote %}

- REST API {#api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Воспользуйтесь методом [Cluster.create](../api-ref/Cluster/create.md) и выполните запрос, например, с помощью [cURL](https://curl.se/):

        1. Создайте файл `body.json` и добавьте в него следующее содержимое:

            {% note info %}

            В примере приведены не все доступные параметры.

            {% endnote %}

            
            ```json
            {
              "folderId": "<идентификатор_каталога>",
              "name": "<имя_кластера>",
              "environment": "<окружение>",
              "networkId": "<идентификатор_сети>",
              "securityGroupIds": [
                "<идентификатор_группы_безопасности_1>",
                "<идентификатор_группы_безопасности_2>",
                ...
                "<идентификатор_группы_безопасности_N>"
              ],
              "configSpec": {
                "version": "<версия_Apache Kafka®>",
                "kafka": {
                  "resources": {
                    "resourcePresetId": "<класс_хостов Apache Kafka®>",
                    "diskSize": "<размер_хранилища_в_байтах>",
                    "diskTypeId": "<тип_диска>"
                  }
                },
                "kraft": {
                  "resources": {
                    "resourcePresetId": "<класс_хостов KRaft>",
                    "diskSize": "<размер_хранилища_в_байтах>",
                    "diskTypeId": "<тип_диска>"                   
                  }
                },
                "zoneId": [
                  <список_зон_доступности>
                ],
                "brokersCount": "<количество_брокеров_в_зоне>",
                "assignPublicIp": <разрешить_публичный_доступ_к_кластеру>,
                "schemaRegistry": <включить_управление_схемами_данных>,
                "restApiConfig": {
                  "enabled": <включить_отправку_запросов_к_API_Apache Kafka®>
                },
                "diskSizeAutoscaling": {
                  <параметры_автоматического_увеличения_размера_хранилища>
                },
                "kafkaUiConfig": {
                  "enabled": <использовать_веб-интерфейс_Kafka_UI>
                }
              },
              "topicSpecs": [
                {
                  "name": "<имя_топика>",
                  "partitions": "<количество_партиций>",
                  "replicationFactor": "<фактор_репликации>"
                },
                { <аналогичный_набор_настроек_для_топика_2> },
                { ... },
                { <аналогичный_набор_настроек_для_топика_N> }
              ],
              "userSpecs": [
                {
                  "name": "<имя_пользователя>",
                  "password": "<пароль_пользователя>",
                  "permissions": [
                    {
                      "topicName": "<имя_топика>",
                      "role": "<роль_пользователя>"
                    }
                  ]
                },
                { <аналогичный_набор_настроек_для_пользователя_2> },
                { ... },
                { <аналогичный_набор_настроек_для_пользователя_N> }
              ],
              "maintenanceWindow": {
                "anytime": {},
                "weeklyMaintenanceWindow": {
                  "day": "<день_недели>",
                  "hour": "<порядковый_номер_часового_интервала>"
                }
              },
              "deletionProtection": <защитить_кластер_от_удаления>,
              "diskEncryptionKeyId": "<идентификатор_ключа_KMS>"
            }
            ```


            Где:

            * `name` — имя кластера.
            * `environment` — окружение кластера: `PRODUCTION` или `PRESTABLE`.
            * `networkId` — идентификатор [сети](../../vpc/concepts/network.md), в которой будет размещен кластер.

            
            * `securityGroupIds` — идентификаторы [групп безопасности](../../vpc/concepts/security-groups.md) в виде массива строк. Каждая строка — идентификатор группы безопасности.


            * `configSpec` — конфигурация кластера:

                * `version` — версия Apache Kafka®. Указывайте версию 3.6 и выше.
                * `kafka` — конфигурация Apache Kafka®:

                    * `resources.resourcePresetId` — идентификатор [класса хостов](../concepts/instance-types.md). Список доступных классов хостов с их идентификаторами можно запросить с помощью метода [ResourcePreset.list](../api-ref/ResourcePreset/list.md).
                    * `resources.diskSize` — размер диска в байтах.
                    * `resources.diskTypeId` — [тип диска](../concepts/storage.md).

                * `kraft` — конфигурация [KRaft](../concepts/kraft.md):

                    * `resources.resourcePresetId` — идентификатор класса хостов. Список доступных классов хостов с их идентификаторами можно запросить с помощью метода [ResourcePreset.list](../api-ref/ResourcePreset/list.md).
                    * `resources.diskSize` — размер диска в байтах.
                    * `resources.diskTypeId` — тип диска.

                    ## Окружение {#environment}
                    
                    Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
                      * `PRODUCTION` — для стабильных версий приложений.
                      * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
                    
                    ## Класс хостов {#broker-class}
                    
                    В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
                    
                    Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
                    
                    При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
                    
                    ## Конфигурация хостов по умолчанию {#default-config}
                    
                    По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
                    
                    * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
                    * объем диска — `10` ГБ;
                    * [тип диска](../concepts/storage.md) — `network-ssd`.
                    
                    ## Автоматическое увеличение размера хранилища {#auto-rescale}
                    
                    Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
                    
                    ```bash
                    yc managed-kafka cluster create \
                    ...
                    --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                                            `planned-usage-threshold=<процент_для_планового_увеличения>,`
                                            `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
                    ...
                    ```
                    
                    Где:
                    
                    * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
                    
                       Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
                    
                       Если вы задали этот параметр, настройте расписание технического обслуживания.
                    
                    * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
                    
                       Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
                    
                    * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
                    
                       Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
                    
                    {% note warning %}
                    
                    Размер хранилища нельзя уменьшить после автоматического увеличения.
                    
                    {% endnote %}
                    
                    ## Статус кластера {#status}
                    
                    Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
                    
                    ## Предупреждение про зоны доступности и создание кластера {#note-warning}
                    
                    {% note warning %}
                            
                    Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
                            
                    {% endnote %}
                    
                    ## Настройка времени технического обслуживания {#maintenance}
                    
                    Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
                    
                    ```bash
                    yc managed-kafka cluster create \
                    ...
                    --maintenance-window type=<тип_технического_обслуживания>,`
                                        `day=<день_недели>,`
                                        `hour=<порядковый_номер_часового_интервала> \
                    ...
                    ```
                    
                    Где `type` — тип технического обслуживания:
                    
                    * `anytime` (по умолчанию) — в любое время.
                    * `weekly` — по расписанию. Для этого значения дополнительно укажите:
                        * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
                        * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
                    
                          > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
                    
                    ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
                    
                    {% note warning %}
                                        
                    Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                                        
                    {% endnote %}
                    
                    ## Защита кластера от удаления {#protect-from-deletion}
                    
                    {% note info %}
                    
                    Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
                    
                    {% endnote %}


                * `zoneId` и `brokersCount` – зоны доступности и число хостов-брокеров в каждой зоне.


                  
                  Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), укажите конфигурацию `"zoneId": ["<одна_зона_доступности>"], "brokersCount": "3"` — одна зона доступности, три хоста-брокера.


                
                * `assignPublicIp` — доступность хостов-брокеров из интернета: `true` или `false`.


                * `schemaRegistry` – управлять схемами данных с помощью [Managed Schema Registry](../concepts/managed-schema-registry.md): `true` или `false`. Значение по умолчанию — `false`. Эту настройку невозможно изменить после создания кластера Managed Service for Apache Kafka®.
                * `restApiConfig` – конфигурация Apache Kafka® REST API. Для доступа к отправке запросов к REST API Apache Kafka® укажите `enabled: true`.
                * `diskSizeAutoscaling` – [пороги заполненности](../concepts/storage.md#auto-rescale) хранилища (в процентах от общего объема хранилища), при достижении которых его размер будет увеличиваться:

                  * `plannedUsageThreshold` – процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно обслуживания](../concepts/maintenance.md#maintenance-window).
                  
                      Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
                  
                      Если вы задали этот параметр, настройте расписание окна технического обслуживания.
                  
                  * `emergencyUsageThreshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
                  
                    Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `plannedUsageThreshold`.
                  
                  * `diskSizeLimit` – максимальный размер хранилища (в байтах), который может быть установлен при достижении одного из заданных процентов заполнения.

                  

                * `kafkaUiConfig` — использование [веб-интерфейса Kafka UI](../concepts/kafka-ui.md). Для доступа к веб-интерфейсу Kafka UI укажите `enabled: true`.


            * `topicSpecs` — настройки топиков в виде массива элементов. Каждый элемент соответствует отдельному топику и имеет следующую структуру:

                * `name` — имя топика.
                
                    {% note info %}
                    
                    Если нужно создать топик, начинающийся с символа `_`, используйте [Admin API Apache Kafka®](cluster-topics.md#admin-api). Создать такой топик с помощью интерфейсов Yandex Cloud нельзя.
                    
                    {% endnote %}
                
                * `partitions` – количество разделов.
                * `replicationFactor` – фактор репликации.

            * `userSpecs` — настройки пользователей в виде массива элементов. Каждый элемент соответствует отдельному пользователю и имеет следующую структуру:

                * `name` — имя пользователя. Оно может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания.
                * `password` — пароль пользователя. Длина пароля от 8 до 128 символов.
                * `permissions` — список топиков, к которым пользователь должен иметь доступ.
                
                  Список организован в виде массива элементов. Каждый элемент соответствует отдельному топику и имеет следующую структуру:
                
                  * `topicName` – имя или шаблон имени топика:
                    * `*` — чтобы разрешить доступ к любым топикам.
                    * Полное название топика — чтобы разрешить доступ конкретно к нему.
                    * `<префикс>*` — чтобы выдать доступ к топикам, названия которых начинаются с указанного префикса. Допустим, есть топики `topic_a1`, `topic_a2`, `a3`. Если указать значение `topic*`, доступ будет разрешен для топиков `topic_a1` и `topic_a2`.Для указания всех топиков в кластере используйте маску `*`.
                  * `role` – роль пользователя: `ACCESS_ROLE_CONSUMER`, `ACCESS_ROLE_PRODUCER` или `ACCESS_ROLE_ADMIN`. Роль `ACCESS_ROLE_ADMIN` доступна только если выбраны все топики (`topicName: "*"`).
                  * `allowHosts` – (опционально) список IP-адресов, с которых пользователю разрешен доступ к топику.

            * `maintenanceWindow` — настройки времени [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров). Выберите один из вариантов:

                * `anytime` — (по умолчанию) — в любое время.
                * `weeklyMaintenanceWindow` — по расписанию:
                    * `day` — день недели в формате `DDD`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
                    * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.

                      > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

            * `deletionProtection` — защита кластера от непреднамеренного удаления: `true` или `false`. Значение по умолчанию — `false`.

                ## Окружение {#environment}
                
                Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
                  * `PRODUCTION` — для стабильных версий приложений.
                  * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
                
                ## Класс хостов {#broker-class}
                
                В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
                
                Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
                
                При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
                
                ## Конфигурация хостов по умолчанию {#default-config}
                
                По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
                
                * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
                * объем диска — `10` ГБ;
                * [тип диска](../concepts/storage.md) — `network-ssd`.
                
                ## Автоматическое увеличение размера хранилища {#auto-rescale}
                
                Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
                
                ```bash
                yc managed-kafka cluster create \
                ...
                --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                                        `planned-usage-threshold=<процент_для_планового_увеличения>,`
                                        `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
                ...
                ```
                
                Где:
                
                * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
                
                   Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
                
                   Если вы задали этот параметр, настройте расписание технического обслуживания.
                
                * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
                
                   Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
                
                * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
                
                   Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
                
                {% note warning %}
                
                Размер хранилища нельзя уменьшить после автоматического увеличения.
                
                {% endnote %}
                
                ## Статус кластера {#status}
                
                Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
                
                ## Предупреждение про зоны доступности и создание кластера {#note-warning}
                
                {% note warning %}
                        
                Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
                        
                {% endnote %}
                
                ## Настройка времени технического обслуживания {#maintenance}
                
                Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
                
                ```bash
                yc managed-kafka cluster create \
                ...
                --maintenance-window type=<тип_технического_обслуживания>,`
                                    `day=<день_недели>,`
                                    `hour=<порядковый_номер_часового_интервала> \
                ...
                ```
                
                Где `type` — тип технического обслуживания:
                
                * `anytime` (по умолчанию) — в любое время.
                * `weekly` — по расписанию. Для этого значения дополнительно укажите:
                    * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
                    * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
                
                      > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
                
                ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
                
                {% note warning %}
                                    
                Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                                    
                {% endnote %}
                
                ## Защита кластера от удаления {#protect-from-deletion}
                
                {% note info %}
                
                Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
                
                {% endnote %}
            
            
            * `diskEncryptionKeyId` — идентификатор [пользовательского ключа KMS](../../kms/concepts/key.md). Чтобы зашифровать диски, передайте идентификатор ключа KMS. Подробнее о шифровании дисков в разделе [Шифрование диска](../concepts/storage.md#disk-encryption).

              {% note warning %}
                  
              Включить шифрование дисков можно только при создании кластера.
                  
              {% endnote %}


            
            Идентификатор каталога можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md).


        1. Выполните запрос:

            ```bash
            curl \
              --request POST \
              --header "Authorization: Bearer $IAM_TOKEN" \
              --header "Content-Type: application/json" \
              --url 'https://mdb.api.yandexcloud.kz/managed-kafka/v1/clusters' \
              --data '@body.json'
            ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/create.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

    1. Воспользуйтесь вызовом [ClusterService/Сreate](../api-ref/grpc/Cluster/create.md) и выполните запрос, например, с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

        1. Создайте файл `body.json` и добавьте в него следующее содержимое:

            {% note info %}

            В примере приведены не все доступные параметры.

            {% endnote %}

            
            ```json
            {
              "folder_id": "<идентификатор_каталога>",
              "name": "<имя_кластера>",
              "environment": "<окружение>",
              "network_id": "<идентификатор_сети>",
              "security_group_ids": [
                "<идентификатор_группы_безопасности_1>",
                "<идентификатор_группы_безопасности_2>",
                ...
                "<идентификатор_группы_безопасности_N>"
              ],
              "config_spec": {
                "version": "<версия_Apache Kafka®>",
                "kafka": {
                  "resources": {
                    "resource_preset_id": "<класс_хостов Apache Kafka®>",
                    "disk_size": "<размер_хранилища_в_байтах>",
                    "disk_type_id": "<тип_диска>"
                  }
                },
                "kraft": {
                  "resources": {
                    "resource_preset_id": "<класс_хостов KRaft>",
                    "disk_size": "<размер_хранилища_в_байтах>",
                    "disk_type_id": "<тип_диска>"                   
                  }
                },
                "zone_id": [
                  <список_зон_доступности>
                ],
                "brokers_count": {
                  "value": "<количество_брокеров_в_зоне>"
                },
                "assign_public_ip": <разрешить_публичный_доступ_к_кластеру>,
                "schema_registry": <включить_управление_схемами_данных>,
                "rest_api_config": {
                  "enabled": <включить_отправку_запросов_к_API_Apache Kafka®>
                },
                "disk_size_autoscaling": {
                  <параметры_автоматического_увеличения_размера_хранилища>
                },
                "kafka_ui_config": {
                  "enabled": <использовать_веб-интерфейс_Kafka_UI>
                }
              },
              "topic_specs": [
                {
                  "name": "<имя_топика>",
                  "partitions": {
                    "value": "<количество_партиций>"
                  },
                  "replication_factor": {
                    "value": "<фактор_репликации>"
                  }
                },
                { <аналогичный_набор_настроек_для_топика_2> },
                { ... },
                { <аналогичный_набор_настроек_для_топика_N> }
              ],
              "user_specs": [
                {
                  "name": "<имя_пользователя>",
                  "password": "<пароль_пользователя>",
                  "permissions": [
                    {
                      "topic_name": "<имя_топика>",
                      "role": "<роль_пользователя>"
                    }
                  ]
                },
                { <аналогичный_набор_настроек_для_пользователя_2> },
                { ... },
                { <аналогичный_набор_настроек_для_пользователя_N> }
              ],
              "maintenance_window": {
                "anytime": {},
                "weekly_maintenance_window": {
                  "day": "<день_недели>",
                  "hour": "<порядковый_номер_часового_интервала>"
                }
              },
              "deletion_protection": <защитить_кластер_от_удаления>,
              "disk_encryption_key_id": "<идентификатор_ключа_KMS>"
            }
            ```


            Где:

            * `name` — имя кластера.
            * `environment` — окружение кластера: `PRODUCTION` или `PRESTABLE`.
            * `network_id` — идентификатор [сети](../../vpc/concepts/network.md), в которой будет размещен кластер.

            
            * `security_group_ids` — идентификаторы [групп безопасности](../../vpc/concepts/security-groups.md) в виде массива строк. Каждая строка — идентификатор группы безопасности.


            * `config_spec` — конфигурация кластера:

                * `version` — версия Apache Kafka®. Указывайте версию 3.6 и выше.
                * `kafka` — конфигурация Apache Kafka®:

                    * `resources.resource_preset_id` — идентификатор [класса хостов](../concepts/instance-types.md). Список доступных классов хостов с их идентификаторами можно запросить с помощью вызова [ResourcePreset.list](../api-ref/grpc/ResourcePreset/list.md).
                    * `resources.disk_size` — размер диска в байтах.
                    * `resources.disk_type_id` — [тип диска](../concepts/storage.md).

                * `kraft` — конфигурация [KRaft](../concepts/kraft.md):

                    * `resources.resource_preset_id` — идентификатор класса хостов. Список доступных классов хостов с их идентификаторами можно запросить с помощью вызова [ResourcePreset.list](../api-ref/grpc/ResourcePreset/list.md).
                    * `resources.disk_size` — размер диска в байтах.
                    * `resources.disk_type_id` — тип диска.
                    
                    ## Окружение {#environment}
                    
                    Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
                      * `PRODUCTION` — для стабильных версий приложений.
                      * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
                    
                    ## Класс хостов {#broker-class}
                    
                    В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
                    
                    Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
                    
                    При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
                    
                    ## Конфигурация хостов по умолчанию {#default-config}
                    
                    По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
                    
                    * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
                    * объем диска — `10` ГБ;
                    * [тип диска](../concepts/storage.md) — `network-ssd`.
                    
                    ## Автоматическое увеличение размера хранилища {#auto-rescale}
                    
                    Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
                    
                    ```bash
                    yc managed-kafka cluster create \
                    ...
                    --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                                            `planned-usage-threshold=<процент_для_планового_увеличения>,`
                                            `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
                    ...
                    ```
                    
                    Где:
                    
                    * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
                    
                       Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
                    
                       Если вы задали этот параметр, настройте расписание технического обслуживания.
                    
                    * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
                    
                       Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
                    
                    * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
                    
                       Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
                    
                    {% note warning %}
                    
                    Размер хранилища нельзя уменьшить после автоматического увеличения.
                    
                    {% endnote %}
                    
                    ## Статус кластера {#status}
                    
                    Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
                    
                    ## Предупреждение про зоны доступности и создание кластера {#note-warning}
                    
                    {% note warning %}
                            
                    Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
                            
                    {% endnote %}
                    
                    ## Настройка времени технического обслуживания {#maintenance}
                    
                    Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
                    
                    ```bash
                    yc managed-kafka cluster create \
                    ...
                    --maintenance-window type=<тип_технического_обслуживания>,`
                                        `day=<день_недели>,`
                                        `hour=<порядковый_номер_часового_интервала> \
                    ...
                    ```
                    
                    Где `type` — тип технического обслуживания:
                    
                    * `anytime` (по умолчанию) — в любое время.
                    * `weekly` — по расписанию. Для этого значения дополнительно укажите:
                        * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
                        * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
                    
                          > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
                    
                    ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
                    
                    {% note warning %}
                                        
                    Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                                        
                    {% endnote %}
                    
                    ## Защита кластера от удаления {#protect-from-deletion}
                    
                    {% note info %}
                    
                    Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
                    
                    {% endnote %}


                * `zone_id` и `brokers_count` – зоны доступности и число хостов-брокеров в каждой зоне (число передается в виде объекта с полем `value`).


                  
                  Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), укажите конфигурацию `"zone_id": ["<одна_зона_доступности>"], "brokers_count": {"value":"3"}` — одна зона доступности, три хоста-брокера.


                
                * `assign_public_ip` — доступность хостов-брокеров из интернета: `true` или `false`.


                * `schema_registry` – управлять схемами данных с помощью [Managed Schema Registry](../concepts/managed-schema-registry.md): `true` или `false`. Значение по умолчанию — `false`. Эту настройку невозможно изменить после создания кластера Managed Service for Apache Kafka®.
                * `rest_api_config` – конфигурация Apache Kafka® REST API. Для доступа к отправке запросов к REST API Apache Kafka® укажите `enabled: true`.
                * `disk_size_autoscaling` – чтобы в кластере не заканчивалось место на диске, укажите [пороги заполненности](../concepts/storage.md#auto-rescale) хранилища (в процентах от общего объема хранилища), при достижении которых его размер будет увеличиваться:

                  * `planned_usage_threshold` – процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно обслуживания](../concepts/maintenance.md#maintenance-window).
                  
                      Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
                  
                      Если вы задали этот параметр, настройте расписание окна технического обслуживания.
                  
                  * `emergency_usage_threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
                  
                    Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned_usage_threshold`.
                  
                  * `disk_size_limit` – максимальный размер хранилища (в байтах), который может быть установлен при достижении одного из заданных процентов заполнения.

                  

                * `kafka_ui_config` — использование [веб-интерфейса Kafka UI](../concepts/kafka-ui.md). Для доступа к веб-интерфейсу Kafka UI укажите `enabled: true`.


            * `topic_specs` — настройки топиков в виде массива элементов. Каждый элемент соответствует отдельному топику и имеет следующую структуру:

                * `name` — имя топика.
                
                    {% note info %}
                    
                    Если нужно создать топик, начинающийся с символа `_`, используйте [Admin API Apache Kafka®](cluster-topics.md#admin-api). Создать такой топик с помощью интерфейсов Yandex Cloud нельзя.
                    
                    {% endnote %}
                
                * `partitions` – количество разделов. Передается в виде объекта с полем `value`.
                * `replication_factor` – фактор репликации. Передается в виде объекта с полем `value`.

            * `user_specs` — настройки пользователей в виде массива элементов. Каждый элемент соответствует отдельному пользователю и имеет следующую структуру:

                * `name` — имя пользователя. Оно может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания.
                * `password` — пароль пользователя. Длина пароля от 8 до 128 символов.
                * `permissions` — список топиков, к которым пользователь должен иметь доступ.
                
                  Список организован в виде массива элементов. Каждый элемент соответствует отдельному топику и имеет следующую структуру:
                
                  * `topic_name` – имя или шаблон имени топика:
                    * `*` — чтобы разрешить доступ к любым топикам.
                    * Полное название топика — чтобы разрешить доступ конкретно к нему.
                    * `<префикс>*` — чтобы выдать доступ к топикам, названия которых начинаются с указанного префикса. Допустим, есть топики `topic_a1`, `topic_a2`, `a3`. Если указать значение `topic*`, доступ будет разрешен для топиков `topic_a1` и `topic_a2`.Для указания всех топиков в кластере используйте маску `*`.
                  * `role` – роль пользователя: `ACCESS_ROLE_CONSUMER`, `ACCESS_ROLE_PRODUCER` или `ACCESS_ROLE_ADMIN`. Роль `ACCESS_ROLE_ADMIN` доступна только если выбраны все топики (`topicName: "*"`).
                  * `allow_hosts` – (опционально) список IP-адресов, с которых пользователю разрешен доступ к топику, в виде массива элементов.

            * `maintenance_window` — настройки времени [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров). Выберите один из вариантов:

                * `anytime` — (по умолчанию) — в любое время.
                * `weekly_maintenance_window` — по расписанию:
                    * `day` — день недели в формате `DDD`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
                    * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.

                      > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

            * `deletion_protection` — защита кластера от непреднамеренного удаления: `true` или `false`. Значение по умолчанию — `false`.

                ## Окружение {#environment}
                
                Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
                  * `PRODUCTION` — для стабильных версий приложений.
                  * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
                
                ## Класс хостов {#broker-class}
                
                В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.
                
                Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры Apache Kafka®. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
                
                При [изменении класса хостов](cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.
                
                ## Конфигурация хостов по умолчанию {#default-config}
                
                По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:
                
                * [класс хоста](../concepts/instance-types.md) — `s3-c2-m8`;
                * объем диска — `10` ГБ;
                * [тип диска](../concepts/storage.md) — `network-ssd`.
                
                ## Автоматическое увеличение размера хранилища {#auto-rescale}
                
                Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale):
                
                ```bash
                yc managed-kafka cluster create \
                ...
                --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                                        `planned-usage-threshold=<процент_для_планового_увеличения>,`
                                        `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
                ...
                ```
                
                Где:
                
                * `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
                
                   Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
                
                   Если вы задали этот параметр, настройте расписание технического обслуживания.
                
                * `emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
                
                   Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.
                
                * `disk-size-limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
                
                   Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
                
                {% note warning %}
                
                Размер хранилища нельзя уменьшить после автоматического увеличения.
                
                {% endnote %}
                
                ## Статус кластера {#status}
                
                Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.
                
                ## Предупреждение про зоны доступности и создание кластера {#note-warning}
                
                {% note warning %}
                        
                Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
                        
                {% endnote %}
                
                ## Настройка времени технического обслуживания {#maintenance}
                
                Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:
                
                ```bash
                yc managed-kafka cluster create \
                ...
                --maintenance-window type=<тип_технического_обслуживания>,`
                                    `day=<день_недели>,`
                                    `hour=<порядковый_номер_часового_интервала> \
                ...
                ```
                
                Где `type` — тип технического обслуживания:
                
                * `anytime` (по умолчанию) — в любое время.
                * `weekly` — по расписанию. Для этого значения дополнительно укажите:
                    * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
                    * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
                
                      > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
                
                ## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}
                
                {% note warning %}
                                    
                Если вы создаете кластер с [KRaft (комбинированный режим)](../concepts/kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                                    
                {% endnote %}
                
                ## Защита кластера от удаления {#protect-from-deletion}
                
                {% note info %}
                
                Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.
                
                {% endnote %}
            
            
            * `disk_encryption_key_id` — идентификатор [пользовательского ключа KMS](../../kms/concepts/key.md). Чтобы зашифровать диски, передайте идентификатор ключа KMS. Подробнее о шифровании дисков в разделе [Шифрование диска](../concepts/storage.md#disk-encryption).

              {% note warning %}
                  
              Включить шифрование дисков можно только при создании кластера.
                  
              {% endnote %}


            
            Идентификатор каталога можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md).


        1. Выполните запрос:

            ```bash
            curl \
              --request POST \
              --header "Authorization: Bearer $IAM_TOKEN" \
              --header "Content-Type: application/json" \
              --url 'https://mdb.api.yandexcloud.kz/managed-kafka/v1/clusters' \
              --data '@body.json'
            ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/create.md#yandex.cloud.operation.Operation).

{% endlist %}

## Создать копию кластера {#duplicate}

Вы можете создать кластер Apache Kafka®, который будет обладать настройками созданного ранее кластера. Для этого конфигурация исходного кластера Apache Kafka® импортируется в Terraform. В результате вы можете либо создать идентичную копию, либо взять за основу импортированную конфигурацию и внести в нее изменения. Использовать импорт удобно, если исходный кластер Apache Kafka® обладает множеством настроек и нужно создать похожий на него кластер.

Чтобы создать копию кластера Apache Kafka®:

{% list tabs group=instructions %}

- Terraform {#tf}

    1. Если у вас еще нет Terraform, [установите его](../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
    1. [Получите данные для аутентификации](../../tutorials/infrastructure-management/terraform-quickstart.md#get-credentials). Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
    1. [Настройте и инициализируйте провайдер](../../tutorials/infrastructure-management/terraform-quickstart.md#configure-provider). Чтобы не создавать конфигурационный файл с настройками провайдера вручную, [скачайте его](https://github.com/yandex-cloud-examples/yc-terraform-provider-settings/blob/main/provider.tf).
    1. Поместите конфигурационный файл в отдельную рабочую директорию и [укажите значения параметров](../../tutorials/infrastructure-management/terraform-quickstart.md#configure-provider). Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.

    1. В той же рабочей директории разместите файл с расширением `.tf` и содержимым:

        ```hcl
        resource "yandex_mdb_kafka_cluster" "old" { }
        ```

    1. Запишите идентификатор первоначального кластера Apache Kafka® в переменную окружения:

        ```bash
        export KAFKA_CLUSTER_ID=<идентификатор_кластера>
        ```

        Идентификатор можно запросить вместе со [списком кластеров в каталоге](cluster-list.md#list-clusters).

    1. Импортируйте настройки первоначального кластера Apache Kafka® в конфигурацию Terraform:

        ```bash
        terraform import yandex_mdb_kafka_cluster.old ${KAFKA_CLUSTER_ID}
        ```

    1. Получите импортированную конфигурацию:

        ```bash
        terraform show
        ```

    1. Скопируйте ее из терминала и вставьте в файл с расширением `.tf`.
    1. Расположите файл в новой директории `imported-cluster`.
    1. Измените скопированную конфигурацию так, чтобы из нее можно было создать новый кластер:

        * Укажите новое имя кластера в строке `resource` и параметре `name`.
        * Удалите параметры `created_at`, `health`, `host`, `id` и `status`.
        * Добавьте параметр `subnet_ids` и укажите в нем список идентификаторов подсетей для каждой зоны доступности.
        * Если в блоке `maintenance_window` указано значение параметра `type = "ANYTIME"`, удалите параметр `hour`.
        * (Опционально) Внесите дополнительные изменения, если вам нужна не идентичная, а кастомизированная копия.

    1. В директории `imported-cluster` [получите данные для аутентификации](../../tutorials/infrastructure-management/terraform-quickstart.md#get-credentials).

    1. В этой же директории [настройте и инициализируйте провайдер](../../tutorials/infrastructure-management/terraform-quickstart.md#configure-provider). Чтобы не создавать конфигурационный файл с настройками провайдера вручную, [скачайте его](https://github.com/yandex-cloud-examples/yc-terraform-provider-settings/blob/main/provider.tf).

    1. Поместите конфигурационный файл в директорию `imported-cluster` и [укажите значения параметров](../../tutorials/infrastructure-management/terraform-quickstart.md#configure-provider). Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.

    1. Проверьте корректность файлов конфигурации Terraform:

        ```bash
        terraform validate
        ```

        Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    1. Создайте необходимую инфраструктуру:

        1. Выполните команду для просмотра планируемых изменений:
        
           ```bash
           terraform plan
           ```
        
           Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
        
        1. Если вас устраивают планируемые изменения, внесите их:
           1. Выполните команду:
        
              ```bash
              terraform apply
              ```
        
           1. Подтвердите изменение ресурсов.
           1. Дождитесь завершения операции.

        В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в [консоли управления](https://kz.console.yandex.cloud).

    {% note warning "Ограничения по времени" %}
    
    Провайдер Terraform ограничивает время на выполнение всех операций с кластером Managed Service for Apache Kafka® 60 минутами.
    
    Операции, длящиеся дольше указанного времени, прерываются.
    
    {% cut "Как изменить эти ограничения?" %}
    
    Добавьте к описанию кластера блок `timeouts`, например:
    
    ```hcl
    resource "yandex_mdb_kafka_cluster" "<имя_кластера>" {
      ...
      timeouts {
        create = "1h30m" # Полтора часа
        update = "2h"    # 2 часа
        delete = "30m"   # 30 минут
      }
    }
    ```
    
    {% endcut %}
    
    {% endnote %}

{% endlist %}

## Примеры {#examples}

### Создание кластера с одним хостом {#creating-a-single-host-cluster}

{% list tabs group=instructions %}

- CLI {#cli}

  Создайте кластер Managed Service for Apache Kafka® с тестовыми характеристиками:

  
  * С именем `mykf`.
  * В окружении `production`.
  * С Apache Kafka® версии 3.9.
  * В сети `default`.
  * В подсети с идентификатором `b0rcctk2rvtr********`.
  * В группе безопасности `enp6saqnq4ie********`.
  * С одним хостом-брокером класса `s2.micro`, в зоне доступности `kz1-a`.
  * С хранилищем на сетевых SSD-дисках (`network-ssd`) объемом 10 ГБ.
  * С публичным доступом.
  * С защитой от непреднамеренного удаления.


  Выполните следующую команду:

  
  ```bash
  yc managed-kafka cluster create \
     --name mykf \
     --environment production \
     --version 3.9 \
     --network-name default \
     --subnet-ids b0rcctk2rvtr******** \
     --zone-ids kz1-a \
     --brokers-count 1 \
     --resource-preset s2.micro \
     --disk-size 10 \
     --disk-type network-ssd \
     --assign-public-ip \
     --security-group-ids enp6saqnq4ie******** \
     --deletion-protection
  ```



- Terraform {#tf}

  Создайте кластер Managed Service for Apache Kafka® с тестовыми характеристиками:
  * В облаке с идентификатором `b1gq90dgh25********`.
  * В каталоге с идентификатором `b1gia87mbaom********`.
  * С именем `mykf`.
  * В окружении `PRODUCTION`.
  * С Apache Kafka® версии 3.9.
  * В новой сети `mynet` и подсети `mysubnet` с диапазоном адресов `10.5.0.0/24`.
  * В новой группе безопасности `mykf-sg`, разрешающей подключение к кластеру Managed Service for Apache Kafka® из интернета по порту `9091`.
  * С одним хостом-брокером класса `s2.micro`, в зоне доступности `kz1-a`.
  * С хранилищем на сетевых SSD-дисках (`network-ssd`) объемом 10 ГБ.

  
  * С публичным доступом.


  * С защитой от непреднамеренного удаления.

  Конфигурационный файл для такого кластера Managed Service for Apache Kafka® выглядит так:

  ```hcl
  resource "yandex_mdb_kafka_cluster" "mykf" {
    environment         = "PRODUCTION"
    name                = "mykf"
    network_id          = yandex_vpc_network.mynet.id
    subnet_ids          = [ yandex_vpc_subnet.mysubnet.id ]
    security_group_ids  = [ yandex_vpc_security_group.mykf-sg.id ]
    deletion_protection = true

    config {
      assign_public_ip = true
      brokers_count    = 1
      version          = "3.9"
      kafka {
        resources {
          disk_size          = 10
          disk_type_id       = "network-ssd"
          resource_preset_id = "s2.micro"
        }
        kafka_config {}
      }

      zones = [
        "kz1-a"
      ]
    }
  }

  resource "yandex_vpc_network" "mynet" {
    name = "mynet"
  }

  resource "yandex_vpc_subnet" "mysubnet" {
    name           = "mysubnet"
    zone           = "kz1-a"
    network_id     = yandex_vpc_network.mynet.id
    v4_cidr_blocks = ["10.5.0.0/24"]
  }

  resource "yandex_vpc_security_group" "mykf-sg" {
    name       = "mykf-sg"
    network_id = yandex_vpc_network.mynet.id

    ingress {
      description    = "Kafka"
      port           = 9091
      protocol       = "TCP"
      v4_cidr_blocks = [ "0.0.0.0/0" ]
    }
  }
  ```


{% endlist %}