name: kafka service_id: 116 service_display_name: ApacheKafka service_short_name: kafka service_man: "# Инструкция по развертыванию Apache Kafka через платформу

---
## 1. Общая информация
Брокер сообщений Apache Kafka — это отказоустойчивая распределённая платформа для обмена\ \ сообщениями и потоковой обработки данных в реальном времени.
Позволяет надёжно передавать события между сервисами и системами, интегрироваться с внешними решениями и использовать как внутренние,\ \ так и защищённые TLS-подключения. Развёртывание полностью автоматизировано платформой.

## Доступные операции
- **create** — Создание кластера
- **delete** — Удаление кластера
-\ \ **suspend** — Остановка кластера
- **resume** — Запуск кластера

- **create_topic** — Создание топика
- **modify_topic** — Модификация топика
- **delete_topic** — Удаление\ \ топика

- **create_user** — Создание пользователя
- **modify_user** — Модификация пользователя
- **delete_user** — Удаление пользователя


---
## 2. Параметры\ \ развертывания кластера
Ниже перечислены параметры, которые необходимо указать при создании ресурса Kafka:

* **Платформа для развертывания:**
Платформа для развертывания (среда, в\ \ которой будет развернут кластер). Пример: `\tk8s-3.ext.nubes.ru`.

* **Количество узлов в сети:**
Количество узлов (брокеров) в кластере Kafka

* **Квота (megabyte) памяти пода:**
\ \ Квота памяти пода в мегабайтах. Пример: `2048`

* **Квота (millicore ) ядра пода:**
Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: `1000`

* **Размер (gigabyte) диска\ \ для базы данных:**
Размер диска для хранения данных в гигабайтах. Пример: `20`

* **Выделяет внешний IP для доступа к master:**
Флаг, определяющий, нужно ли выделять внешний IP для\ \ доступа к master-брокеру. Пример: `true` или `false`

