strimzi / strimzi-kafka-operator

Apache Kafka® running on Kubernetes
https://strimzi.io/
Apache License 2.0
4.78k stars 1.27k forks source link

[Enhancement] Strimzi UI #3287

Closed matthew-chirgwin closed 2 years ago

matthew-chirgwin commented 4 years ago

Hello Strimzi team!

I would like to offer Strimzi a UI capability for viewing a list of topics in a Kafka cluster managed by Strimzi. I would suggest starting with just a topic listing for now to enable discussion around the capability, and as an example of how a UI frontend would be constructed, as well as how it then interacts with Kafka itself.

If successful and desired, this topic listing can then be expanded to enable general administration of a Kafka cluster from a UI.

ppatierno commented 4 years ago

Hi @matthew-chirgwin, of course having a UI is really interesting for the community. More users were asking about it. Personally, I am not a UI/UX expert so I will leave the proposal to you in order to discuss about it. The topic I can help more is about the "backend" that the UI should use to get the Kafka information to show in the UI. I guess that it comes to the discussion with @gmcrobert in the #2540.

gmcrobert commented 4 years ago

Would one of the maintainers like to volunteer to act as a mentor to help guide us as we build the infrastructure?

matthew-chirgwin commented 4 years ago

Hi @ppatierno ! That is great to hear :)

At a high level, what I would propose is as follows:

This UI would also be provided with a full set of supporting elements - such as end to end tests, automation (if acceptable in the Strimzi GitHub organisation) to manage common tasks, and documentation around implementation approach, UI best practise and so on.

This, as a prerequisite, will require some form of backend to interact with Kafka itself, which as you mention is being discussed in #2540 . The discussion here and in that issue will overlap I am sure - so more than happy to keep discussions separate/or combine them as appropriate.

I will work with local designers and attach a high level design of a Topics page to help drive the visual discussion. I would suggest using the Carbon design system for this UI, given it is open source and well supported.

One aspect I am interested in understanding and discussing from a Strimzi point of view is how would such a UI be offered/deployed? Ie, would it be preferable in your view to have it as a ‘standalone’ component (for example, like Kafka Connect), or as a part of the kafka spec deployed via the operator?

samuel-hawker commented 4 years ago

I would be more than happy to volunteer, unless any other maintainers wanted to instead?

One aspect I am interested in understanding and discussing from a Strimzi point of view is how would such a UI be offered/deployed?

In my opinion I like the model that was used for Cruise Control an optional component in the Kafka custom resource that is only added on spec.<ui> being present. That is unless we wanted to make a separate custom resource type for it, but I am unsure what value that has here. For KafkaConnect, you might have multiple per cluster, but for the UI I am unsure whether there is a use case for separate ui deployments configured differently?

ppatierno commented 4 years ago

@samuel-hawker more than happy for you to volunteer on this :-) Anyway I can provide my feedback and help if needed.

First of all, I would like to start the effort to open a proposal in the Strimzi proposals repo [1]. This is the way we are using for new features in order to discuss instead of using an issue (reviewing within a PR is easier for comments and feedback). So @matthew-chirgwin if you could open such a proposal with main points you made here and adding whatever you think should be added in the proposal, it would be awesome. Regarding the Carbon design system, is there no way to make the design system more pluggable or having people changing it easily? Anyway ... let's move the discussion on a proposal ;-)

[1] https://github.com/strimzi/proposals

matthew-chirgwin commented 4 years ago

For KafkaConnect, you might have multiple per cluster, but for the UI I am unsure whether there is a use case for separate ui deployments configured differently?

I was thinking/wondering of the case where you may want say one UI to be able to interface with N Kafka clusters (and if that were of value/interest) @samuel-hawker . If the UI were a part of the Kafka spec, would that restrict things? I am just about to move discussion over the a proposal, so perhaps worth continuing the converstation there :)

First of all, I would like to start the effort to open a proposal in the Strimzi proposals repo [1]. This is the way we are using for new features in order to discuss instead of using an issue (reviewing within a PR is easier for comments and feedback). So @matthew-chirgwin if you could open such a proposal with main points you made here and adding whatever you think should be added in the proposal, it would be awesome. Regarding the Carbon design system, is there no way to make the design system more pluggable or having people changing it easily? Anyway ... let's move the discussion on a proposal ;-)

Thanks @ppatierno - I will raise one now :)

scholzj commented 4 years ago

This UI is hosted and provided via an Express server

Out of curiosity from someone who isn't frontend developer ... what is the advantage of using Express server for serving the UI instead of just static files served from something simpler? Will it have some logic on the server and not just in the browser? Will is use some server side react stuff? Just trying to better understand the architecture - not really questioning the proposal since I don't understand this anyway.

matthew-chirgwin commented 4 years ago

This UI is hosted and provided via an Express server

Out of curiosity from someone who isn't frontend developer ... what is the advantage of using Express server for serving the UI instead of just static files served from something simpler? Will it have some logic on the server and not just in the browser? Will is use some server side react stuff? Just trying to better understand the architecture - not really questioning the proposal since I don't understand this anyway.

Hi @scholzj - I have it in the proposal (which I will be raising a PR for shortly), but the server will need to do more than host static files. It may need to do session management, enforce security, process responses/perform other general logic. In my experience, Express can be easily augmented to have these capabilities (and more) in a highly configurable manner, while maintaining a small footprint (vs say a whole JVM) and performance. Generaly speaking as well, it is part of the defacto stack for React UIs, alongside things like Webpack for build.

scholzj commented 4 years ago

@matthew-chirgwin Oki, great ... thanks for the explanation!

matthew-chirgwin commented 4 years ago

No problem @scholzj :)

I have just raised https://github.com/strimzi/proposals/pull/6 for further discussion.

scholzj commented 2 years ago

Triaged on 31.3.2022: We would still love a UI, but there are currently no plans to work on it.