Index
Документация по установке и использованию Kafka HA кластера через Strimzi Operator.
Оглавление
Описание
Strimzi Kafka Operator - Kubernetes оператор для управления Kafka кластерами с поддержкой HA режима.
Возможности
- ✅ HA Kafka Cluster режим
- ✅ Автоматическое управление кластером
- ✅ SASL/SCRAM-SHA-512 аутентификация
- ✅ Мониторинг через Kafka Exporter
- ✅ Persistent storage
- ✅ Cruise Control для ребалансировки
- ✅ Kafka UI для управления
Текущая конфигурация
- Operator namespace:
tech-kafka-operator - Clusters namespace:
tech-kafka-clusters - Storage: Longhorn (8Gi для Kafka и Zookeeper, StorageClass:
longhorn-kafka) - Placement: Operator и Kafka поды могут размещаться на любых нодах (masters + workers)
- Cluster size: 3 Kafka брокера + 3 Zookeeper ноды
- Authentication: SASL/SCRAM-SHA-512 (обязательная аутентификация)
- Authorization: Simple ACLs (полные права для kafka-cluster-user)
- Mode: Zookeeper (классический режим с Zookeeper)
Быстрый старт
1. Подготовка нод
Подготовка нод выполняется автоматически через Ansible playbook:
1 | |
Это добавит:
- На master нодах: label node-role.kubernetes.io/control-plane=true и taint node-role.kubernetes.io/control-plane:NoSchedule
- На worker нодах: label node-role.kubernetes.io/worker=true
2. Установка Operator
1 2 | |
Это установит Strimzi Kafka Operator через Helm chart из официального репозитория.
3. Создание кластера
1 | |
Это создаст:
- StorageClass longhorn-kafka
- Kafka кластер kafka-cluster с 3 брокерами в режиме KRaft (без Zookeeper)
- KafkaUser kafka-cluster-user с SASL/SCRAM-SHA-512 аутентификацией
Важно:
- KafkaUser автоматически создаст секрет kafka-cluster-user с паролем
- Пароль генерируется автоматически Strimzi оператором
- Username берется из имени KafkaUser: kafka-cluster-user
4. Установка Kafka UI
1 | |
5. Проверка статуса
1 | |
Архитектура
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | |
Команды
Управление
1 2 3 4 5 6 7 8 | |
Справка
1 | |
Конфигурация
Operator
Оператор устанавливается через Helm chart из официального репозитория:
- Helm chart: strimzi-kafka-operator/strimzi-kafka-operator версия 0.40.0
- Helm repository: https://strimzi.io/charts/
- CRDs устанавливаются автоматически при установке Helm chart
- ServiceAccount, Role, RoleBinding создаются автоматически
Кластер kafka-cluster
Конфигурация в manifests/kafka-operator/kafka-cluster.yaml:
- Kafka version: 3.7.0
- Mode: Zookeeper (классический режим)
- Replicas: 3 Kafka брокера + 3 Zookeeper ноды
- Storage: 8Gi per broker/Zookeeper (Longhorn, StorageClass:
longhorn-kafka) - Resources:
- Kafka: 200m-1 CPU, 512Mi-1Gi RAM per broker
- Zookeeper: 100m-500m CPU, 256Mi-512Mi RAM per node
- Listeners:
plain(port 9092): Internal, SASL/SCRAM-SHA-512tls(port 9093): Internal, TLS, SASL/SCRAM-SHA-512- Authentication: SASL/SCRAM-SHA-512 (обязательная)
- Authorization: Simple ACLs (org.apache.kafka.metadata.authorizer.SimpleAclAuthorizer)
- Node placement: Любые ноды (masters + workers)
- Pod anti-affinity: Разные ноды по
kubernetes.io/hostname
KafkaUser
KafkaUser kafka-cluster-user создается автоматически вместе с кластером:
- Authentication: SASL/SCRAM-SHA-512
- Authorization: Simple ACLs с полными правами на все топики, группы и транзакции
- Secret: Автоматически создается Strimzi с именем kafka-cluster-user
- Ключ password: пароль для аутентификации
- Ключ ca.crt: CA сертификат (для TLS)
StorageClass
StorageClass longhorn-kafka создается автоматически при создании кластера:
- Provisioner: driver.longhorn.io
- Replicas: 1
- Reclaim policy: Delete
- Volume binding: Immediate
Подключение
Connection Strings
1 2 3 4 5 6 7 | |
Authentication
- Mechanism: SASL/SCRAM-SHA-512
- Username:
kafka-cluster-user(из имени KafkaUser) - Password: Получить из секрета:
1kubectl -n tech-kafka-clusters get secret kafka-cluster-user -o jsonpath='{.data.password}' | base64 -d
Подключение через kubectl exec
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
Подключение из приложения
Python (kafka-python)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | |
Java (Spring Kafka)
1 2 3 4 5 6 7 8 9 10 11 | |
Примечание: Для production рекомендуется использовать Kubernetes Secrets для передачи пароля в приложение через переменные окружения или mounted volumes.
Kafka UI
Kafka UI - веб-интерфейс для управления и мониторинга Kafka кластеров.
Установка
1 | |
Доступ
1 2 3 4 5 | |
Подключение к кластеру в Kafka UI
- Kafka UI автоматически подключится к кластеру
kafka-clusterпри запуске - Используется аутентификация через секрет
kafka-cluster-user - В интерфейсе доступны:
- Просмотр топиков и их конфигурации
- Просмотр сообщений
- Управление consumer groups
- Мониторинг метрик кластера
Troubleshooting
Проверка статуса оператора
1 2 | |
Проверка статуса кластера
1 2 3 4 5 6 7 8 | |
Проверка Kafka кластера
1 2 3 4 5 6 7 8 9 10 11 | |
Проверка PVC
1 2 3 4 5 | |
Проверка аутентификации
1 2 3 4 5 | |
Пересоздание кластера
1 2 3 4 5 | |
Проблемы с KRaft контроллерами
1 2 3 4 5 | |