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

Provide more details in Backstage cluster overview #3216

Open
2 of 14 tasks
weatherhog opened this issue Feb 6, 2024 · 12 comments
Open
2 of 14 tasks

Provide more details in Backstage cluster overview #3216

weatherhog opened this issue Feb 6, 2024 · 12 comments
Assignees
Labels
honeybadger/ui In Team Honeybadger and dealing with user interfaces team/honeybadger Team Honey Badger ui/backstage The next generation web UI for Giant Swarm

Comments

@weatherhog
Copy link

weatherhog commented Feb 6, 2024

Image

Above: Screenshot of the cluster overview as of 2025-01-09.

In our Clusters list in Backstage, as of now we only provide a minimal set of cluster details. To make this more useful to platform teams and admins with a larger amount of clusters, we should add more details (customizable) and more filtering and sorting capabilities to this list.

Colums to add to the table:

  • Cluster app version
  • Release version
  • Kubernetes Version (including EOL marker)
  • Kubernetes EOL date
  • Number of node pools
  • Number of nodes (control plane and node pools)
  • Pod CIDRs (.spec.clusterNetwork.pods.cidrBlocks)
  • Service CIDRs (.spec.clusterNetwork.services.cidrBlocks)
  • Control plane failure domains (availability zones, .status.failureDomains)
  • Control plane ready (.status.controlPlaneReady)
  • Infrastructure ready (.status.infrastructureReady)
  • Configurable set of labels and annotations from the cluster.x-k8s.io resource
  • AWS account ID (and equivalent for other providers)
  • Type of cluster (Giant Swarm vs. imported EKS etc.)
@weatherhog weatherhog added team/honeybadger Team Honey Badger honeybadger/ui In Team Honeybadger and dealing with user interfaces component/devportal The Giant Swarm developer portal built with Backstage labels Feb 6, 2024
@marians marians added the ui/backstage The next generation web UI for Giant Swarm label Feb 26, 2024
@marians
Copy link
Member

marians commented Apr 17, 2024

To support platform teams managing lots of clusters, I would like to set a focus on providing a much richer clusters list. In addition to that, some information may only be accessible on a per-cluster basis. But here I want to propose some items and functions for the tabular list.

  • Annotations and labels on the cluster.x-k8s.io Cluster resource. Some of them are defined by Giant Swarm for a purpose we know (example: scheduled upgrade), some are defined by the customer. We could offer one table column per annotation key and per label key. As this would make the table overly wide, so these columns would have to be hidden by default and custom column selection would be offered.

  • Grouping the cluster overview by a user-defined column. For example, a customer uses labels like acme/environment: production on a cluster. This way the list can be grouped by environment production/development/staging.

  • Filtering by columns. It should be easy to select a certain field and only show items with a certain value (or matching a pattern)

  • Additional details to show in columns, not necessarily from the main cluster resource. We might need ways to pull this from non Kubernetes sources, e. g. Prometheus, in a non-blocking way.

    • Kubernetes version
    • Number of worker nodes
    • CPU
    • RAM

@gusevda gusevda self-assigned this Apr 18, 2024
@marians
Copy link
Member

marians commented Jun 12, 2024

Adding a detail for the list view here: Let's show the GitOps icon for clusters managed through Flux. The logic for detecting this should be encoded in happa.

@marians marians assigned marians and unassigned gusevda Oct 11, 2024
@marians
Copy link
Member

marians commented Oct 11, 2024

Regarding how customer users access workload clusters, I don't know what's the status currently. Opened this thread to find out more. Team Shield is now responsible for the access part.

@marians
Copy link
Member

marians commented Oct 29, 2024

TODO:

  • Update spec
    • Happa icon
    • Add SSH access tab
  • Clarify whether we can show the providers supported by an installation

@marians
Copy link
Member

marians commented Jan 8, 2025

TODO: Marian reads through to check of it can get closed and moved to PDV

