Переменные среды для взаимодействия с Kafka

Для настройки аутентификации и параметров подключения Kafka служат переменные среды:

KAFKA_AUTH – определяет режим аутентификации Kafka при подключении к брокеру. Возможные значения:

  • NONE – аутентификация отключена, используется по умолчанию. При выборе данного значения Kafka-брокер использует настройку «security.protocol=PLAINTEXT».

  • OAUTH2 – аутентификация по протоколу SASL_PLAINTEXT с механизмом OAUTHBEARER. При выборе данного значения Kafka-брокер использует настройки «security.protocol=SASL_PLAINTEXT» и «sasl.mechanism=OAUTHBEARER».

  • PLAIN – аутентификация по протоколу SASL_PLAINTEXT с механизмом PLAIN. При выборе данного значения Kafka-брокер использует настройки «security.protocol=SASL_PLAINTEXT» и «sasl.mechanism=PLAIN».

KAFKA_KEYCLOAK_URL – URL сервера Keycloak, используемого для аутентификации Kafka. Если переменная не указана, используется значение переменной «KEYCLOAK_URL».

KAFKA_KEYCLOAK_REALM – наименование Realm в Keycloak, используемого для аутентификации Kafka. Если переменная не указана, используется значение переменной «KEYCLOAK_REALM».

KAFKA_KEYCLOAK_CLIENT_ID – идентификатор клиента в Keycloak, используемый для аутентификации по механизму OAUTHBEARER.

KAFKA_KEYCLOAK_CLIENT_SECRET – секретный ключ клиента в Keycloak, используемый для аутентификации по механизму OAUTHBEARER.

KAFKA_LOGIN – имя пользователя для аутентификации по механизму PLAIN.

KAFKA_PASSWORD – пароль пользователя для аутентификации по механизму PLAIN.

Для выбора способов аутентификации служат настройки сервисов Kafka:

Настройки переменных для работы сервисов Kafka без аутентификации. Указываются настройкой «KAFKA_AUTH: NONE».

Настройки переменных среды для работы с Kafka-брокером по протоколу SASL_PLAINTEXT и механизму OAUTHBEARER. Указываются настройками:

  • KAFKA_AUTH: OAUTH2

  • KAFKA_KEYCLOAK_URL: <указать URL Keycloak для работы с Kafka> – если переменная не задана, используется значение переменной «KEYCLOAK_URL».

  • KAFKA_KEYCLOAK_REALM: <указать Realm в Keycloak> – если переменная не задана, используется значение переменной «KEYCLOAK_REALM».

  • KAFKA_KEYCLOAK_CLIENT_ID: <указать идентификатор клиента Keycloak> – если переменная не задана, используется значение переменной «KEYCLOAK_CLIENT_ID». Если оно также не указано, используется значение по умолчанию «dh-backend».

  • KAFKA_KEYCLOAK_CLIENT_SECRET: <указать секретный ключ клиента Keycloak> – если переменная не задана, используется значение переменной «KEYCLOAK_CLIENT_SECRET».

Настройки переменных среды для работы с Kafka-брокером по протоколу SASL_PLAINTEXT и механизму PLAIN:

  • KAFKA_AUTH: PLAIN

  • KAFKA_LOGIN: <указать имя пользователя> – если переменная не задана, используется значение по умолчанию «admin».

  • KAFKA_PASSWORD: <указать пароль пользователя> – если переменная не задана, используется значение по умолчанию «admin-secret».

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

Если значение базовых параметров:

  • spring.security.oauth2.client.registration.backend.clientSecret;

  • spring.security.oauth2.client.registration.backend.clientId;

  • docshouse.starter.kafka.sasl.oauthbearer.client-id;

  • docshouse.starter.kafka.sasl.oauthbearer.client-secret.

будет изменено через сервис конфигураций, после перезагрузки сервиса их значение используется в приоритете для соответствующих настроек.

Для корректной работы системы с брокером Kafka необходимо указать настройку «auto.create.topics.enable=true», позволяющую сервисам системы автоматически создавать топики, если при обращении они отсутствуют.

Также необходимо согласовать HTTP-протокол подключения к Keycloak между Kafka-брокером и клиентами. Если брокер использует HTTPS (https://), а Java-сервис указывает HTTP (http://), соединение будет отклонено.