* **Имя ipSpace для публикации внешнего IP**
Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1`

---
##\ \ 4. Выходные параметры
После успешного развертывания ресурса Kafka платформа возвращает ряд параметров.
Ключевыми из них являются:

**internalConnect** (выдаётся только при работе кластера\ \ по внутренним адресам)
Внутренние эндпоинты для подключения из сервисов, развёрнутых внутри того же Kubernetes-кластера.
```yaml
internalConnect:
bootstrap:
fqdn: \"-kafka-tls-bootstrap..svc.\"\
port: 9093
brokers:
broker-1:
fqdn: \"--pool-0.-kafka-brokers..svc.\"
port: 9093
```

**externalConnect**\ \ (выдаётся только при выделении внешнего IP)
Внешние эндпоинты, зарегистрированные в DNS.
```yaml
externalConnect:
bootstrap:
fqdn: \"bootstrap..\"
\ \ port: 9093
brokers:
broker-1:
fqdn: \"broker-1..\"
port: 9093
```

Заполняется **только один** из параметров:
- при внешней аллокации\ \ (`loadbalancer`) — `externalConnect`, `internalConnect` остаётся пустым;
- при внутреннем режиме — `internalConnect`, `externalConnect` остаётся пустым.

Для подключения используются следующие\ \ порты:

* 9092 — внутренний нешифрованный доступ (plain).
* 9093 — внутренний и внешний доступ по TLS, с обязательной TLS-аутентификацией.

---
## 5. Дополнительная информация
Для\ \ создания топиков, пользователей и управления ими, а также для интеграции с кластерами Kafka используйте соответствующие сервисы и раздел \"Облачные сервисы\".
---" lifecycle: suspendOnDestroyDefault: true adoptExistingOnCreateDefault: false operations: - svcOperationId: 148 operation: create kind: instance action: create - svcOperationId: 165 operation: create_topic kind: subresource action: create - svcOperationId: 168 operation: create_user kind: subresource action: create - svcOperationId: 149 operation: delete kind: instance action: delete - svcOperationId: 167 operation: delete_topic kind: subresource action: delete - svcOperationId: 170 operation: delete_user kind: subresource action: delete - svcOperationId: 162 operation: modify kind: instance action: modify - svcOperationId: 166 operation: modify_topic kind: subresource action: modify - svcOperationId: 169 operation: modify_user kind: subresource action: modify - svcOperationId: 161 operation: resume kind: instance action: resume - svcOperationId: 160 operation: suspend kind: instance action: suspend stateOut: topics: {} users: {} cfsParams: - svcOperationCfsParamId: 1084 svcOperationCfsParam: startupConfiguration dataType: map-fixed isRequired: true defaultValue: '' isModifiable: false dataDescriptor: resourceRealm: dataType: string defaultValue: '' isRequired: true isModifiable: false valueList: - devclustername - k8s-3-sandbox-nubes-ru - k8s-4-sandbox-nubes-ru - svcOperationCfsParamId: 1085 svcOperationCfsParam: clusterConfiguration dataType: map-fixed isRequired: true defaultValue: '' isModifiable: true dataDescriptor: cpu: dataType: integer > 0 defaultValue: '2000' isRequired: true isModifiable: false memory: dataType: integer > 0 defaultValue: '2048' isRequired: true isModifiable: false replicas: dataType: integer > 0 defaultValue: '' isRequired: true isModifiable: false valueList: - '1' - '3' - '5' - '7' disk: dataType: integer > 0 defaultValue: '1' isRequired: true isModifiable: false - svcOperationCfsParamId: 1086 svcOperationCfsParam: accessConfiguration dataType: map-fixed isRequired: true defaultValue: '' isModifiable: true dataDescriptor: allocationExternal: dataType: boolean defaultValue: 'false' isRequired: true isModifiable: false valueList: - 'false' - 'true' masterAccessList: dataType: json defaultValue: '[]' isRequired: true isModifiable: false - svcOperationCfsParamId: 523 svcOperationCfsParam: nameTopic dataType: string isRequired: true defaultValue: '' isModifiable: false - svcOperationCfsParamId: 524 svcOperationCfsParam: partitions dataType: integer > 0 isRequired: true defaultValue: '' isModifiable: false - svcOperationCfsParamId: 525 svcOperationCfsParam: replicas dataType: integer > 0 isRequired: true defaultValue: '' isModifiable: false - svcOperationCfsParamId: 530 svcOperationCfsParam: username dataType: string isRequired: true defaultValue: '' isModifiable: false - svcOperationCfsParamId: 531 svcOperationCfsParam: nameTopic dataType: string isRequired: true defaultValue: '' isModifiable: false - svcOperationCfsParamId: 532 svcOperationCfsParam: operations dataType: array isRequired: true defaultValue: '' isModifiable: false valueList: - Create - Describe - Read - Write - svcOperationCfsParamId: 533 svcOperationCfsParam: group dataType: string isRequired: true defaultValue: '*' isModifiable: false - svcOperationCfsParamId: 534 svcOperationCfsParam: accessHosts dataType: string isRequired: true defaultValue: '*' isModifiable: false - svcOperationCfsParamId: 529 svcOperationCfsParam: nameTopic dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 540 svcOperationCfsParam: username dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 1087 svcOperationCfsParam: clusterConfiguration dataType: map-fixed isRequired: true defaultValue: '' isModifiable: true dataDescriptor: cpu: dataType: integer > 0 defaultValue: '2000' isRequired: true isModifiable: false memory: dataType: integer > 0 defaultValue: '2048' isRequired: true isModifiable: false replicas: dataType: integer > 0 defaultValue: '1' isRequired: true isModifiable: false valueList: - '1' - '3' - '5' - '7' disk: dataType: integer > 0 defaultValue: '1' isRequired: true isModifiable: false - svcOperationCfsParamId: 1088 svcOperationCfsParam: accessConfiguration dataType: map-fixed isRequired: true defaultValue: '' isModifiable: true dataDescriptor: allocationExternal: dataType: boolean defaultValue: 'false' isRequired: true isModifiable: false valueList: - 'false' - 'true' masterAccessList: dataType: json defaultValue: '[]' isRequired: true isModifiable: false - svcOperationCfsParamId: 526 svcOperationCfsParam: nameTopic dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 527 svcOperationCfsParam: partitions dataType: string isRequired: false defaultValue: '' isModifiable: true - svcOperationCfsParamId: 528 svcOperationCfsParam: replicas dataType: string isRequired: false defaultValue: '' isModifiable: true - svcOperationCfsParamId: 535 svcOperationCfsParam: nameTopic dataType: string isRequired: false defaultValue: '*' isModifiable: true - svcOperationCfsParamId: 536 svcOperationCfsParam: operations dataType: array isRequired: false defaultValue: '' isModifiable: true valueList: - Create - Describe - Read - Write - svcOperationCfsParamId: 537 svcOperationCfsParam: group dataType: string isRequired: false defaultValue: '*' isModifiable: true - svcOperationCfsParamId: 538 svcOperationCfsParam: accessHosts dataType: string isRequired: false defaultValue: '*' isModifiable: true - svcOperationCfsParamId: 539 svcOperationCfsParam: username dataType: string isRequired: true defaultValue: '' isModifiable: true cfsParamsByOp: 148: - 1084 - 1085 - 1086 165: - 523 - 524 - 525 168: - 530 - 531 - 532 - 533 - 534 149: [] 167: - 529 170: - 540 162: - 1087 - 1088 166: - 526 - 527 - 528 169: - 535 - 536 - 537 - 538 - 539 161: [] 160: [] stateParams: startupConfiguration: '{"resourceRealm": ""}' clusterConfiguration: '{"cpu": 2000, "memory": 2048, "replicas": 0, "disk": 1}' accessConfiguration: '{"allocationExternal": false, "masterAccessList": "[]"}'