Кейс: конфигурация Kafka в разных окружениях

Ситуация

Сервис запускался локально, но не мог подняться в интеграционном окружении. Kafka-клиент пытался подключиться к адресу по умолчанию вместо сетевого имени брокера внутри инфраструктуры.

Одна и та же сборка вела себя по-разному из-за активного профиля и неполной конфигурации.

Чек-лист разбора

Такой сбой удобно разбирать по цепочке:

  1. какой Spring profile действительно активен;
  2. итоговое значение bootstrap.servers после подстановки переменных;
  3. передаёт ли интеграционное окружение нужную переменную;
  4. разрешается ли имя брокера из контейнера приложения;
  5. не маскирует ли локальное значение по умолчанию отсутствие production-настройки.

Важно смотреть не только YAML в репозитории, а уже разрешённое значение, с которым создаётся Kafka client.

Мой вклад

Я параметризовал адрес брокера через переменную окружения и добавил её в конфигурацию интеграционного запуска:

spring:
  kafka:
    bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092}

Локальное значение осталось удобным для разработки, а остальные окружения стали явно передавать собственный адрес.

Результат

Один и тот же артефакт начал запускаться в разных окружениях без ручного редактирования конфигурационного файла.

Что я теперь проверяю

  • активный профиль;
  • источник каждого значения: файл, env, command line;
  • DNS-имя из точки запуска приложения;
  • advertised listeners брокера;
  • отсутствие секретов и внутренних адресов в репозитории.

Связанные заметки