How sainsburys-tech/kafka-ui works
Kafbat UI is a browser-based Kafka operations console. Users inspect clusters and brokers, manage topics and access controls, browse or produce messages, and monitor consumer groups and metrics. The API organizes these operations around configured Kafka clusters and Kafka’s admin client; specialized services cover Connect, schemas, KSQL, topic analysis, and observability. Authentication and RBAC govern access, while message serialization and masking support safer data inspection. The README establishes the product capabilities; source excerpts and the index confirm only some internal calls, so other capability links are shown as unverified.
Main entry points: App.tsx Web UI · TopicsService.java Topic management · AdminClientService.java Admin client access · AbstractAuthSecurityConfig.java Authentication
Components 20
Web experience
- Web UI
frontend/src/components/App.tsx
Kafka operations
- Cluster configuration
api/src/main/java/io/kafbat/ui/config/ClustersProperties.java - Cluster model
api/src/main/java/io/kafbat/ui/model/KafkaCluster.java - Topic management
api/src/main/java/io/kafbat/ui/service/TopicsService.java - Topic details
api/src/main/java/io/kafbat/ui/model/InternalTopic.java - Admin client access
api/src/main/java/io/kafbat/ui/service/AdminClientService.java - Kafka admin operations
api/src/main/java/io/kafbat/ui/service/ReactiveAdminClient.java - ACL management
api/src/main/java/io/kafbat/ui/service/acl/AclsService.java - Topic analysis
api/src/main/java/io/kafbat/ui/service/analyze/TopicAnalysisService.java
Services and integrations
- Kafka Connect
api/src/main/java/io/kafbat/ui/service/KafkaConnectService.java - Schema Registry
api/src/main/java/io/kafbat/ui/service/SchemaRegistryService.java - KSQL queries
api/src/main/java/io/kafbat/ui/service/ksql/KsqlServiceV2.java - Metrics collection
api/src/main/java/io/kafbat/ui/service/metrics/scrape/MetricsScraper.java - Prometheus export
api/src/main/java/io/kafbat/ui/service/metrics/prometheus/PrometheusMetricsExposer.java - Message serialization
api/src/main/java/io/kafbat/ui/serdes/SerdesInitializer.java - Message masking
api/src/main/java/io/kafbat/ui/service/masking/DataMasking.java
Identity and access
- Authentication
api/src/main/java/io/kafbat/ui/config/auth/AbstractAuthSecurityConfig.java - RBAC decisions
api/src/main/java/io/kafbat/ui/service/rbac/AccessControlService.java - Access request model
api/src/main/java/io/kafbat/ui/model/rbac/AccessContext.java
Other components
- Kafka operator
Connections 18
- Kafka operator → Web UI: uses
- Web UI → Topic management: manages topics
- Web UI → Kafka Connect: manages connectors
- Web UI → Schema Registry: manages schemas
- Web UI → KSQL queries: runs queries
- Web UI → Metrics collection: views metrics
- Cluster configuration → Cluster model: configures
api/src/main/java/io/kafbat/ui/model/KafkaCluster.java - Topic management → Admin client access: requests client
api/src/main/java/io/kafbat/ui/service/TopicsService.java - Admin client access → Kafka admin operations: provides client
api/src/main/java/io/kafbat/ui/service/AdminClientService.java - Topic management → Topic details: builds details
api/src/main/java/io/kafbat/ui/service/TopicsService.java - Kafka operator → ACL management: configures permissions
- Kafka operator → Topic analysis: analyzes topics
- Kafka operator → Message serialization: views encoded messages
- Kafka operator → Message masking: protects message data
- Kafka operator → Authentication: signs in
- Authentication → RBAC decisions: supplies identity
- RBAC decisions → Access request model: checks permissions
api/src/main/java/io/kafbat/ui/service/rbac/AccessControlService.java - Kafka operator → Prometheus export: exports metrics