feat: добавлено создание топика Kafka с настройкой ретеншна

- Добавлена переменная KAFKA_TOPIC_RETENTION_HOURS в env.example (по умолчанию 12 часов)
- Создана команда kafka-create-topic в Makefile для создания топика с ретеншном
- Интегрировано автоматическое создание топика в команду setup
- Команда использует переменные из .env файла для настройки топика
- Добавлена проверка существования переменных окружения
- Автор: Сергей Антропов, сайт: https://devops.org.ru
This commit is contained in:
Sergey Antropoff 2025-09-10 20:10:33 +03:00
parent 800fcde880
commit a513408c64
2 changed files with 25 additions and 1 deletions

View File

@ -6,7 +6,7 @@ PROJECT_NAME := sensus-infra
COMPOSE_FILE := docker-compose.yml
.PHONY: help setup up down restart status logs clean ps
.PHONY: kafka-topics kafka-ui postgres-cli clickhouse-cli
.PHONY: kafka-topics kafka-create-topic kafka-ui postgres-cli clickhouse-cli
.PHONY: health-check backup restore ssl-generate ssl-clean ssl-info
.PHONY: docker-install docker-update docker-compose-install docker-compose-update docker-check
@ -38,6 +38,8 @@ setup: ## Первоначальная настройка инфраструкт
@echo "⏳ Ожидание готовности сервисов..."
@sleep 30
@$(MAKE) health-check
@echo "📝 Создание топика Kafka..."
@$(MAKE) kafka-create-topic
@echo "✅ Инфраструктура готова к работе!"
# =============================================================================
@ -185,6 +187,27 @@ kafka-topics: ## Показать список топиков Kafka
@echo "📋 Список топиков Kafka:"
docker exec sensus-kafka kafka-topics --bootstrap-server localhost:9092 --list
kafka-create-topic: ## Создать топик Kafka с настройкой ретеншна
@echo "📝 Создание топика Kafka..."
@if [ -z "$$KAFKA_TOPIC" ]; then \
echo "❌ Переменная KAFKA_TOPIC не задана в .env файле"; \
exit 1; \
fi
@if [ -z "$$KAFKA_TOPIC_RETENTION_HOURS" ]; then \
echo "❌ Переменная KAFKA_TOPIC_RETENTION_HOURS не задана в .env файле"; \
exit 1; \
fi
@echo "🔧 Создание топика: $$KAFKA_TOPIC с ретеншном: $$KAFKA_TOPIC_RETENTION_HOURS часов"
@docker exec sensus-kafka kafka-topics \
--bootstrap-server localhost:9092 \
--create \
--topic $$KAFKA_TOPIC \
--partitions $$KAFKA_NUM_PARTITIONS \
--replication-factor $$KAFKA_DEFAULT_REPLICATION_FACTOR \
--config retention.ms=$$(($$KAFKA_TOPIC_RETENTION_HOURS * 3600000)) \
--if-not-exists || echo "⚠️ Топик уже существует или произошла ошибка"
@echo "✅ Топик $$KAFKA_TOPIC создан с ретеншном $$KAFKA_TOPIC_RETENTION_HOURS часов"
kafka-ui: ## Открыть Kafka UI в браузере
@echo "🌐 Kafka UI доступен по адресу: http://localhost:8080"

View File

@ -40,6 +40,7 @@ KAFKA_UI_USER_ROLES=ADMIN
# Kafka топики
KAFKA_TOPIC=sensus.metrics
KAFKA_TOPIC_RETENTION_HOURS=12
KAFKA_GROUP_ID=sensus-worker
KAFKA_CLIENT_ID=sensus-worker