Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scalability and Centralized Configuration #3383

Open
finally-fancy opened this issue Oct 8, 2024 · 0 comments
Open

Scalability and Centralized Configuration #3383

finally-fancy opened this issue Oct 8, 2024 · 0 comments

Comments

@finally-fancy
Copy link

Description
Instead of duplicating the UI definition (in ConfigMaps or CRDs) in every KCP workspace or namespace, the UI extensions should be centrally stored in the provider’s workspace. Busula can then read the UI configuration directly from the provider workspace as a single source of truth. This approach eliminates the need for duplication and ensures consistency across all workspaces.

Additionally, Busula can implement a lazy-loading mechanism to only load and display UI extensions on demand. This means Busula will only fetch and show the UI extensions if the corresponding CRD is found in the user’s workspace or namespace. This not only prevents unnecessary UI rendering but also improves performance when dealing with hundreds or thousands of different CRDs.

By storing the UI extensions and definitions in the provider workspace, implementing lazy loading, and having Busula read from this central location, you:

  • Eliminate the need for duplicating ConfigMaps or CRDs across each workspace or namespace.
  • Ensure a single source of truth for UI configurations.
  • Simplify updates, reduce operational overhead, and scale more effectively across multiple clusters or workspaces.
  • Optimize the UI’s performance by only loading UI extensions when corresponding CRDs are present, ensuring a faster and more efficient user experience in large-scale environments.

Reasons
Currently, the UI definition (which contains the layout or extension information for Busula) is deployed to each KCP workspace and namespace. This means that for every namespace, a separate ConfigMap (or in the future, a CRD) is created which contains the same UI configuration for the respective CRDs provided by the provider.

Problems with the Current Approach:

  • Duplication: The same UI definition must be duplicated across multiple workspaces and namespaces. If there is a change in the UI definition, the changes must be propagated across all workspaces, which leads to unnecessary overhead.
  • Synchronization Issue: Every time the provider updates the UI definition, there’s a risk of some workspaces or namespaces falling out of sync. Keeping all ConfigMaps (or future CRDs) updated across potentially hundreds or thousands of workspaces becomes a time-consuming and error-prone task.
  • Scalability Problems: As the number of workspaces increases, this duplication becomes even more problematic. Managing large-scale environments with many namespaces leads to configuration drift, where different clusters or workspaces end up with different versions of the UI definitions, potentially breaking the user experience.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant