Для начала нам нужен docker-compose файл, примерно следующего содержания:
services:
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
environment:
DYNAMIC_CONFIG_ENABLED: true
volumes:
- /etc/kafka-ui/kafka-ui.yaml:/etc/kafkaui/dynamic_config.yaml
- <kafka_cluster_1>truststore.jks:/etc/kafkaui/<kafka_cluster_1>truststore.jks
- <kafka_cluster_2>truststore.jks:/etc/kafkaui/<kafka_cluster_2>truststore.jks
- <kafka_cluster_3>truststore.jks:/etc/kafkaui/<kafka_cluster_3>truststore.jks
Если используем SSL, то обязательно монтируем java truststore.jks нужных кластеров.
Затем файлик kafka-ui.yaml:
auth:
type: LOGIN_FORM
spring:
security:
user:
name: <ui_user>
password: <ui_password>
kafka:
clusters:
- name: kafka-cluster-1
bootstrapServers: <bootstrap_hosts>:<ssl_port>
properties:
security.protocol: SASL_SSL
sasl.mechanism: SCRAM-SHA-256
sasl.jaas.config: org.apache.kafka.common.security.scram.ScramLoginModule required username="<user>" password="<password>";
ssl.truststore.location: /etc/kafkaui/<kafka_cluster_1>truststore.jks
ssl.truststore.password: <truststore_pass>
ssl.truststore.type: JKS
- name: kafka-cluster-2
bootstrapServers: <bootstrap_hosts>:<ssl_port>
properties:
security.protocol: SASL_SSL
sasl.mechanism: SCRAM-SHA-256
sasl.jaas.config: org.apache.kafka.common.security.scram.ScramLoginModule required username="<user>" password="<password>";
ssl.truststore.location: /etc/kafkaui/<kafka_cluster_2>truststore.jks
ssl.truststore.password: <truststore_pass>
ssl.truststore.type: JKS
- name: kafka-cluster-3
bootstrapServers: <bootstrap_hosts>:<ssl_port>
properties:
security.protocol: SASL_SSL
sasl.mechanism: PLAIN
sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="<user>" password="<password>";
ssl.truststore.location: /etc/kafkaui/<kafka_cluster_3>truststore.jks
ssl.truststore.password: <truststore_pass>
ssl.truststore.type: JKS
rbac:
roles: []
webclient: {}
В примере мы подключаем 3 кластера, все используют SSL, два из них на SCRAM аутентификации, обычно с ней хранят пользователей в zookeeper. Один кластер использует PLAIN.
По примеру можно подключать и другие кластера, меняя те или иные настройки, например SSL или механизмы аутентификации.
spring.security.user - это креды от входа в kafka-ui.
bootstrap сервера можно перечислять через запятую, но достаточно и одного.
#kafka