Repository navigation
Link explicit Ingress classes and scoped class parameters - #2008
nadaverell wants to merge 4 commits into
Conversation
PR Summary by QodoLink Ingress classes and scoped IngressClass parameters
AI Description
Diagram
High-Level Assessment
Files changed (5)
|
Code Review by Qodo🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)
Great, no issues found!Qodo reviewed your code and found no material issues that require reviewTip of the day💡 Did you know, you can route each severity your way: inline, summary, both, or drop |
IngressClassParams is singular and plural at once, so hosts that navigate without loaded discovery (Radar Hub's fleet view, Radar's cold direct-URL load) pluralized the parameter link to the nonexistent ingressclassparamses.
Hosts without discovery also fold the plural back with pluralToKind, which produced Ingressclassparam and dropped the object's events in Radar Hub. One unqualified entry serves both directions, so the group-qualified Kind entry is no longer needed.
The Ingress drawer showed
spec.ingressClassNameas plain text, and an IngressClass'sspec.parameterscould not be opened. Both are now links:spec.ingressClassNameopens the cluster-scopednetworking.k8s.ioIngressClass. The legacykubernetes.io/ingress.classannotation stays plain text, because its value is a controller-specific string, not necessarily an IngressClass name.apiGroupmeans the core group and an omittedscopemeans Cluster. Ascope: Namespacereference with no namespace stays plain text instead of guessing one.IngressClassParams(AWS Load Balancer Controller) is singular and plural at once, so English pluralization turns it into the nonexistentingressclassparamses. Radar resolves it through API discovery, but Radar Hub's fleet view navigates without discovery, so the link would have opened a missing resource there. A builtiningressclassparams↔IngressClassParamsentry in the navigation map fixes this for every host, including Hub's fold back to a Kind, which its event query filters on.Scope: the shared UI (
@skyhook-io/k8s-ui), used by Radar and Radar Hub. No topology, MCP context or readiness inference. A default class is not inferred.Validation: tests cover the parameter-reference conversion, Ingress and both parameter scopes clicked through, the legacy annotation (no link), and the no-discovery plural mapping. In a browser on a kind cluster with the official AWS Load Balancer Controller CRD installed, the links open the IngressClass, the real
IngressClassParamsobject and a ConfigMap in its declared namespace; the legacy annotation renders without a link.Note
Low Risk
UI-only navigation and pluralization fixes in shared k8s-ui renderers; no auth, data, or cluster mutation paths.
Overview
Ingress and IngressClass drawers now use clickable
ResourceLinknavigation instead of plain text where the API gives a real object reference.An Ingress with
spec.ingressClassNameopens the cluster-scopednetworking.k8s.ioIngressClass. The deprecatedkubernetes.io/ingress.classannotation is still shown as text only, since it is not guaranteed to name an IngressClass resource.IngressClass
spec.parameterslink to the referenced object when aResourceRefcan be built: default core API group and Cluster scope when omitted; namespaced parameters require an explicit namespace (otherwise the name stays plain text).IngressClassRendereracceptsonNavigatelike other renderers.Navigation without API discovery gains a builtin map entry for AWS
IngressClassParams(elbv2.k8s.aws), whose plural is identical to the kind and would otherwise break English pluralization in Radar Hub’s fleet view.Tests cover parameter ref conversion, click-through for Ingress class and both parameter scopes, legacy annotation behavior, and the no-discovery plural mapping.
Reviewed by Cursor Bugbot for commit 13c6413. Bugbot is set up for automated code reviews on this repo. Configure here.