Всем привет.
Пошёл 3 день конфигурации kafka...
Есть 1 брокер и zookeeper. Между собой прекрасно взаимодействуют. Есть kafka-gitops, который тоже прекрасно ходит в кластер под своим пользователем и создаёт/меняет топики/права. Есть клиент на php, который через rdkafka пытается послать сообщение в заданный топик, но получает:
%3|1690452667.087|FAIL|rdkafka#producer-1| [thrd:sasl_plaintext://10.0.200.20:9093/bootstrap]: sasl_plaintext://1.2.3.4:9092/bootstrap: SASL authentication error: Authentication failed: Invalid username or password (after 301ms in state AUTH_REQ)
При этом если поставить в настройки админского пользователя, то ошибок нет, но сообщение в топик не добавляется.
/etc/kafka/kafka_server_jaas.conf выглядит так:
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="pass"
user_admin="pass"
user_gitops-user="pass1"
user_dev="pass2";
};
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
user_admin="pass";
org.apache.kafka.common.security.plain.PlainLoginModule required
username="user_dev"
password="pass2";
};
Client {
org.apache.zookeeper.server.auth.DigestLoginModule required
username="admin"
password="pass";
};
Вполне может быть, что где-то тут ошибка, но всё запускается и работает... С этим файлом я упражнялся по всякому... Это текущий вариант.
Композ файлом не буду загромождать описание.
Переменные окружения про настройки безопасности:
KAFKA_SECURITY_PROTOCOL: 'SASL_PLAINTEXT'
KAFKA_OPTS: "-Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf"
KAFKA_SASL_ENABLED_MECHANISMS: PLAIN
KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL: PLAIN
KAFKA_AUTHORIZER_CLASS_NAME: "kafka.security.authorizer.AclAuthorizer"
на клиенте ставлю:
enqueue:
default:
transport:
dsn: '%env(resolve:ENQUEUE_DSN)%'
global:
group.id: 'dev-bp'
metadata.broker.list: '%env(resolve:KAFKA_BROKER_LIST)%'
sasl.mechanism: PLAIN
security.protocol: SASL_PLAINTEXT
sasl.username: '%env(resolve:KAFKA_BROKER_USER)%'
sasl.password: '%env(resolve:KAFKA_BROKER_PASS)%'
topic:
auto.offset.reset: 'beginning'
Подскажите, пожалуйста, где я ошибся?