add: documentation

This commit is contained in:
“Naeel”
2026-06-30 15:45:24 +04:00
parent 540c1f7293
commit ca276d200f
1055 changed files with 47294 additions and 0 deletions
@@ -0,0 +1,98 @@
# Operations: nubes_kafka
| Operation | Kind | Action | Subresource | ID | Params | Description |
|---|---|---|---|---|---|---|
| `create` | `instance` | `create` | `` | `148` | resourceInstances, resourceMemory, resourceCPU, resourceDisk, needExternalAddressMaster, ipSpaceNameMaster, resourceRealm | |
| `create_topic` | `subresource` | `create` | `topic` | `165` | nameTopic, partitions, replicas | # Инструкция по управлению топиками Apache Kafka через платформу<br/><br/>## 1. Общая информация<br/><br/>---<br/><br/>Топик — это основная сущность в Apache Kafka, предназначенная для приёма сообщений от продюсеров и передачи их консюмерам.<br/>Платформа позволяет создавать, удалять и изменять параметры топиков без прямого доступа к брокерам, обеспечивая удобное управление через интерфейс или API.<br/><br/>---<br/><br/>## Доступные операции<br/><br/>- **create_topic** — Создание топика<br/>- **modify_topic** — Модификация топика<br/>- **delete_topic** — Удаление топика<br/><br/>---<br/><br/>## 2. Параметры создания топика<br/><br/>Ниже перечислены параметры, которые необходимо указать при создании нового топика:<br/><br/>* **Имя топика**<br/> Название топика.<br/> Должно быть уникальным в пределах кластера.<br/> Пример: `orders-events`.<br/><br/>* **Партиции**<br/> Количество партиций топика.<br/> Рекомендуется выбирать с учётом уровня параллелизма потребителей и предполагаемой нагрузки.<br/> Пример: `6`. Здесь важно рассказать о том как происходит расчет оптимального количества<br/> Обратите внимание: уменьшить количество партиций после создания невозможно, поэтому лучше закладывать небольшой запас на будущий рост нагрузки.<br/><br/>* **Реплики**<br/> Количество реплик для каждой партиции.<br/> Обычно равно количеству доступных брокеров или меньше.<br/> Пример: `3`.<br/><br/><br/>---<br/><br/>## 4. Параметры модификации топика<br/><br/>Для уже существующих топиков можно изменять параметры. Все параметры являются опциональными:<br/><br/>* **Имя топика**<br/> Название топика.<br/> Пример: `orders-events`.<br/><br/>* **Партиции**<br/> Новое количество партиций.<br/> Пример: `12`.<br/><br/>* **Реплики**<br/> Новое количество реплик.<br/> Пример: `2`.<br/><br/>---<br/><br/>## 5. Рекомендации<br/><br/>* Планируйте количество партиций с запасом — уменьшение их числа невозможно.<br/>* Количество реплик должно соответствовать требуемому уровню отказоустойчивости, но не превышать количество брокеров.<br/>* Изменение параметров топика в рабочем окружении может временно влиять на производительность. Рекомендуется проводить крупные изменения в периоды минимальной нагрузки.<br/><br/>--- |
| `create_user` | `subresource` | `create` | `user` | `168` | username, nameTopic, operations, group, accessHosts | # Инструкция по управлению пользователями Apache Kafka.<br/><br/>---<br/><br/>## 1. Общая информация<br/><br/>Пользователи в Apache Kafka используются для аутентификации и авторизации при подключении к кластеру.<br/>Платформа позволяет создавать, удалять и изменять пользователей без прямого доступа к брокерам, а также настраивать права доступа к топикам и группам.<br/>Это обеспечивает централизованное и безопасное управление доступом к ресурсам Kafka.<br/><br/>---<br/><br/>## Доступные операции<br/><br/>- **create_user** — Создание пользователя<br/>- **modify_user** — Модификация пользователя<br/>- **delete_user** — Удаление пользователя<br/><br/>---<br/><br/>## 2. Параметры создания пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при создании нового пользователя:<br/><br/>* **Имя пользователя**<br/> Имя создаваемого пользователя. Используется для подключения к Kafka и настройки прав.<br/> Пример: `username-admin`<br/><br/>* **Топик**<br/> Название топика, к которому будут назначены права для данного пользователя.<br/> Пример: `orders-events`.<br/> Использовать маску нельзя (`orders*`), только полное название или `*`.<br/><br/>* **Операции**<br/> Список разрешённых операций на указанном топике.<br/> Пример: `Describe, Read, Write`<br/><br/>* **Группа**<br/> Имя группы, которой разрешён доступ. Используется при настройке консюмер-групп.<br/> Пример: `order-consumers`.<br/><br/>* **Разрешённые хосты**<br/> Список хостов или подсетей, с которых разрешено подключение пользователя.<br/> Пример: `192.168.1.0/24` или `*`.<br/><br/>---<br/><br/>## 3. Параметры модификации пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при модификации пользователя:<br/><br/>* **Имя пользователя**<br/> Имя создаваемого пользователя. Используется для подключения к Kafka и настройки прав.<br/> Пример: `username-admin`<br/><br/>* **Топик**<br/> Название топика, к которому будут назначены права для данного пользователя.<br/> Пример: `orders-events`.<br/> Использовать маску нельзя (`orders*`), только полное название или `*`.<br/><br/>* **Операции**<br/> Список разрешённых операций на указанном топике.<br/> Пример: `Describe, Read, Write`<br/><br/>* **Группа**<br/> Имя группы, которой разрешён доступ. Используется при настройке консюмер-групп.<br/> Пример: `order-consumers`.<br/><br/>* **Разрешённые хосты**<br/> Список хостов или подсетей, с которых разрешено подключение пользователя.<br/> Пример: `192.168.1.0/24` или `*`.<br/><br/>---<br/><br/>## 4. Параметры удалении пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при удалении пользователя:<br/><br/>* **Имя пользователя**<br/> Имя удаляемого пользователя.<br/> Пример: `username-admin`<br/><br/>## 5. Выходные параметры<br/><br/>После успешного создания пользователя платформа возвращает параметры, необходимые для подключения:<br/><br/>* **ca.crt**<br/> Корневой сертификат (Certificate Authority), используемый для проверки подлинности сервера при TLS-подключении.<br/> Файл содержит публичный ключ удостоверяющего центра, которому доверяют брокеры и клиенты. Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo '&lt;содержание поля&gt;' | base64 -d &gt; &lt;название&gt;.crt<br/> ```<br/><br/>* **ca.p12**<br/> PKCS#12-хранилище с корневым сертификатом (Certificate Authority), используемое для проверки подлинности сервера при TLS-подключении.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo '&lt;содержание поля&gt;' | base64 -d &gt; &lt;название&gt;.p12<br/> ```<br/><br/>* **ca.password**<br/> Пароль для доступа к хранилищу `ca.p12`. Выдаеться в чистом виде. Раскодировать не нужно.<br/><br/>* **user.crt**<br/> Клиентский сертификат, подтверждающий личность пользователя при подключении к Kafka.<br/> Используется совместно с приватным ключом `user.key` для аутентификации.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo '&lt;содержание поля&gt;' | base64 -d &gt; &lt;название&gt;.crt<br/> ```<br/><br/>* **user.key**<br/> Приватный ключ пользователя, применяемый для установления защищённого TLS-соединения и подтверждения подлинности.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo '&lt;содержание поля&gt;' | base64 -d &gt; &lt;название&gt;.key<br/> ```<br/><br/>* **user.p12**<br/> PKCS#12-хранилище с клиентским сертификатом и приватным ключом, предназначенное для аутентификации пользователя в Kafka.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo &quot;&lt;содержание поля&gt;&quot; | base64 -d &gt; &lt;название&gt;.p12<br/> ```<br/><br/>* **user.password**<br/> Пароль для доступа к хранилищу `user.p12`. Выдаеться в чистом виде. Раскодировать не нужно.<br/><br/>Эти параметры используются для настройки TLS-подключения.<br/><br/>---<br/><br/>## 6. Пример конфигурации клиента внутри кластера<br/><br/>Пример пода:<br/><br/>```yaml<br/>apiVersion: v1<br/>kind: Pod<br/>metadata:<br/> name: kafka-4<br/>spec:<br/> volumes:<br/> - name: work<br/> emptyDir: {}<br/> containers:<br/> - name: kcat<br/> image: quay.io/strimzi/kafka:latest-kafka-4.0.0<br/> command: [&quot;sleep&quot;, &quot;5600&quot;]<br/> volumeMounts:<br/> - name: work<br/> mountPath: /work<br/> restartPolicy: Never<br/>```<br/><br/>Создаём под и сохраняем сертификаты:<br/><br/>```bash<br/>kubectl cp user.p12 kafka-4:/work/<br/>kubectl cp ca.p12 kafka-4:/work/<br/>```<br/><br/>Создаём файлы конфигурации:<br/><br/>```bash<br/>cat &gt; /work/user-read.properties &lt;&lt;'EOF'<br/>security.protocol=SSL<br/>ssl.keystore.type=PKCS12<br/>ssl.keystore.location=/work/user.p12<br/>ssl.keystore.password=&lt;user.password&gt;<br/>ssl.truststore.type=PKCS12<br/>ssl.truststore.location=/work/ca.p12<br/>ssl.truststore.password=&lt;ca.password&gt;<br/>EOF<br/>```<br/><br/>```bash<br/>cat &gt; /work/user-write.properties &lt;&lt;'EOF'<br/>security.protocol=SSL<br/>ssl.keystore.type=PKCS12<br/>ssl.keystore.location=/work/user-write.p12<br/>ssl.keystore.password=&lt;user.password&gt;<br/>ssl.truststore.type=PKCS12<br/>ssl.truststore.location=/work/ca.p12<br/>ssl.truststore.password=&lt;ca.password&gt;<br/>EOF<br/>```<br/><br/>Листинг доступных топиков:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-topics.sh \<br/> --bootstrap-server kafkak8s-bootstrap-external:9093 \<br/> --command-config /work/user-read.properties \<br/> --list<br/>```<br/><br/>Запись сообщений:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-console-producer.sh \<br/> --bootstrap-server &lt;адрес сервис брокера&gt;:9093 \<br/> --topic &lt;topic&gt; \<br/> --producer.config /work/user-write.properties<br/>```<br/><br/>Чтение сообщений:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-console-consumer.sh \<br/> --bootstrap-server &lt;адрес сервис брокера&gt;:9093 \<br/> --topic &lt;topic&gt; \<br/> --from-beginning \<br/> --group &lt;group&gt; \<br/> --consumer.config /work/user-read.properties \<br/> --max-messages 50<br/>```<br/><br/>---<br/><br/>## 7. Пример внешнего подключения с использованием **kcat**<br/><br/>**Листинг топиков**<br/><br/>```bash<br/>kcat -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \<br/> -L \<br/> -X security.protocol=SSL \<br/> -X ssl.ca.location=./ca.crt \<br/> -X ssl.certificate.location=./user-read.crt \<br/> -X ssl.key.location=./user-read.key \<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>**Запись сообщения**<br/><br/>```bash<br/> echo &quot;hello from kcat&quot; | kcat -P \<br/> -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \<br/> -t write-test \<br/> -X security.protocol=SSL \<br/> -X ssl.ca.location=./ca.crt \<br/> -X ssl.certificate.location=./user-write.crt \<br/> -X ssl.key.location=./user-write.key \<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>**Чтение сообщений**<br/><br/>```bash<br/>kcat -C \<br/> -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \<br/> -t write-test \<br/> -o beginning \<br/> -q \<br/> -X security.protocol=SSL \<br/> -X ssl.ca.location=./ca.crt \<br/> -X ssl.certificate.location=./user-read.crt \<br/> -X ssl.key.location=./user-read.key \<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>---<br/><br/><br/>## 9. Рекомендации<br/><br/>* Минимизируйте набор разрешённых операций для повышения безопасности.<br/>* Используйте отдельные учётные записи для продюсеров, консюмеров и системных сервисов.<br/>* Ограничивайте доступ по IP или подсетям с помощью параметра **Разрешённые хосты**.<br/>* После изменения прав или групп пользователя рекомендуется проверить подключение и доступ к топикам.<br/><br/>--- |
| `delete` | `instance` | `delete` | `` | `149` | | |
| `delete_topic` | `subresource` | `delete` | `topic` | `167` | nameTopic | |
| `delete_user` | `subresource` | `delete` | `user` | `170` | username | # Инструкция по управлению пользователями Apache Kafka.<br/><br/>---<br/><br/>## 1. Общая информация<br/><br/>Пользователи в Apache Kafka используются для аутентификации и авторизации при подключении к кластеру.<br/>Платформа позволяет создавать, удалять и изменять пользователей без прямого доступа к брокерам, а также настраивать права доступа к топикам и группам.<br/>Это обеспечивает централизованное и безопасное управление доступом к ресурсам Kafka.<br/><br/>---<br/><br/>## Доступные операции<br/><br/>- **create_user** — Создание пользователя<br/>- **modify_user** — Модификация пользователя<br/>- **delete_user** — Удаление пользователя<br/><br/>---<br/><br/>## 2. Параметры создания пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при создании нового пользователя:<br/><br/>* **Имя пользователя**<br/> Имя создаваемого пользователя. Используется для подключения к Kafka и настройки прав.<br/> Пример: `username-admin`<br/><br/>* **Топик**<br/> Название топика, к которому будут назначены права для данного пользователя.<br/> Пример: `orders-events`.<br/> Использовать маску нельзя (`orders*`), только полное название или `*`.<br/><br/>* **Операции**<br/> Список разрешённых операций на указанном топике.<br/> Пример: `Describe, Read, Write`<br/><br/>* **Группа**<br/> Имя группы, которой разрешён доступ. Используется при настройке консюмер-групп.<br/> Пример: `order-consumers`.<br/><br/>* **Разрешённые хосты**<br/> Список хостов или подсетей, с которых разрешено подключение пользователя.<br/> Пример: `192.168.1.0/24` или `*`.<br/><br/>---<br/><br/>## 3. Параметры модификации пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при модификации пользователя:<br/><br/>* **Имя пользователя**<br/> Имя создаваемого пользователя. Используется для подключения к Kafka и настройки прав.<br/> Пример: `username-admin`<br/><br/>* **Топик**<br/> Название топика, к которому будут назначены права для данного пользователя.<br/> Пример: `orders-events`.<br/> Использовать маску нельзя (`orders*`), только полное название или `*`.<br/><br/>* **Операции**<br/> Список разрешённых операций на указанном топике.<br/> Пример: `Describe, Read, Write`<br/><br/>* **Группа**<br/> Имя группы, которой разрешён доступ. Используется при настройке консюмер-групп.<br/> Пример: `order-consumers`.<br/><br/>* **Разрешённые хосты**<br/> Список хостов или подсетей, с которых разрешено подключение пользователя.<br/> Пример: `192.168.1.0/24` или `*`.<br/><br/>---<br/><br/>## 4. Параметры удалении пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при удалении пользователя:<br/><br/>* **Имя пользователя**<br/> Имя удаляемого пользователя.<br/> Пример: `username-admin`<br/><br/>## 5. Выходные параметры<br/><br/>После успешного создания пользователя платформа возвращает параметры, необходимые для подключения:<br/><br/>* **ca.crt**<br/> Корневой сертификат (Certificate Authority), используемый для проверки подлинности сервера при TLS-подключении.<br/> Файл содержит публичный ключ удостоверяющего центра, которому доверяют брокеры и клиенты. Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo '&lt;содержание поля&gt;' | base64 -d &gt; &lt;название&gt;.crt<br/> ```<br/><br/>* **ca.p12**<br/> PKCS#12-хранилище с корневым сертификатом (Certificate Authority), используемое для проверки подлинности сервера при TLS-подключении.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo '&lt;содержание поля&gt;' | base64 -d &gt; &lt;название&gt;.p12<br/> ```<br/><br/>* **ca.password**<br/> Пароль для доступа к хранилищу `ca.p12`. Выдаеться в чистом виде. Раскодировать не нужно.<br/><br/>* **user.crt**<br/> Клиентский сертификат, подтверждающий личность пользователя при подключении к Kafka.<br/> Используется совместно с приватным ключом `user.key` для аутентификации.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo '&lt;содержание поля&gt;' | base64 -d &gt; &lt;название&gt;.crt<br/> ```<br/><br/>* **user.key**<br/> Приватный ключ пользователя, применяемый для установления защищённого TLS-соединения и подтверждения подлинности.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo '&lt;содержание поля&gt;' | base64 -d &gt; &lt;название&gt;.key<br/> ```<br/><br/>* **user.p12**<br/> PKCS#12-хранилище с клиентским сертификатом и приватным ключом, предназначенное для аутентификации пользователя в Kafka.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo &quot;&lt;содержание поля&gt;&quot; | base64 -d &gt; &lt;название&gt;.p12<br/> ```<br/><br/>* **user.password**<br/> Пароль для доступа к хранилищу `user.p12`. Выдаеться в чистом виде. Раскодировать не нужно.<br/><br/>Эти параметры используются для настройки TLS-подключения.<br/><br/>---<br/><br/>## 6. Пример конфигурации клиента внутри кластера<br/><br/>Пример пода:<br/><br/>```yaml<br/>apiVersion: v1<br/>kind: Pod<br/>metadata:<br/> name: kafka-4<br/>spec:<br/> volumes:<br/> - name: work<br/> emptyDir: {}<br/> containers:<br/> - name: kcat<br/> image: quay.io/strimzi/kafka:latest-kafka-4.0.0<br/> command: [&quot;sleep&quot;, &quot;5600&quot;]<br/> volumeMounts:<br/> - name: work<br/> mountPath: /work<br/> restartPolicy: Never<br/>```<br/><br/>Создаём под и сохраняем сертификаты:<br/><br/>```bash<br/>kubectl cp user.p12 kafka-4:/work/<br/>kubectl cp ca.p12 kafka-4:/work/<br/>```<br/><br/>Создаём файлы конфигурации:<br/><br/>```bash<br/>cat &gt; /work/user-read.properties &lt;&lt;'EOF'<br/>security.protocol=SSL<br/>ssl.keystore.type=PKCS12<br/>ssl.keystore.location=/work/user.p12<br/>ssl.keystore.password=&lt;user.password&gt;<br/>ssl.truststore.type=PKCS12<br/>ssl.truststore.location=/work/ca.p12<br/>ssl.truststore.password=&lt;ca.password&gt;<br/>EOF<br/>```<br/><br/>```bash<br/>cat &gt; /work/user-write.properties &lt;&lt;'EOF'<br/>security.protocol=SSL<br/>ssl.keystore.type=PKCS12<br/>ssl.keystore.location=/work/user-write.p12<br/>ssl.keystore.password=&lt;user.password&gt;<br/>ssl.truststore.type=PKCS12<br/>ssl.truststore.location=/work/ca.p12<br/>ssl.truststore.password=&lt;ca.password&gt;<br/>EOF<br/>```<br/><br/>Листинг доступных топиков:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-topics.sh \<br/> --bootstrap-server kafkak8s-bootstrap-external:9093 \<br/> --command-config /work/user-read.properties \<br/> --list<br/>```<br/><br/>Запись сообщений:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-console-producer.sh \<br/> --bootstrap-server &lt;адрес сервис брокера&gt;:9093 \<br/> --topic &lt;topic&gt; \<br/> --producer.config /work/user-write.properties<br/>```<br/><br/>Чтение сообщений:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-console-consumer.sh \<br/> --bootstrap-server &lt;адрес сервис брокера&gt;:9093 \<br/> --topic &lt;topic&gt; \<br/> --from-beginning \<br/> --group &lt;group&gt; \<br/> --consumer.config /work/user-read.properties \<br/> --max-messages 50<br/>```<br/><br/>---<br/><br/>## 7. Пример внешнего подключения с использованием **kcat**<br/><br/>**Листинг топиков**<br/><br/>```bash<br/>kcat -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \<br/> -L \<br/> -X security.protocol=SSL \<br/> -X ssl.ca.location=./ca.crt \<br/> -X ssl.certificate.location=./user-read.crt \<br/> -X ssl.key.location=./user-read.key \<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>**Запись сообщения**<br/><br/>```bash<br/> echo &quot;hello from kcat&quot; | kcat -P \<br/> -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \<br/> -t write-test \<br/> -X security.protocol=SSL \<br/> -X ssl.ca.location=./ca.crt \<br/> -X ssl.certificate.location=./user-write.crt \<br/> -X ssl.key.location=./user-write.key \<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>**Чтение сообщений**<br/><br/>```bash<br/>kcat -C \<br/> -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \<br/> -t write-test \<br/> -o beginning \<br/> -q \<br/> -X security.protocol=SSL \<br/> -X ssl.ca.location=./ca.crt \<br/> -X ssl.certificate.location=./user-read.crt \<br/> -X ssl.key.location=./user-read.key \<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>---<br/><br/><br/>## 9. Рекомендации<br/><br/>* Минимизируйте набор разрешённых операций для повышения безопасности.<br/>* Используйте отдельные учётные записи для продюсеров, консюмеров и системных сервисов.<br/>* Ограничивайте доступ по IP или подсетям с помощью параметра **Разрешённые хосты**.<br/>* После изменения прав или групп пользователя рекомендуется проверить подключение и доступ к топикам.<br/><br/>--- |
| `modify` | `instance` | `modify` | `` | `162` | resourceInstances, resourceMemory, resourceCPU, resourceDisk, needExternalAddressMaster, ipSpaceNameMaster | |
| `modify_topic` | `subresource` | `modify` | `topic` | `166` | nameTopic, partitions, replicas | # Инструкция по управлению топиками Apache Kafka через платформу<br/><br/>## 1. Общая информация<br/><br/>---<br/><br/>Топик — это основная сущность в Apache Kafka, предназначенная для приёма сообщений от продюсеров и передачи их консюмерам.<br/>Платформа позволяет создавать, удалять и изменять параметры топиков без прямого доступа к брокерам, обеспечивая удобное управление через интерфейс или API.<br/><br/>---<br/><br/>## Доступные операции<br/><br/>- **create_topic** — Создание топика<br/>- **modify_topic** — Модификация топика<br/>- **delete_topic** — Удаление топика<br/><br/>---<br/><br/>## 2. Параметры создания топика<br/><br/>Ниже перечислены параметры, которые необходимо указать при создании нового топика:<br/><br/>* **Имя топика**<br/> Название топика.<br/> Должно быть уникальным в пределах кластера.<br/> Пример: `orders-events`.<br/><br/>* **Партиции**<br/> Количество партиций топика.<br/> Рекомендуется выбирать с учётом уровня параллелизма потребителей и предполагаемой нагрузки.<br/> Пример: `6`. Здесь важно рассказать о том как происходит расчет оптимального количества<br/> Обратите внимание: уменьшить количество партиций после создания невозможно, поэтому лучше закладывать небольшой запас на будущий рост нагрузки.<br/><br/>* **Реплики**<br/> Количество реплик для каждой партиции.<br/> Обычно равно количеству доступных брокеров или меньше.<br/> Пример: `3`.<br/><br/><br/>---<br/><br/>## 4. Параметры модификации топика<br/><br/>Для уже существующих топиков можно изменять параметры. Все параметры являются опциональными:<br/><br/>* **Имя топика**<br/> Название топика.<br/> Пример: `orders-events`.<br/><br/>* **Партиции**<br/> Новое количество партиций.<br/> Пример: `12`.<br/><br/>* **Реплики**<br/> Новое количество реплик.<br/> Пример: `2`.<br/><br/>---<br/><br/>## 5. Рекомендации<br/><br/>* Планируйте количество партиций с запасом — уменьшение их числа невозможно.<br/>* Количество реплик должно соответствовать требуемому уровню отказоустойчивости, но не превышать количество брокеров.<br/>* Изменение параметров топика в рабочем окружении может временно влиять на производительность. Рекомендуется проводить крупные изменения в периоды минимальной нагрузки.<br/><br/>--- |
| `modify_user` | `subresource` | `modify` | `user` | `169` | nameTopic, operations, group, accessHosts, username | # Инструкция по управлению пользователями Apache Kafka.<br/><br/>---<br/><br/>## 1. Общая информация<br/><br/>Пользователи в Apache Kafka используются для аутентификации и авторизации при подключении к кластеру.<br/>Платформа позволяет создавать, удалять и изменять пользователей без прямого доступа к брокерам, а также настраивать права доступа к топикам и группам.<br/>Это обеспечивает централизованное и безопасное управление доступом к ресурсам Kafka.<br/><br/>---<br/><br/>## Доступные операции<br/><br/>- **create_user** — Создание пользователя<br/>- **modify_user** — Модификация пользователя<br/>- **delete_user** — Удаление пользователя<br/><br/>---<br/><br/>## 2. Параметры создания пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при создании нового пользователя:<br/><br/>* **Имя пользователя**<br/> Имя создаваемого пользователя. Используется для подключения к Kafka и настройки прав.<br/> Пример: `username-admin`<br/><br/>* **Топик**<br/> Название топика, к которому будут назначены права для данного пользователя.<br/> Пример: `orders-events`.<br/> Использовать маску нельзя (`orders*`), только полное название или `*`.<br/><br/>* **Операции**<br/> Список разрешённых операций на указанном топике.<br/> Пример: `Describe, Read, Write`<br/><br/>* **Группа**<br/> Имя группы, которой разрешён доступ. Используется при настройке консюмер-групп.<br/> Пример: `order-consumers`.<br/><br/>* **Разрешённые хосты**<br/> Список хостов или подсетей, с которых разрешено подключение пользователя.<br/> Пример: `192.168.1.0/24` или `*`.<br/><br/>---<br/><br/>## 3. Параметры модификации пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при модификации пользователя:<br/><br/>* **Имя пользователя**<br/> Имя создаваемого пользователя. Используется для подключения к Kafka и настройки прав.<br/> Пример: `username-admin`<br/><br/>* **Топик**<br/> Название топика, к которому будут назначены права для данного пользователя.<br/> Пример: `orders-events`.<br/> Использовать маску нельзя (`orders*`), только полное название или `*`.<br/><br/>* **Операции**<br/> Список разрешённых операций на указанном топике.<br/> Пример: `Describe, Read, Write`<br/><br/>* **Группа**<br/> Имя группы, которой разрешён доступ. Используется при настройке консюмер-групп.<br/> Пример: `order-consumers`.<br/><br/>* **Разрешённые хосты**<br/> Список хостов или подсетей, с которых разрешено подключение пользователя.<br/> Пример: `192.168.1.0/24` или `*`.<br/><br/>---<br/><br/>## 4. Параметры удалении пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при удалении пользователя:<br/><br/>* **Имя пользователя**<br/> Имя удаляемого пользователя.<br/> Пример: `username-admin`<br/><br/>## 5. Выходные параметры<br/><br/>После успешного создания пользователя платформа возвращает параметры, необходимые для подключения:<br/><br/>* **ca.crt**<br/> Корневой сертификат (Certificate Authority), используемый для проверки подлинности сервера при TLS-подключении.<br/> Файл содержит публичный ключ удостоверяющего центра, которому доверяют брокеры и клиенты. Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo '&lt;содержание поля&gt;' | base64 -d &gt; &lt;название&gt;.crt<br/> ```<br/><br/>* **ca.p12**<br/> PKCS#12-хранилище с корневым сертификатом (Certificate Authority), используемое для проверки подлинности сервера при TLS-подключении.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo '&lt;содержание поля&gt;' | base64 -d &gt; &lt;название&gt;.p12<br/> ```<br/><br/>* **ca.password**<br/> Пароль для доступа к хранилищу `ca.p12`. Выдаеться в чистом виде. Раскодировать не нужно.<br/><br/>* **user.crt**<br/> Клиентский сертификат, подтверждающий личность пользователя при подключении к Kafka.<br/> Используется совместно с приватным ключом `user.key` для аутентификации.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo '&lt;содержание поля&gt;' | base64 -d &gt; &lt;название&gt;.crt<br/> ```<br/><br/>* **user.key**<br/> Приватный ключ пользователя, применяемый для установления защищённого TLS-соединения и подтверждения подлинности.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo '&lt;содержание поля&gt;' | base64 -d &gt; &lt;название&gt;.key<br/> ```<br/><br/>* **user.p12**<br/> PKCS#12-хранилище с клиентским сертификатом и приватным ключом, предназначенное для аутентификации пользователя в Kafka.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo &quot;&lt;содержание поля&gt;&quot; | base64 -d &gt; &lt;название&gt;.p12<br/> ```<br/><br/>* **user.password**<br/> Пароль для доступа к хранилищу `user.p12`. Выдаеться в чистом виде. Раскодировать не нужно.<br/><br/>Эти параметры используются для настройки TLS-подключения.<br/><br/>---<br/><br/>## 6. Пример конфигурации клиента внутри кластера<br/><br/>Пример пода:<br/><br/>```yaml<br/>apiVersion: v1<br/>kind: Pod<br/>metadata:<br/> name: kafka-4<br/>spec:<br/> volumes:<br/> - name: work<br/> emptyDir: {}<br/> containers:<br/> - name: kcat<br/> image: quay.io/strimzi/kafka:latest-kafka-4.0.0<br/> command: [&quot;sleep&quot;, &quot;5600&quot;]<br/> volumeMounts:<br/> - name: work<br/> mountPath: /work<br/> restartPolicy: Never<br/>```<br/><br/>Создаём под и сохраняем сертификаты:<br/><br/>```bash<br/>kubectl cp user.p12 kafka-4:/work/<br/>kubectl cp ca.p12 kafka-4:/work/<br/>```<br/><br/>Создаём файлы конфигурации:<br/><br/>```bash<br/>cat &gt; /work/user-read.properties &lt;&lt;'EOF'<br/>security.protocol=SSL<br/>ssl.keystore.type=PKCS12<br/>ssl.keystore.location=/work/user.p12<br/>ssl.keystore.password=&lt;user.password&gt;<br/>ssl.truststore.type=PKCS12<br/>ssl.truststore.location=/work/ca.p12<br/>ssl.truststore.password=&lt;ca.password&gt;<br/>EOF<br/>```<br/><br/>```bash<br/>cat &gt; /work/user-write.properties &lt;&lt;'EOF'<br/>security.protocol=SSL<br/>ssl.keystore.type=PKCS12<br/>ssl.keystore.location=/work/user-write.p12<br/>ssl.keystore.password=&lt;user.password&gt;<br/>ssl.truststore.type=PKCS12<br/>ssl.truststore.location=/work/ca.p12<br/>ssl.truststore.password=&lt;ca.password&gt;<br/>EOF<br/>```<br/><br/>Листинг доступных топиков:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-topics.sh \<br/> --bootstrap-server kafkak8s-bootstrap-external:9093 \<br/> --command-config /work/user-read.properties \<br/> --list<br/>```<br/><br/>Запись сообщений:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-console-producer.sh \<br/> --bootstrap-server &lt;адрес сервис брокера&gt;:9093 \<br/> --topic &lt;topic&gt; \<br/> --producer.config /work/user-write.properties<br/>```<br/><br/>Чтение сообщений:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-console-consumer.sh \<br/> --bootstrap-server &lt;адрес сервис брокера&gt;:9093 \<br/> --topic &lt;topic&gt; \<br/> --from-beginning \<br/> --group &lt;group&gt; \<br/> --consumer.config /work/user-read.properties \<br/> --max-messages 50<br/>```<br/><br/>---<br/><br/>## 7. Пример внешнего подключения с использованием **kcat**<br/><br/>**Листинг топиков**<br/><br/>```bash<br/>kcat -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \<br/> -L \<br/> -X security.protocol=SSL \<br/> -X ssl.ca.location=./ca.crt \<br/> -X ssl.certificate.location=./user-read.crt \<br/> -X ssl.key.location=./user-read.key \<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>**Запись сообщения**<br/><br/>```bash<br/> echo &quot;hello from kcat&quot; | kcat -P \<br/> -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \<br/> -t write-test \<br/> -X security.protocol=SSL \<br/> -X ssl.ca.location=./ca.crt \<br/> -X ssl.certificate.location=./user-write.crt \<br/> -X ssl.key.location=./user-write.key \<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>**Чтение сообщений**<br/><br/>```bash<br/>kcat -C \<br/> -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \<br/> -t write-test \<br/> -o beginning \<br/> -q \<br/> -X security.protocol=SSL \<br/> -X ssl.ca.location=./ca.crt \<br/> -X ssl.certificate.location=./user-read.crt \<br/> -X ssl.key.location=./user-read.key \<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>---<br/><br/><br/>## 9. Рекомендации<br/><br/>* Минимизируйте набор разрешённых операций для повышения безопасности.<br/>* Используйте отдельные учётные записи для продюсеров, консюмеров и системных сервисов.<br/>* Ограничивайте доступ по IP или подсетям с помощью параметра **Разрешённые хосты**.<br/>* После изменения прав или групп пользователя рекомендуется проверить подключение и доступ к топикам.<br/><br/>--- |
| `resume` | `instance` | `resume` | `` | `161` | | |
| `suspend` | `instance` | `suspend` | `` | `160` | | |
## Operation: create
| Code | Type | Required | Default | Description | Man | Constraints | ID |
|---|---|---|---|---|---|---|---|
| `resourceInstances` | `integer &gt; 0` | `ДА` | `` | Пример: `2` | | minvalue=1; value_list=1, 2, 3, 4, 5 | `461` |
| `resourceMemory` | `integer &gt; 0` | `ДА` | `` | Пример: `2048` | | minvalue=1000 | `462` |
| `resourceCPU` | `integer &gt; 0` | `ДА` | `` | Пример: `2000` | | minvalue=1000 | `463` |
| `resourceDisk` | `integer &gt; 0` | `ДА` | `` | Пример: `20` | | | `464` |
| `needExternalAddressMaster` | `boolean` | `ДА` | `false` | Флаг, определяющий, нужно ли выделять внешний IP для доступа к master-брокеру. Пример: `true` или `false` | | value_list=false, true | `465` |
| `ipSpaceNameMaster` | `string` | `НЕТ` | `` | Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1` | | | `466` |
| `resourceRealm` | `string` | `ДА` | `` | Выбрать платформу из списка | | func=getAvailableResourceRealms | `469` |
## Operation: create_topic
| Code | Type | Required | Default | Description | Man | Constraints | ID |
|---|---|---|---|---|---|---|---|
| `nameTopic` | `string` | `ДА` | `` | Пример: `orders-events` | | | `523` |
| `partitions` | `integer &gt; 0` | `ДА` | `` | Число партиций можно увеличить, но уменьшить их нельзя. | | | `524` |
| `replicas` | `integer &gt; 0` | `ДА` | `` | Количество реплик не может привышать количество реплик брокера | | | `525` |
## Operation: create_user
| Code | Type | Required | Default | Description | Man | Constraints | ID |
|---|---|---|---|---|---|---|---|
| `username` | `string` | `ДА` | `` | Пример: `username-admin` | | | `530` |
| `nameTopic` | `string` | `ДА` | `` | Пример: `orders-events`. Использовать маску нельзя(`orders*`), только полное название или `*` | | | `531` |
| `operations` | `string` | `ДА` | `` | Пример: `Create, Describe, Read, Write` | | | `532` |
| `group` | `string` | `ДА` | `` | Пример: `order-consumers` или `*` | | | `533` |
| `accessHosts` | `string` | `ДА` | `` | Пример: `192.168.1.0/24` или `*` | | | `534` |
## Operation: delete
None.
## Operation: delete_topic
| Code | Type | Required | Default | Description | Man | Constraints | ID |
|---|---|---|---|---|---|---|---|
| `nameTopic` | `string` | `ДА` | `` | Необходимо выбрать топик, который необходимо удалить | | | `529` |
## Operation: delete_user
| Code | Type | Required | Default | Description | Man | Constraints | ID |
|---|---|---|---|---|---|---|---|
| `username` | `string` | `ДА` | `` | Пример: `username-admin` | | | `540` |
## Operation: modify
| Code | Type | Required | Default | Description | Man | Constraints | ID |
|---|---|---|---|---|---|---|---|
| `resourceInstances` | `integer &gt; 0` | `НЕТ` | `` | Пример: `2` | | value_list=1, 2, 3, 4, 5 | `501` |
| `resourceMemory` | `integer &gt; 0` | `НЕТ` | `` | Пример: `2048` | | minvalue=1000 | `502` |
| `resourceCPU` | `` | `НЕТ` | `` | Пример: `2000` | | minvalue=1000 | `503` |
| `resourceDisk` | `integer &gt; 0` | `НЕТ` | `` | Пример: `20` | | | `504` |
| `needExternalAddressMaster` | `boolean` | `НЕТ` | `false` | Флаг, определяющий, нужно ли выделять внешний IP для доступа к master-брокеру. Пример: `true` или `false` | | value_list=false, true | `505` |
| `ipSpaceNameMaster` | `string` | `НЕТ` | `` | Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1` | | | `506` |
## Operation: modify_topic
| Code | Type | Required | Default | Description | Man | Constraints | ID |
|---|---|---|---|---|---|---|---|
| `nameTopic` | `string` | `ДА` | `` | Пример: `orders-events` | | | `526` |
| `partitions` | `` | `НЕТ` | `` | Число партиций на кластер ≤ 100 × (число брокеров) × (фактор репликации). Пример `50` | | | `527` |
| `replicas` | `` | `НЕТ` | `` | Количество партиций ≤ (число брокеров). Пример `2` | | | `528` |
## Operation: modify_user
| Code | Type | Required | Default | Description | Man | Constraints | ID |
|---|---|---|---|---|---|---|---|
| `nameTopic` | `string` | `НЕТ` | `` | Пример: `orders-events`. Использовать маску нельзя(`orders*`), только полное название или `*` | | | `535` |
| `operations` | `string` | `НЕТ` | `` | Пример: `Create, Describe, Read, Write` | | | `536` |
| `group` | `string` | `НЕТ` | `` | Пример: `order-consumers` или `*` | | | `537` |
| `accessHosts` | `string` | `НЕТ` | `` | Пример: `192.168.1.0/24` или `*` | | | `538` |
| `username` | `string` | `ДА` | `` | Пример: `username-admin` | | | `539` |
## Operation: resume
None.
## Operation: suspend
None.