Кейс: конфигурация Kafka в разных окружениях
Ситуация
Сервис запускался локально, но не мог подняться в интеграционном окружении. Kafka-клиент пытался подключиться к адресу по умолчанию вместо сетевого имени брокера внутри инфраструктуры.
Одна и та же сборка вела себя по-разному из-за активного профиля и неполной конфигурации.
Чек-лист разбора
Такой сбой удобно разбирать по цепочке:
- какой Spring profile действительно активен;
- итоговое значение
bootstrap.serversпосле подстановки переменных; - передаёт ли интеграционное окружение нужную переменную;
- разрешается ли имя брокера из контейнера приложения;
- не маскирует ли локальное значение по умолчанию отсутствие production-настройки.
Важно смотреть не только YAML в репозитории, а уже разрешённое значение, с которым создаётся Kafka client.
Мой вклад
Я параметризовал адрес брокера через переменную окружения и добавил её в конфигурацию интеграционного запуска:
spring:
kafka:
bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092}Локальное значение осталось удобным для разработки, а остальные окружения стали явно передавать собственный адрес.
Результат
Один и тот же артефакт начал запускаться в разных окружениях без ручного редактирования конфигурационного файла.
Что я теперь проверяю
- активный профиль;
- источник каждого значения: файл, env, command line;
- DNS-имя из точки запуска приложения;
- advertised listeners брокера;
- отсутствие секретов и внутренних адресов в репозитории.