Promote Kubernetes nodes to platform tab

This commit is contained in:
rcourtman
2026-05-24 12:52:54 +01:00
parent 49c9ca7656
commit 7c58ca0f79
10 changed files with 139 additions and 12 deletions
@@ -177,7 +177,9 @@ represented until the collector has a libpod-native source. Kubernetes config
tables must preserve the same trust boundary for metadata-only ConfigMap and
Secret rows: the shared table wording may indicate metadata-only inventory, but
must not imply payload fields were read when the agent used Kubernetes
metadata-only API responses.
metadata-only API responses. Kubernetes Node inventory must also be reachable
through a dedicated native tab, not only the overview stack, while retaining the
shared `PlatformSectionTabs` shell.
1. `frontend-modern/src/components/Settings/APIAccessPanel.tsx` shared with `security-privacy`: the API Access settings intro is both a security/privacy token-management trust surface and a canonical settings-shell presentation boundary.
The panel may own shell placement and local action layout, but
@@ -5066,7 +5066,12 @@
"frontend-modern/src/features/infrastructure/InfrastructurePageSurface.tsx",
"frontend-modern/src/features/infrastructure/useInfrastructurePageRouteState.ts",
"frontend-modern/src/features/infrastructure/useInfrastructurePageState.ts",
"frontend-modern/src/features/kubernetes/KubernetesClustersTable.tsx",
"frontend-modern/src/features/kubernetes/KubernetesDeploymentsTable.tsx",
"frontend-modern/src/features/kubernetes/KubernetesInventoryTable.tsx",
"frontend-modern/src/features/kubernetes/KubernetesNodesTable.tsx",
"frontend-modern/src/features/kubernetes/kubernetesPageModel.ts",
"frontend-modern/src/features/kubernetes/KubernetesPageSurface.tsx",
"frontend-modern/src/hooks/useUnifiedResources.ts",
"frontend-modern/src/routing/resourceLinks.ts",
"frontend-modern/src/types/resource.ts",
@@ -5194,7 +5199,12 @@
"frontend-modern/src/features/infrastructure/InfrastructurePageSurface.tsx",
"frontend-modern/src/features/infrastructure/useInfrastructurePageRouteState.ts",
"frontend-modern/src/features/infrastructure/useInfrastructurePageState.ts",
"frontend-modern/src/features/kubernetes/KubernetesClustersTable.tsx",
"frontend-modern/src/features/kubernetes/KubernetesDeploymentsTable.tsx",
"frontend-modern/src/features/kubernetes/KubernetesInventoryTable.tsx",
"frontend-modern/src/features/kubernetes/KubernetesNodesTable.tsx",
"frontend-modern/src/features/kubernetes/kubernetesPageModel.ts",
"frontend-modern/src/features/kubernetes/KubernetesPageSurface.tsx",
"frontend-modern/src/hooks/useUnifiedResources.ts",
"frontend-modern/src/routing/resourceLinks.ts",
"frontend-modern/src/types/resource.ts",
@@ -5222,7 +5232,10 @@
"frontend-modern/src/features/docker/__tests__/DockerPageSurface.test.tsx",
"frontend-modern/src/features/infrastructure/__tests__/infrastructurePageModel.test.ts",
"frontend-modern/src/features/infrastructure/__tests__/InfrastructurePageSurface.guardrails.test.ts",
"frontend-modern/src/features/kubernetes/__tests__/KubernetesClustersTable.test.tsx",
"frontend-modern/src/features/kubernetes/__tests__/KubernetesInventoryTable.test.tsx",
"frontend-modern/src/features/kubernetes/__tests__/kubernetesPageModel.test.ts",
"frontend-modern/src/features/kubernetes/__tests__/KubernetesPageSurface.contract.test.tsx",
"frontend-modern/src/hooks/__tests__/useUnifiedResources.test.ts",
"frontend-modern/src/routing/__tests__/resourceLinks.test.ts",
"frontend-modern/src/stores/__tests__/websocket-unified.test.ts",
@@ -124,6 +124,11 @@ cross-source deduplication.
100. `frontend-modern/src/features/agents/AgentsMachinesTable.tsx`
101. `internal/platformsupport/manifest_generated.go`
102. `frontend-modern/src/features/kubernetes/KubernetesInventoryTable.tsx`
103. `frontend-modern/src/features/kubernetes/KubernetesPageSurface.tsx`
104. `frontend-modern/src/features/kubernetes/kubernetesPageModel.ts`
105. `frontend-modern/src/features/kubernetes/KubernetesClustersTable.tsx`
106. `frontend-modern/src/features/kubernetes/KubernetesDeploymentsTable.tsx`
107. `frontend-modern/src/features/kubernetes/KubernetesNodesTable.tsx`
## Shared Boundaries
@@ -250,7 +255,7 @@ reintroduce false Swarm capability surfaces.
libpod-native source can populate a native contract instead of deriving pods
from Docker-compatible container labels.
Kubernetes inventory likewise projects native API objects as first-class
unified resources: namespaces, Services, ReplicaSets, StatefulSets,
unified resources: Nodes, namespaces, Services, ReplicaSets, StatefulSets,
DaemonSets, Jobs, CronJobs, Ingresses, EndpointSlices, NetworkPolicies,
PersistentVolumes, PersistentVolumeClaims, StorageClasses, ConfigMaps,
Secrets, ServiceAccounts, ResourceQuotas, LimitRanges,
@@ -263,6 +268,9 @@ reintroduce false Swarm capability surfaces.
carry key names, but Secret values are outside the unified resource contract.
Because Secret names and key names can disclose intent, `k8s-secret` policy
metadata must classify them as `restricted` with `local-only` routing.
Kubernetes Node inventory is an API-native resource surface, not merely
overview chrome: `/kubernetes/nodes` must expose the bespoke node table while
the overview may still include the same rows for cluster orientation.
2. Add typed accessors and views in `internal/unifiedresources/views.go`
3. Add source ingestion/adaptation in the adapter layer only
Frontend resource platform contracts in