@marians marians removed the component/devportal The Giant Swarm developer portal built with Backstage label Jan 9, 2025
@github-project-automation github-project-automation bot moved this to Inbox 📥 in Roadmap Jan 9, 2025
@marians
Copy link
Member

marians commented Jan 9, 2025

Status:

  • Updated the main comment. Scope of this issue should be extending the details shown in the list. To be continued.
  • Looked into CAPA details to have an up-to-date picture of what would be available via the MC.

@gusevda I would like to talk to you at some point about how to deal with cascading loading of details, e. g. if some are not available in the Cluster resource itself, but instead in linked resources like AWSCluster, KubeadmControlPlane etc.

@marians marians added the needs/refinement Needs refinement in order to be actionable label Jan 10, 2025
@marians
Copy link
Member

marians commented Jan 13, 2025

@gusevda and I talked about this briefly today. We should do a spike towards populating list views based on requests for several types of resources. Example: In one column, show the AWS account ID, which is encoded in the AWSClusterRoleIdentity (infrastructure.cluster.x-k8s.io/v1beta2) resource in .spec.roleARN.

@marians
Copy link
Member

marians commented Jan 16, 2025

@fiunchinho mentioned that it would be great to have the cluster app version in the list view.

That's available in the main Cluster resource as annotation app.kubernetes.io/version or helm.sh/chart.

@marians
Copy link
Member

marians commented Jan 17, 2025

Here is a new wireframe of some faceted table views for clusters and deployments.

https://www.figma.com/design/JUpSVVpsvj81PvHC57EnsB/Backstage-%E2%80%93-cluster-list?node-id=0-1&t=zdLvybITc4o8wnbL-1

@marians marians changed the title Provide cluster details in Backstage cluster overview Provide more details in Backstage cluster overview Jan 20, 2025
@marians
Copy link
Member

marians commented Jan 21, 2025

@gusevda and I have discussed the implications of showing cluster details in the list view that are not available in the main Cluster resource. There are many examples for this, but just to name one:

In order to determine the ID of the AWS account the cluster is running in, we must fetch the AWSCluster resource, then read .spec.identityRef to then fetch the AWSClusterRoleIdentity, which has the account ID in the .spec.roleARN field value. That's two additional resources to fetch (apart from the Cluster resource).

The current situation with asynchronous queries to multiple management clusters already isn't ideal. The resulting table view gets re-rendered as a user reads the content, leading to rather unpredictable results when clicking a row item in the moment the underlying table changes etc. These unwanted side-effects of asynchronous requests would only get amplified if we decided to do more of them.

So instead we are planning to pre-fetch the entire table content before displaying results. While queries are in progress, we would show a status indicator with status info (in progress / done / failed) per management cluster. Our current assumption is that this would mostly affect users on their first visit to the list page. On subsequent visits, the client should have most data cached already.

Anyway, the duration to wait for the table to load will depend on the number of resource kinds to fetch. Hence we should be specific about which resources to fetch and avoiding querying some that are not needed (e. g. because the details they provide are not shown in any visible columns activated by the user). Note: the need to fetch a resource will also be affected by filter facets, which are not in scope of this issue.

Some information to display in the table will be provider-specific (as shown in the example above). There are several ways how this can play out in the UI. One option is to have very specific columns, e. g. one titled AWS Account ID and another e. g. named Azure subscription ID. Depending on the case, we might decide to introduce one column only (e. g. Account ID) to show information from various sources related to various providers.

@marians
Copy link
Member

marians commented Jan 23, 2025

In https://github.com/giantswarm/backstage/pull/627 I'm changing the TYPE column to show an icon, making room for more details horizontally.

@marians
Copy link
Member

marians commented Jan 23, 2025

https://github.com/giantswarm/backstage/pull/629 is for adding the RELEASE column.

@marians marians removed the needs/refinement Needs refinement in order to be actionable label Jan 23, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
honeybadger/ui In Team Honeybadger and dealing with user interfaces team/honeybadger Team Honey Badger ui/backstage The next generation web UI for Giant Swarm
Projects
Status: Inbox 📥
Development

No branches or pull requests

3 participants