-
Notifications
You must be signed in to change notification settings - Fork 69
Description
This issue is for a Linux Foundation mentorship project. A paid 12 week program. See https://mentorship.lfx.linuxfoundation.org/project/2f08a480-7e37-46f0-ab29-f3d18669dd17 There you can learn more and apply if interested. Please do not start this issue, as it is reserved for that project.
💥 Please do not ask if you can start this in this issue, see the link to apply. 💥
Please add example open source PRs to your cover letter (not necessarily headlamp plugin ones, but any that show your quality work and communication skills)
Strimzi Headlamp Plugin
A Kubernetes Dashboard Plugin for Apache Kafka Management
Project Summary
This project proposes the development of a Headlamp plugin for Strimzi, a leading Kubernetes operator for Apache Kafka. The plugin will provide a comprehensive UI for managing Kafka clusters, topics, users, and connectors directly within the Kubernetes dashboard, eliminating the need for separate tooling or CLI operations.
Problem Statement
Currently, Strimzi users must rely on kubectl commands and YAML manifests to manage their Kafka infrastructure. While Cruise Control UI exists for cluster rebalancing, there is no unified interface for day-to-day Kafka operations on Kubernetes. This creates several challenges:
Operational complexity
Managing topics, users, and connectors requires deep knowledge of Strimzi CRDs and kubectl commands.
Limited visibility
Understanding cluster health, consumer lag, and connector status requires multiple CLI commands or external tools.
Context switching
Platform teams must jump between Kubernetes dashboards and Kafka-specific tools.
Steep learning curve
New users struggle to understand the relationship between Strimzi resources and their Kafka clusters.
Goals and Objectives
Primary Goals
- Provide a visual interface for Strimzi resources within Headlamp
- Enable CRUD operations on Kafka topics, users, and connectors
- Display cluster health and status at a glance
- Surface operational insights without requiring CLI expertise
Stretch Goals
- Consumer group lag visualization (via Prometheus integration)
- Kafka Connect connector creation wizard
- MirrorMaker2 cross-cluster replication monitoring
Proposed Features
| Feature Area | Capabilities |
|---|---|
| Kafka Cluster Overview | Broker health status, listener endpoints, Kafka version, cluster conditions, readiness state |
| Topic Management | List/create/delete topics, partition count, replication factor, topic configs, ready status |
| User Management | View users, authentication type (TLS/SCRAM), ACL visualization, quota configurations |
| Kafka Connect | Connect cluster status, connector list, task states (running/paused/failed), restart actions |
| Kafka Bridge | HTTP bridge status, endpoint availability, configuration details |
| Entity Operator | Topic Operator and User Operator health, reconciliation status, recent events |
| Operational Events | Rolling updates timeline, certificate renewals, scaling events, error conditions |
Technical Approach
Data Sources
The plugin will retrieve data from multiple sources via the Kubernetes API:
Strimzi CRDs
Kafka, KafkaTopic, KafkaUser, KafkaConnect, KafkaConnector, KafkaBridge, KafkaMirrorMaker2, KafkaRebalance
Kubernetes Resources
Pods, StatefulSets, Services, Secrets, ConfigMaps, Events, PVCs
Prometheus Metrics (optional)
Broker metrics, consumer lag, JVM metrics if available
Architecture
The plugin will be built using Headlamp's plugin SDK with React and TypeScript. It will leverage Headlamp's existing Kubernetes API client for all data fetching, ensuring proper RBAC enforcement and authentication handling.
Key Technical Considerations
- No additional backend required - all data accessible via Kubernetes API
- RBAC-aware - respects existing Kubernetes permissions
- Consumer lag requires Prometheus or external tooling (documented limitation)
- Plugin packaged as standard Headlamp plugin for easy distribution
Proposed Timeline
| Phase | Deliverables |
|---|---|
| Week 1-2 | Community bonding, environment setup, deep dive into Strimzi CRDs and Headlamp plugin SDK |
| Week 3-4 | Plugin scaffold, Kafka cluster overview page with health status and broker information |
| Week 5-6 | KafkaTopic management - list, create, delete, view configurations |
| Week 7-8 | KafkaUser management - user list, ACL visualization, authentication details |
| Week 9 | Midterm evaluation, code review, bug fixes, documentation |
| Week 10-11 | KafkaConnect and KafkaConnector pages - connector status, task management, restart actions |
| Week 12-13 | KafkaBridge, Entity Operator status, operational events timeline |
| Week 14-16 | Testing, documentation, stretch goals (Prometheus integration), final polish |
| Week 17 | Final evaluation, release preparation, community handoff |
Expected Outcomes
- Fully functional Headlamp plugin published to the Headlamp plugin repository
- Comprehensive documentation including installation guide and user manual
- Unit and integration tests with CI/CD pipeline
- Demo video showcasing plugin capabilities
- Blog post announcing the plugin to both Strimzi and Headlamp communities
Required Skills for Contributor
- Essential: TypeScript, React
- Helpful: Kubernetes fundamentals, understanding of Custom Resource Definitions, Experience with Apache Kafka, familiarity with Strimzi, Headlamp plugin development
- Nice to have: Prometheus/metrics experience, UI/UX design skills
Mentorship
We are seeking mentors from both the Headlamp and Strimzi communities to guide the contributor. Ideally, we would have one mentor familiar with Headlamp plugin development and another with deep Strimzi expertise.
Community Benefit
- For Strimzi users: Simplified Kafka management without CLI expertise, better operational visibility
- For Platform teams: Unified dashboard for Kubernetes and Kafka resources, reduced context switching
- For Headlamp: Expanded ecosystem with a high-demand integration
- For the contributor: Real-world open source experience with two active CNCF projects
Contact and Next Steps
We welcome feedback from the Strimzi community on this proposal. Please share your thoughts on the proposed features, suggest additional capabilities, or express interest in mentorship.
- Strimzi Slack: #strimzi channel on CNCF Slack
- Headlamp Slack: #headlamp channel on Kubernetes slack
- Headlamp GitHub: https://github.com/kubernetes-sig/headlamp
- Strimzi GitHub: https://github.com/strimzi/strimzi-kafka-operator
Other open Headlamp LFX mentor projects
You only get max 3 applications, but maybe consider only applying to the 1-2 you are most interested in (and state your preference of the one you are most interested in your application). There are other projects to apply to as well.