Как работать с Apache Kafka в DevOps-контексте?

«Как работать с Apache Kafka в DevOps-контексте?» — вопрос из категории Брокеры сообщений, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В DevOps Apache Kafka используется как высокодоступный брокер сообщений для стриминга данных, интеграции микросервисов и обработки логов. Основные практики:

1. Развертывание и оркестрация:

  • Используем StatefulSet в Kubernetes для развертывания кластера Kafka с постоянными томами (PersistentVolumes).
  • Настраиваем ZooKeeper (или KRaft в новых версиях) для координации.
  • Конфигурируем ресурсы (CPU, memory) и лимиты через Helm-чарты или операторы (Strimzi).

2. Конфигурация для надежности:

# Пример конфигурации топика для логов приложений
replication.factor: 3
min.insync.replicas: 2
retention.ms: 604800000 # 7 дней
compression.type: snappy

3. Мониторинг и алертинг:

  • Экспортируем метрики Kafka (JVM, throughput, lag) в Prometheus через JMX Exporter.
  • Настраиваем алерты в Alertmanager на критический лаг консьюмеров (consumer lag) или недоступность брокеров.
  • Используем Burrow или Kafka Lag Exporter для мониторинга отставания.

4. Интеграция в CI/CD пайплайны:

  • В пайплайнах развертывания проверяем доступность Kafka через health checks.
  • Автоматически создаем топики для новых сервисов с помощью Terraform-провайдера Kafka или скриптов.
  • Тестируем консьюмеры и продюсеры в staging-среде перед выкатом в production.

5. Ротация и безопасность:

  • Настраиваем SSL/TLS для шифрования трафика и SASL для аутентификации.
  • Используем ACL (Access Control Lists) для управления правами доступа к топикам.
  • Планируем rolling restarts для обновления версий без простоя.