@skyhook-io/k8s-ui 1.14.2 → 1.14.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/components/logs/LogCore.tsx +182 -16
- package/src/components/logs/LogsViewer.tsx +4 -21
- package/src/components/logs/WorkloadLogsViewer.tsx +5 -23
- package/src/components/resources/ResourcesView.tsx +150 -125
- package/src/components/resources/renderers/AWSManagedControlPlaneRenderer.tsx +2 -2
- package/src/components/resources/renderers/AlertRenderer.tsx +3 -3
- package/src/components/resources/renderers/ArgoApplicationRenderer.tsx +5 -5
- package/src/components/resources/renderers/CNPGClusterRenderer.tsx +1 -1
- package/src/components/resources/renderers/CertificateRenderer.tsx +3 -3
- package/src/components/resources/renderers/CertificateRequestRenderer.tsx +5 -5
- package/src/components/resources/renderers/ChallengeRenderer.tsx +8 -8
- package/src/components/resources/renderers/CiliumNetworkPolicyRenderer.tsx +3 -3
- package/src/components/resources/renderers/ClusterIssuerRenderer.tsx +2 -2
- package/src/components/resources/renderers/ClusterNetworkPolicyRenderer.tsx +3 -3
- package/src/components/resources/renderers/GatewayRenderer.tsx +2 -2
- package/src/components/resources/renderers/GenericRenderer.tsx +1 -1
- package/src/components/resources/renderers/IngressClassRenderer.tsx +1 -1
- package/src/components/resources/renderers/IstioPeerAuthenticationRenderer.tsx +3 -3
- package/src/components/resources/renderers/IstioServiceEntryRenderer.tsx +2 -2
- package/src/components/resources/renderers/KarpenterNodeClaimRenderer.tsx +3 -3
- package/src/components/resources/renderers/KnativeEventingRenderer.tsx +2 -2
- package/src/components/resources/renderers/KnativeRevisionRenderer.tsx +1 -1
- package/src/components/resources/renderers/KyvernoPolicyReportRenderer.tsx +23 -20
- package/src/components/resources/renderers/NetworkPolicyRenderer.tsx +2 -2
- package/src/components/resources/renderers/NodeRenderer.tsx +3 -3
- package/src/components/resources/renderers/OrderRenderer.tsx +6 -6
- package/src/components/resources/renderers/RoleRenderer.tsx +3 -3
- package/src/components/resources/renderers/RolloutRenderer.tsx +2 -2
- package/src/components/resources/renderers/SealedSecretRenderer.tsx +3 -3
- package/src/components/resources/renderers/SecretStoreRenderer.tsx +8 -8
- package/src/components/resources/renderers/VPARenderer.tsx +1 -1
- package/src/components/resources/renderers/VulnerabilityReportRenderer.tsx +1 -1
- package/src/components/resources/renderers/WebhookConfigRenderer.tsx +9 -9
- package/src/components/resources/renderers/badge-no-handrolled.test.tsx +6 -12
- package/src/components/resources/renderers/capi-cells.tsx +3 -0
- package/src/components/resources/renderers/certmanager-cells.tsx +2 -2
- package/src/components/resources/renderers/cnpg-cells.tsx +1 -1
- package/src/components/resources/renderers/eso-cells.tsx +17 -1
- package/src/components/resources/renderers/knative-cells.tsx +14 -1
- package/src/components/resources/renderers/kyverno-cells.tsx +14 -3
- package/src/components/resources/renderers/kyverno-modern-cells.tsx +6 -0
- package/src/components/resources/renderers/trivy-cells.tsx +7 -0
- package/src/components/resources/renderers/velero-cells.tsx +3 -0
- package/src/components/resources/resource-utils-calico.test.ts +6 -0
- package/src/components/resources/resource-utils-calico.ts +6 -2
- package/src/components/resources/resource-utils-certmanager.ts +2 -2
- package/src/components/resources/resource-utils-eso.test.ts +26 -1
- package/src/components/resources/resource-utils-eso.ts +13 -0
- package/src/components/resources/resource-utils-knative.ts +3 -3
- package/src/components/resources/resource-utils-trivy.ts +3 -0
- package/src/components/resources/resource-utils.ts +17 -1
- package/src/components/resources/resources-column-filter.test.ts +20 -0
- package/src/components/topology/TopologyGraph.tsx +18 -1
- package/src/components/topology/pod-phase-fallback.test.ts +24 -0
- package/src/theme/components.css +29 -0
- package/src/utils/badge-colors.ts +1 -1
- package/src/utils/index.ts +1 -0
- package/src/utils/log-export.test.ts +225 -0
- package/src/utils/log-export.ts +149 -0
- package/src/utils/navigation.test.ts +10 -0
- package/src/utils/navigation.ts +4 -0
|
@@ -716,7 +716,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
716
716
|
{ key: 'namespace', label: 'Namespace', width: 'w-48' },
|
|
717
717
|
{ key: 'status', label: 'Phase', width: 'w-28' },
|
|
718
718
|
{ key: 'duration', label: 'Duration', width: 'w-24' },
|
|
719
|
-
{ key: 'progress', label: 'Progress', width: 'w-24', tooltip: '
|
|
719
|
+
{ key: 'progress', label: 'Progress', width: 'w-24', tooltip: 'Completed tasks / currently known total; the total can grow during execution, and completion does not imply success' },
|
|
720
720
|
{ key: 'template', label: 'Template', width: 'w-40' },
|
|
721
721
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
722
722
|
],
|
|
@@ -835,13 +835,13 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
835
835
|
{ key: 'name', label: 'Name' },
|
|
836
836
|
{ key: 'status', label: 'Status', width: 'w-24' },
|
|
837
837
|
{ key: 'nodeClass', label: 'Node Class', width: 'w-36' },
|
|
838
|
-
{ key: 'limits', label: 'Limits', width: 'w-36', tooltip: '
|
|
839
|
-
{ key: 'disruption', label: 'Disruption', width: 'w-40' },
|
|
838
|
+
{ key: 'limits', label: 'Limits', width: 'w-36', tooltip: 'Configured provisioning ceilings — not what the pool has provisioned. Concurrent provisioning can exceed them during rapid scale-out, and a limit does not remove nodes already running.' },
|
|
839
|
+
{ key: 'disruption', label: 'Disruption', width: 'w-40', tooltip: 'Which nodes Karpenter may consolidate; budgets and timing controls can still prevent removal or replacement' },
|
|
840
840
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
841
841
|
],
|
|
842
842
|
nodeclaims: [
|
|
843
843
|
{ key: 'name', label: 'Name' },
|
|
844
|
-
{ key: 'status', label: 'Status', width: 'w-24' },
|
|
844
|
+
{ key: 'status', label: 'Status', width: 'w-24', tooltip: 'Launched means a cloud instance exists; Registered means it has joined Kubernetes; Ready means the node is fully initialized' },
|
|
845
845
|
{ key: 'instanceType', label: 'Instance Type', width: 'w-32' },
|
|
846
846
|
{ key: 'capacityType', label: 'Capacity', width: 'w-24', tooltip: 'Spot or On-Demand' },
|
|
847
847
|
{ key: 'zone', label: 'Zone', width: 'w-28' },
|
|
@@ -899,23 +899,23 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
899
899
|
nvidiaclusterpolicies: [
|
|
900
900
|
{ key: 'name', label: 'Name' },
|
|
901
901
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
902
|
-
{ key: 'components', label: 'Components', width: 'w-64', tooltip: 'Enabled GPU Operator components' },
|
|
903
|
-
{ key: 'mig', label: 'MIG', width: 'w-24' },
|
|
902
|
+
{ key: 'components', label: 'Components', width: 'w-64', tooltip: 'Enabled GPU Operator components" with "GPU Operator components enabled in spec — not whether they are running' },
|
|
903
|
+
{ key: 'mig', label: 'MIG', width: 'w-24', tooltip: 'Multi-Instance GPU exposure: single advertises uniform partitions as nvidia.com/gpu; mixed advertises separate partition profiles; none disables MIG-aware exposure' },
|
|
904
904
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
905
905
|
],
|
|
906
906
|
nvidiadrivers: [
|
|
907
907
|
{ key: 'name', label: 'Name' },
|
|
908
908
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
909
|
-
{ key: 'driverType', label: 'Type', width: 'w-28' },
|
|
910
|
-
{ key: 'version', label: 'Version', width: 'w-32' },
|
|
909
|
+
{ key: 'driverType', label: 'Type', width: 'w-28', tooltip: 'Driver role: gpu for standard GPU workloads, vgpu for virtual GPU guests, or vgpu-host-manager for virtualization hosts' },
|
|
910
|
+
{ key: 'version', label: 'Version', width: 'w-32', tooltip: 'Driver version requested in spec — nodes may still be running the previous one' },
|
|
911
911
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
912
912
|
],
|
|
913
913
|
clusterqueues: [
|
|
914
914
|
{ key: 'name', label: 'Name' },
|
|
915
915
|
{ key: 'status', label: 'Status', width: 'w-24' },
|
|
916
|
-
{ key: 'cohort', label: 'Cohort', width: 'w-32' },
|
|
917
|
-
{ key: 'pendingWorkloads', label: 'Pending', width: 'w-24', tooltip: '
|
|
918
|
-
{ key: 'admittedWorkloads', label: 'Admitted', width: 'w-24', tooltip: '
|
|
916
|
+
{ key: 'cohort', label: 'Cohort', width: 'w-32', tooltip: 'Queues in this cohort can share unused quota, subject to borrowing and lending limits' },
|
|
917
|
+
{ key: 'pendingWorkloads', label: 'Pending', width: 'w-24', tooltip: 'Workloads in this ClusterQueue waiting for admission, across namespaces; inspect workload status for the blocker' },
|
|
918
|
+
{ key: 'admittedWorkloads', label: 'Admitted', width: 'w-24', tooltip: 'Unfinished workloads admitted through this ClusterQueue, across namespaces; admission does not mean their pods are running' },
|
|
919
919
|
{ key: 'flavors', label: 'Flavors', width: 'w-40' },
|
|
920
920
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
921
921
|
],
|
|
@@ -924,8 +924,8 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
924
924
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
925
925
|
{ key: 'status', label: 'Status', width: 'w-24' },
|
|
926
926
|
{ key: 'clusterQueue', label: 'Cluster Queue', width: 'w-40' },
|
|
927
|
-
{ key: 'pendingWorkloads', label: 'Pending', width: 'w-24' },
|
|
928
|
-
{ key: 'admittedWorkloads', label: 'Admitted', width: 'w-24' },
|
|
927
|
+
{ key: 'pendingWorkloads', label: 'Pending', width: 'w-24', tooltip: 'Workloads submitted to this LocalQueue that are waiting for ClusterQueue admission' },
|
|
928
|
+
{ key: 'admittedWorkloads', label: 'Admitted', width: 'w-24', tooltip: 'Unfinished workloads from this LocalQueue admitted to its ClusterQueue; their pods may still be waiting to run' },
|
|
929
929
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
930
930
|
],
|
|
931
931
|
workloads: [
|
|
@@ -946,14 +946,14 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
946
946
|
admissionchecks: [
|
|
947
947
|
{ key: 'name', label: 'Name' },
|
|
948
948
|
{ key: 'status', label: 'Status', width: 'w-24' },
|
|
949
|
-
{ key: 'controllerName', label: 'Controller', width: 'w-64' },
|
|
949
|
+
{ key: 'controllerName', label: 'Controller', width: 'w-64', tooltip: 'Controller responsible for this check; workloads requiring it cannot be admitted until the check passes' },
|
|
950
950
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
951
951
|
],
|
|
952
952
|
provisioningrequests: [
|
|
953
953
|
{ key: 'name', label: 'Name' },
|
|
954
954
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
955
955
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
956
|
-
{ key: 'provisioningClassName', label: 'Class', width: 'w-56' },
|
|
956
|
+
{ key: 'provisioningClassName', label: 'Class', width: 'w-56', tooltip: 'Provisioning mode: check-capacity checks existing capacity without reserving it; best-effort-atomic-scale-up creates capacity atomically' },
|
|
957
957
|
{ key: 'podSets', label: 'Pod Sets', width: 'w-24' },
|
|
958
958
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
959
959
|
],
|
|
@@ -979,7 +979,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
979
979
|
{ key: 'name', label: 'Name' },
|
|
980
980
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
981
981
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
982
|
-
{ key: 'serviceStatus', label: 'Service Status', width: 'w-28' },
|
|
982
|
+
{ key: 'serviceStatus', label: 'Service Status', width: 'w-28', tooltip: "KubeRay's serving-readiness flag; this does not describe the active rollout phase." },
|
|
983
983
|
{ key: 'clusters', label: 'Clusters', width: 'w-56', tooltip: 'Active and pending RayCluster names' },
|
|
984
984
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
985
985
|
],
|
|
@@ -989,7 +989,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
989
989
|
{ key: 'status', label: 'Status', width: 'w-24' },
|
|
990
990
|
{ key: 'schedule', label: 'Schedule', width: 'w-32' },
|
|
991
991
|
{ key: 'timeZone', label: 'Time Zone', width: 'w-36', tooltip: 'IANA zone the schedule is read in; unset follows the local zone of the KubeRay operator pod' },
|
|
992
|
-
{ key: 'lastSchedule', label: 'Last Schedule', width: 'w-28' },
|
|
992
|
+
{ key: 'lastSchedule', label: 'Last Schedule', width: 'w-28', tooltip: 'Time since the last recorded schedule; this does not confirm the job started or succeeded.' },
|
|
993
993
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
994
994
|
],
|
|
995
995
|
leaderworkersets: [
|
|
@@ -1010,7 +1010,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1010
1010
|
{ key: 'ready', label: 'Ready', width: 'w-20' },
|
|
1011
1011
|
{ key: 'succeeded', label: 'Succeeded', width: 'w-24' },
|
|
1012
1012
|
{ key: 'failed', label: 'Failed', width: 'w-20' },
|
|
1013
|
-
{ key: 'restarts', label: 'Restarts', width: 'w-24' },
|
|
1013
|
+
{ key: 'restarts', label: 'Restarts', width: 'w-24', tooltip: 'Whole-JobSet restarts by the failure policy — every child Job is recreated' },
|
|
1014
1014
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1015
1015
|
],
|
|
1016
1016
|
inferenceservices: [
|
|
@@ -1065,7 +1065,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1065
1065
|
inferencepools: [
|
|
1066
1066
|
{ key: 'name', label: 'Name' },
|
|
1067
1067
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1068
|
-
{ key: 'status', label: 'Status', width: 'w-36', tooltip: 'Gateway acceptance and
|
|
1068
|
+
{ key: 'status', label: 'Status', width: 'w-36', tooltip: 'Gateway acceptance and reference errors across reported parents; Accepted does not prove backend Pods are ready.' },
|
|
1069
1069
|
{ key: 'selector', label: 'Selector', width: 'w-48' },
|
|
1070
1070
|
{ key: 'targetPorts', label: 'Target Ports', width: 'w-28' },
|
|
1071
1071
|
{ key: 'extensionRef', label: 'Endpoint Picker', width: 'w-40', tooltip: 'EPP extension service' },
|
|
@@ -1076,7 +1076,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1076
1076
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1077
1077
|
{ key: 'status', label: 'Status', width: 'w-24' },
|
|
1078
1078
|
{ key: 'poolRef', label: 'Pool', width: 'w-40', tooltip: 'Target InferencePool' },
|
|
1079
|
-
{ key: 'priority', label: 'Priority', width: 'w-24' },
|
|
1079
|
+
{ key: 'priority', label: 'Priority', width: 'w-24', tooltip: 'Higher values are served first when pool resources are scarce; an unset priority is treated as 0.' },
|
|
1080
1080
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1081
1081
|
],
|
|
1082
1082
|
volcanojobs: [
|
|
@@ -1084,7 +1084,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1084
1084
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1085
1085
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
1086
1086
|
{ key: 'queue', label: 'Queue', width: 'w-32' },
|
|
1087
|
-
{ key: 'minAvailable', label: 'Min Available', width: 'w-28' },
|
|
1087
|
+
{ key: 'minAvailable', label: 'Min Available', width: 'w-28', tooltip: 'Minimum pods that must be schedulable together for gang scheduling to start the job' },
|
|
1088
1088
|
{ key: 'pods', label: 'Pods', width: 'w-44', tooltip: 'Running / succeeded / failed pod counts' },
|
|
1089
1089
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1090
1090
|
],
|
|
@@ -1092,8 +1092,8 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1092
1092
|
{ key: 'name', label: 'Name' },
|
|
1093
1093
|
{ key: 'status', label: 'Status', width: 'w-24' },
|
|
1094
1094
|
{ key: 'weight', label: 'Weight', width: 'w-20' },
|
|
1095
|
-
{ key: 'capability', label: 'Capability', width: 'w-48' },
|
|
1096
|
-
{ key: 'allocated', label: 'Allocated', width: 'w-48' },
|
|
1095
|
+
{ key: 'capability', label: 'Capability', width: 'w-48', tooltip: 'Configured resource limits for this queue; actual allocation also depends on available resources and scheduler policy' },
|
|
1096
|
+
{ key: 'allocated', label: 'Allocated', width: 'w-48', tooltip: 'Resources the scheduler reports as allocated to this queue; these are allocations, not measured CPU or memory use' },
|
|
1097
1097
|
{ key: 'podGroups', label: 'PodGroups', width: 'w-44', tooltip: 'PodGroup counts by state' },
|
|
1098
1098
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1099
1099
|
],
|
|
@@ -1109,7 +1109,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1109
1109
|
{ key: 'name', label: 'Name' },
|
|
1110
1110
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1111
1111
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
1112
|
-
{ key: 'flows', label: 'Flows', width: 'w-20' },
|
|
1112
|
+
{ key: 'flows', label: 'Flows', width: 'w-20', tooltip: 'Declared job stages; dependencies control when each stage can start' },
|
|
1113
1113
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1114
1114
|
],
|
|
1115
1115
|
jobtemplates: [
|
|
@@ -1121,10 +1121,10 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1121
1121
|
kaiqueues: [
|
|
1122
1122
|
{ key: 'name', label: 'Name' },
|
|
1123
1123
|
{ key: 'status', label: 'Status', width: 'w-24' },
|
|
1124
|
-
{ key: 'parentQueue', label: 'Parent', width: 'w-32' },
|
|
1125
|
-
{ key: 'priority', label: 'Priority', width: 'w-20' },
|
|
1126
|
-
{ key: 'quota', label: 'Quota', width: 'w-52', tooltip: '
|
|
1127
|
-
{ key: 'allocated', label: 'Allocated', width: 'w-48' },
|
|
1124
|
+
{ key: 'parentQueue', label: 'Parent', width: 'w-32', tooltip: 'Parent queue whose resources are shared among its children; ancestor limits constrain allocations' },
|
|
1125
|
+
{ key: 'priority', label: 'Priority', width: 'w-20', tooltip: "Higher priority favors allocation of resources above quota and delays reclaim; it does not increase the queue's guaranteed quota" },
|
|
1126
|
+
{ key: 'quota', label: 'Quota', width: 'w-52', tooltip: 'Guaranteed resource allocation; the queue may exceed it when spare resources and configured limits allow' },
|
|
1127
|
+
{ key: 'allocated', label: 'Allocated', width: 'w-48', tooltip: 'Resources allocated to this queue and its descendants, including scheduled pods still starting; this is not measured utilization' },
|
|
1128
1128
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1129
1129
|
],
|
|
1130
1130
|
kaipodgroups: [
|
|
@@ -1139,9 +1139,9 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1139
1139
|
{ key: 'name', label: 'Name' },
|
|
1140
1140
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1141
1141
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
1142
|
-
{ key: 'instanceType', label: 'Instance Type', width: 'w-40', tooltip: '
|
|
1142
|
+
{ key: 'instanceType', label: 'Instance Type', width: 'w-40', tooltip: 'Requested node instance type; actual node hardware is not checked.' },
|
|
1143
1143
|
{ key: 'preset', label: 'Model', width: 'w-44', tooltip: 'Preset model (inference or tuning)' },
|
|
1144
|
-
{ key: 'nodes', label: 'Nodes', width: 'w-20', tooltip: 'Worker nodes
|
|
1144
|
+
{ key: 'nodes', label: 'Nodes', width: 'w-20', tooltip: 'Worker nodes listed by KAITO, with the target count when available; listing does not confirm readiness.' },
|
|
1145
1145
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1146
1146
|
],
|
|
1147
1147
|
ragengines: [
|
|
@@ -1149,7 +1149,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1149
1149
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1150
1150
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
1151
1151
|
{ key: 'embedding', label: 'Embedding Model', width: 'w-56', tooltip: 'Local model ID/image or remote endpoint' },
|
|
1152
|
-
{ key: 'instanceType', label: 'Instance Type', width: 'w-40' },
|
|
1152
|
+
{ key: 'instanceType', label: 'Instance Type', width: 'w-40', tooltip: 'Requested node instance type; actual node hardware is not checked.' },
|
|
1153
1153
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1154
1154
|
],
|
|
1155
1155
|
nimservices: [
|
|
@@ -1212,7 +1212,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1212
1212
|
{ key: 'name', label: 'Name' },
|
|
1213
1213
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1214
1214
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
1215
|
-
{ key: 'runtime', label: 'Runtime', width: 'w-44', tooltip: '
|
|
1215
|
+
{ key: 'runtime', label: 'Runtime', width: 'w-44', tooltip: 'Runtime template supplying training defaults; TrainJob settings can override its image and node count.' },
|
|
1216
1216
|
{ key: 'suspended', label: 'Suspended', width: 'w-24' },
|
|
1217
1217
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1218
1218
|
],
|
|
@@ -1271,18 +1271,18 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1271
1271
|
policyreports: [
|
|
1272
1272
|
{ key: 'name', label: 'Name' },
|
|
1273
1273
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1274
|
-
{ key: 'scope', label: 'Subject', width: 'w-56' },
|
|
1274
|
+
{ key: 'scope', label: 'Subject', width: 'w-56', tooltip: "The resource this report is about. Kyverno names the report after the resource's UID; use Subject to identify it." },
|
|
1275
1275
|
{ key: 'status', label: 'Status', width: 'w-32' },
|
|
1276
1276
|
{ key: 'pass', label: 'Pass', width: 'w-16' },
|
|
1277
1277
|
{ key: 'fail', label: 'Fail', width: 'w-16' },
|
|
1278
1278
|
{ key: 'warn', label: 'Warn', width: 'w-20' },
|
|
1279
|
-
{ key: 'error', label: 'Err', width: 'w-16' },
|
|
1279
|
+
{ key: 'error', label: 'Err', width: 'w-16', tooltip: 'Checks that could not be evaluated, for example because of missing context or a broken expression. Errors are not violations, but zero failures does not establish compliance while checks remain unevaluated.' },
|
|
1280
1280
|
{ key: 'skip', label: 'Skip', width: 'w-16' },
|
|
1281
1281
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1282
1282
|
],
|
|
1283
1283
|
clusterpolicyreports: [
|
|
1284
1284
|
{ key: 'name', label: 'Name' },
|
|
1285
|
-
{ key: 'scope', label: 'Subject', width: 'w-56' },
|
|
1285
|
+
{ key: 'scope', label: 'Subject', width: 'w-56', tooltip: "The resource this report is about. Kyverno names the report after the resource's UID; use Subject to identify it." },
|
|
1286
1286
|
{ key: 'status', label: 'Status', width: 'w-32' },
|
|
1287
1287
|
{ key: 'pass', label: 'Pass', width: 'w-16' },
|
|
1288
1288
|
{ key: 'fail', label: 'Fail', width: 'w-16' },
|
|
@@ -1296,14 +1296,16 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1296
1296
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1297
1297
|
{ key: 'status', label: 'Status', width: 'w-24' },
|
|
1298
1298
|
{ key: 'action', label: 'Action', width: 'w-36', tooltip: 'Enforcement at admission — Enforce blocks, Audit reports; Background only or Inactive when admission is disabled' },
|
|
1299
|
-
{ key: '
|
|
1299
|
+
{ key: 'ruleTypes', label: 'Types', width: 'w-40', tooltip: 'Rule kinds this policy declares. A policy can carry several, and the mix decides what it can do to a request.' },
|
|
1300
|
+
{ key: 'rules', label: 'Rules', width: 'w-20', defaultVisible: false },
|
|
1300
1301
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1301
1302
|
],
|
|
1302
1303
|
clusterpolicies: [
|
|
1303
1304
|
{ key: 'name', label: 'Name' },
|
|
1304
1305
|
{ key: 'status', label: 'Status', width: 'w-24' },
|
|
1305
1306
|
{ key: 'action', label: 'Action', width: 'w-36', tooltip: 'Enforcement at admission — Enforce blocks, Audit reports; Background only or Inactive when admission is disabled' },
|
|
1306
|
-
{ key: '
|
|
1307
|
+
{ key: 'ruleTypes', label: 'Types', width: 'w-40', tooltip: 'Rule kinds this policy declares. A policy can carry several, and the mix decides what it can do to a request.' },
|
|
1308
|
+
{ key: 'rules', label: 'Rules', width: 'w-20', defaultVisible: false },
|
|
1307
1309
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1308
1310
|
],
|
|
1309
1311
|
// Kyverno modern CEL family (policies.kyverno.io). "Enforcement" is the
|
|
@@ -1384,7 +1386,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1384
1386
|
// getModernKyvernoPolicyStatus), so a second one would be redundant.
|
|
1385
1387
|
deletingpolicies: [
|
|
1386
1388
|
{ key: 'name', label: 'Name' },
|
|
1387
|
-
{ key: 'lastRun', label: 'Last Run', width: 'w-28', tooltip: '
|
|
1389
|
+
{ key: 'lastRun', label: 'Last Run', width: 'w-28', tooltip: 'Last execution time reported by Kyverno. A timestamp does not prove every matching resource was deleted.' },
|
|
1388
1390
|
{ key: 'schedule', label: 'Schedule', width: 'w-32', tooltip: 'Cron schedule on which matched resources are deleted' },
|
|
1389
1391
|
{ key: 'appliesTo', label: 'Deletes', width: 'min-w-40' },
|
|
1390
1392
|
{ key: 'rules', label: 'Conditions', width: 'w-28', tooltip: 'CEL conditions narrowing what is deleted; none means every matched resource' },
|
|
@@ -1393,7 +1395,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1393
1395
|
namespaceddeletingpolicies: [
|
|
1394
1396
|
{ key: 'name', label: 'Name' },
|
|
1395
1397
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1396
|
-
{ key: 'lastRun', label: 'Last Run', width: 'w-28', tooltip: '
|
|
1398
|
+
{ key: 'lastRun', label: 'Last Run', width: 'w-28', tooltip: 'Last execution time reported by Kyverno. A timestamp does not prove every matching resource was deleted.' },
|
|
1397
1399
|
{ key: 'schedule', label: 'Schedule', width: 'w-32' },
|
|
1398
1400
|
{ key: 'appliesTo', label: 'Deletes', width: 'min-w-40' },
|
|
1399
1401
|
{ key: 'rules', label: 'Conditions', width: 'w-28' },
|
|
@@ -1410,12 +1412,14 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1410
1412
|
{ key: 'name', label: 'Name' },
|
|
1411
1413
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1412
1414
|
{ key: 'schedule', label: 'Schedule', width: 'w-32' },
|
|
1415
|
+
{ key: 'lastRun', label: 'Last Run', width: 'w-28', tooltip: 'Time since the controller last recorded an execution. A dash means it has not recorded one.' },
|
|
1413
1416
|
{ key: 'appliesTo', label: 'Deletes', width: 'min-w-40' },
|
|
1414
1417
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1415
1418
|
],
|
|
1416
1419
|
clustercleanuppolicies: [
|
|
1417
1420
|
{ key: 'name', label: 'Name' },
|
|
1418
1421
|
{ key: 'schedule', label: 'Schedule', width: 'w-32' },
|
|
1422
|
+
{ key: 'lastRun', label: 'Last Run', width: 'w-28', tooltip: 'Time since the controller last recorded an execution. A dash means it has not recorded one.' },
|
|
1419
1423
|
{ key: 'appliesTo', label: 'Deletes', width: 'min-w-40' },
|
|
1420
1424
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1421
1425
|
],
|
|
@@ -1459,7 +1463,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1459
1463
|
workflowtemplates: [
|
|
1460
1464
|
{ key: 'name', label: 'Name' },
|
|
1461
1465
|
{ key: 'namespace', label: 'Namespace', width: 'w-48' },
|
|
1462
|
-
{ key: 'entrypoint', label: 'Entrypoint', width: 'w-36' },
|
|
1466
|
+
{ key: 'entrypoint', label: 'Entrypoint', width: 'w-36', tooltip: 'Default template invoked when submitted as a workflow; submission may override it' },
|
|
1463
1467
|
{ key: 'templates', label: 'Templates', width: 'w-24' },
|
|
1464
1468
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1465
1469
|
],
|
|
@@ -1481,21 +1485,21 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1481
1485
|
{ key: 'name', label: 'Name' },
|
|
1482
1486
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1483
1487
|
{ key: 'selector', label: 'Selector', width: 'w-48' },
|
|
1484
|
-
{ key: 'serviceAccountSelector', label: 'Service Account Selector', width: 'w-48', defaultVisible: false },
|
|
1485
|
-
{ key: 'tier', label: 'Tier', width: 'w-28' },
|
|
1486
|
-
{ key: 'order', label: 'Order', width: 'w-24' },
|
|
1487
|
-
{ key: 'types', label: 'Types', width: 'w-28' },
|
|
1488
|
+
{ key: 'serviceAccountSelector', label: 'Service Account Selector', width: 'w-48', defaultVisible: false, tooltip: 'Endpoints must match both this service-account selector and the endpoint Selector; matching either one alone is insufficient.' },
|
|
1489
|
+
{ key: 'tier', label: 'Tier', width: 'w-28', tooltip: 'Tier precedence applies before policy Order. An earlier tier can allow or deny traffic before this policy is reached.' },
|
|
1490
|
+
{ key: 'order', label: 'Order', width: 'w-24', tooltip: 'Evaluation order within the tier — lowest runs first. Unset runs after every ordered policy.' },
|
|
1491
|
+
{ key: 'types', label: 'Types', width: 'w-28', tooltip: "Traffic directions this policy governs. If no applicable policy in the tier takes action, the tier's default action applies (Deny unless configured as Pass)." },
|
|
1488
1492
|
{ key: 'rules', label: 'Rules', width: 'w-24', tooltip: 'Ingress / Egress rule count' },
|
|
1489
1493
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1490
1494
|
],
|
|
1491
1495
|
calicoglobalnetworkpolicies: [
|
|
1492
1496
|
{ key: 'name', label: 'Name' },
|
|
1493
1497
|
{ key: 'selector', label: 'Selector', width: 'w-48' },
|
|
1494
|
-
{ key: 'namespaceSelector', label: 'Namespace Selector', width: 'w-48', defaultVisible: false },
|
|
1495
|
-
{ key: 'serviceAccountSelector', label: 'Service Account Selector', width: 'w-48', defaultVisible: false },
|
|
1496
|
-
{ key: 'tier', label: 'Tier', width: 'w-28' },
|
|
1497
|
-
{ key: 'order', label: 'Order', width: 'w-24' },
|
|
1498
|
-
{ key: 'types', label: 'Types', width: 'w-28' },
|
|
1498
|
+
{ key: 'namespaceSelector', label: 'Namespace Selector', width: 'w-48', defaultVisible: false, tooltip: 'Adds a namespace restriction to the endpoint Selector. Unset adds no namespace restriction; the other selectors still apply.' },
|
|
1499
|
+
{ key: 'serviceAccountSelector', label: 'Service Account Selector', width: 'w-48', defaultVisible: false, tooltip: 'Endpoints must match both this service-account selector and the endpoint Selector; matching either one alone is insufficient.' },
|
|
1500
|
+
{ key: 'tier', label: 'Tier', width: 'w-28', tooltip: 'Tier precedence applies before policy Order. An earlier tier can allow or deny traffic before this policy is reached.' },
|
|
1501
|
+
{ key: 'order', label: 'Order', width: 'w-24', tooltip: 'Evaluation order within the tier — lowest runs first. Unset runs after every ordered policy.' },
|
|
1502
|
+
{ key: 'types', label: 'Types', width: 'w-28', tooltip: "Traffic directions this policy governs. If no applicable policy in the tier takes action, the tier's default action applies (Deny unless configured as Pass)." },
|
|
1499
1503
|
{ key: 'rules', label: 'Rules', width: 'w-24', tooltip: 'Ingress / Egress rule count' },
|
|
1500
1504
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1501
1505
|
],
|
|
@@ -1503,57 +1507,57 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1503
1507
|
{ key: 'name', label: 'Name' },
|
|
1504
1508
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1505
1509
|
{ key: 'selector', label: 'Selector', width: 'w-48' },
|
|
1506
|
-
{ key: 'serviceAccountSelector', label: 'Service Account Selector', width: 'w-48', defaultVisible: false },
|
|
1507
|
-
{ key: 'tier', label: 'Tier', width: 'w-28' },
|
|
1508
|
-
{ key: 'order', label: 'Order', width: 'w-24' },
|
|
1509
|
-
{ key: 'stagedAction', label: 'Staged Action', width: 'w-32' },
|
|
1510
|
-
{ key: 'types', label: 'Types', width: 'w-28' },
|
|
1510
|
+
{ key: 'serviceAccountSelector', label: 'Service Account Selector', width: 'w-48', defaultVisible: false, tooltip: 'Endpoints must match both this service-account selector and the endpoint Selector; matching either one alone is insufficient.' },
|
|
1511
|
+
{ key: 'tier', label: 'Tier', width: 'w-28', tooltip: 'Tier precedence applies before policy Order. An earlier tier can allow or deny traffic before this policy is reached.' },
|
|
1512
|
+
{ key: 'order', label: 'Order', width: 'w-24', tooltip: 'Evaluation order within the tier — lowest runs first. Unset runs after every ordered policy.' },
|
|
1513
|
+
{ key: 'stagedAction', label: 'Staged Action', width: 'w-32', tooltip: 'Staged policies do not enforce traffic. Set and Learn preview rules; Delete stages removal of the matching enforced policy; Ignore is skipped. Omitted means Set.' },
|
|
1514
|
+
{ key: 'types', label: 'Types', width: 'w-28', tooltip: "Traffic directions this policy governs. If no applicable policy in the tier takes action, the tier's default action applies (Deny unless configured as Pass)." },
|
|
1511
1515
|
{ key: 'rules', label: 'Rules', width: 'w-24', tooltip: 'Ingress / Egress rule count' },
|
|
1512
1516
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1513
1517
|
],
|
|
1514
1518
|
calicostagedglobalnetworkpolicies: [
|
|
1515
1519
|
{ key: 'name', label: 'Name' },
|
|
1516
1520
|
{ key: 'selector', label: 'Selector', width: 'w-48' },
|
|
1517
|
-
{ key: 'namespaceSelector', label: 'Namespace Selector', width: 'w-48', defaultVisible: false },
|
|
1518
|
-
{ key: 'serviceAccountSelector', label: 'Service Account Selector', width: 'w-48', defaultVisible: false },
|
|
1519
|
-
{ key: 'tier', label: 'Tier', width: 'w-28' },
|
|
1520
|
-
{ key: 'order', label: 'Order', width: 'w-24' },
|
|
1521
|
-
{ key: 'stagedAction', label: 'Staged Action', width: 'w-32' },
|
|
1522
|
-
{ key: 'types', label: 'Types', width: 'w-28' },
|
|
1521
|
+
{ key: 'namespaceSelector', label: 'Namespace Selector', width: 'w-48', defaultVisible: false, tooltip: 'Adds a namespace restriction to the endpoint Selector. Unset adds no namespace restriction; the other selectors still apply.' },
|
|
1522
|
+
{ key: 'serviceAccountSelector', label: 'Service Account Selector', width: 'w-48', defaultVisible: false, tooltip: 'Endpoints must match both this service-account selector and the endpoint Selector; matching either one alone is insufficient.' },
|
|
1523
|
+
{ key: 'tier', label: 'Tier', width: 'w-28', tooltip: 'Tier precedence applies before policy Order. An earlier tier can allow or deny traffic before this policy is reached.' },
|
|
1524
|
+
{ key: 'order', label: 'Order', width: 'w-24', tooltip: 'Evaluation order within the tier — lowest runs first. Unset runs after every ordered policy.' },
|
|
1525
|
+
{ key: 'stagedAction', label: 'Staged Action', width: 'w-32', tooltip: 'Staged policies do not enforce traffic. Set and Learn preview rules; Delete stages removal of the matching enforced policy; Ignore is skipped. Omitted means Set.' },
|
|
1526
|
+
{ key: 'types', label: 'Types', width: 'w-28', tooltip: "Traffic directions this policy governs. If no applicable policy in the tier takes action, the tier's default action applies (Deny unless configured as Pass)." },
|
|
1523
1527
|
{ key: 'rules', label: 'Rules', width: 'w-24', tooltip: 'Ingress / Egress rule count' },
|
|
1524
1528
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1525
1529
|
],
|
|
1526
1530
|
calicoippools: [
|
|
1527
1531
|
{ key: 'name', label: 'Name' },
|
|
1528
1532
|
{ key: 'cidr', label: 'CIDR', width: 'w-44' },
|
|
1529
|
-
{ key: 'blockSize', label: 'Block Size', width: 'w-28' },
|
|
1530
|
-
{ key: 'encapsulation', label: 'Encapsulation', width: 'w-36' },
|
|
1531
|
-
{ key: 'natOutgoing', label: 'NAT Outgoing', width: 'w-32' },
|
|
1533
|
+
{ key: 'blockSize', label: 'Block Size', width: 'w-28', tooltip: 'CIDR prefix of each allocation block. A node can hold several blocks, so this is not a per-node pod cap. Unset means /26 for IPv4, /122 for IPv6.' },
|
|
1534
|
+
{ key: 'encapsulation', label: 'Encapsulation', width: 'w-36', tooltip: 'Overlay used for pod traffic between nodes. None routes pod addresses directly; CrossSubnet tunnels only between nodes on different subnets.' },
|
|
1535
|
+
{ key: 'natOutgoing', label: 'NAT Outgoing', width: 'w-32', tooltip: 'When enabled, outgoing traffic from this pool is masqueraded for destinations outside all Calico IP pools.' },
|
|
1532
1536
|
{ key: 'disabled', label: 'Disabled', width: 'w-28' },
|
|
1533
|
-
{ key: 'allowedUses', label: 'Allowed Uses', width: 'w-40', defaultVisible: false },
|
|
1537
|
+
{ key: 'allowedUses', label: 'Allowed Uses', width: 'w-40', defaultVisible: false, tooltip: 'Pools without Workload are skipped for automatic pod IP allocation. Omitted or empty allows Workload and Tunnel; existing allocations are unchanged.' },
|
|
1534
1538
|
{ key: 'nodeSelector', label: 'Node Selector', width: 'w-48', defaultVisible: false },
|
|
1535
1539
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1536
1540
|
],
|
|
1537
1541
|
calicohostendpoints: [
|
|
1538
1542
|
{ key: 'name', label: 'Name' },
|
|
1539
1543
|
{ key: 'node', label: 'Node', width: 'w-48' },
|
|
1540
|
-
{ key: 'interfaceName', label: 'Interface', width: 'w-32' },
|
|
1544
|
+
{ key: 'interfaceName', label: 'Interface', width: 'w-32', tooltip: '* applies policy to all host interfaces. When unset, Calico identifies the interface using Expected IPs.' },
|
|
1541
1545
|
{ key: 'expectedIPs', label: 'Expected IPs', width: 'w-48' },
|
|
1542
|
-
{ key: 'profiles', label: 'Profiles', width: 'w-48', defaultVisible: false },
|
|
1546
|
+
{ key: 'profiles', label: 'Profiles', width: 'w-48', defaultVisible: false, tooltip: "Profiles apply only if policy evaluation reaches them. A tier's implicit deny stops traffic before profiles, even when no rule matched." },
|
|
1543
1547
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1544
1548
|
],
|
|
1545
1549
|
calicotiers: [
|
|
1546
1550
|
{ key: 'name', label: 'Name' },
|
|
1547
|
-
{ key: 'order', label: 'Order', width: 'w-24' },
|
|
1548
|
-
{ key: 'defaultAction', label: 'Default Action', width: 'w-36' },
|
|
1551
|
+
{ key: 'order', label: 'Order', width: 'w-24', tooltip: 'Order this tier is evaluated in — lowest first. Unset runs after every ordered tier.' },
|
|
1552
|
+
{ key: 'defaultAction', label: 'Default Action', width: 'w-36', tooltip: 'If this tier selects the endpoint and traffic direction but no rule decides the packet, Deny drops it and Pass continues evaluation. Tiers with no applicable policy are skipped.' },
|
|
1549
1553
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1550
1554
|
],
|
|
1551
1555
|
calicostagedkubernetesnetworkpolicies: [
|
|
1552
1556
|
{ key: 'name', label: 'Name' },
|
|
1553
1557
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1554
1558
|
{ key: 'selector', label: 'Pod Selector', width: 'w-48' },
|
|
1555
|
-
{ key: 'stagedAction', label: 'Staged Action', width: 'w-32' },
|
|
1556
|
-
{ key: 'types', label: 'Types', width: 'w-28' },
|
|
1559
|
+
{ key: 'stagedAction', label: 'Staged Action', width: 'w-32', tooltip: 'Staged policies do not enforce traffic. Set and Learn preview rules; Delete stages removal of the matching enforced policy; Ignore is skipped. Omitted means Set.' },
|
|
1560
|
+
{ key: 'types', label: 'Types', width: 'w-28', tooltip: 'An explicitly listed direction can have zero rules. When policyTypes is omitted, Ingress is included and Egress is added when egress rules exist.' },
|
|
1557
1561
|
{ key: 'rules', label: 'Rules', width: 'w-24', tooltip: 'Ingress / Egress rule count' },
|
|
1558
1562
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1559
1563
|
],
|
|
@@ -1672,7 +1676,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1672
1676
|
{ key: 'name', label: 'Name' },
|
|
1673
1677
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1674
1678
|
{ key: 'url', label: 'URL', width: 'w-64' },
|
|
1675
|
-
{ key: 'type', label: 'Type', width: 'w-20', tooltip: 'default
|
|
1679
|
+
{ key: 'type', label: 'Type', width: 'w-20', tooltip: 'default: Flux fetches a Helm repository index. oci: a registry reference with no reconciliation status of its own' },
|
|
1676
1680
|
{ key: 'status', label: 'Status', width: 'w-24' },
|
|
1677
1681
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1678
1682
|
],
|
|
@@ -1684,7 +1688,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1684
1688
|
{ key: 'status', label: 'Status', width: 'w-24' },
|
|
1685
1689
|
{ key: 'revision', label: 'Revision', width: 'w-48', tooltip: 'Applied git revision' },
|
|
1686
1690
|
{ key: 'inventory', label: 'Resources', width: 'w-24', tooltip: 'Number of managed resources' },
|
|
1687
|
-
{ key: 'lastUpdated', label: 'Last Updated', width: 'w-28', tooltip: 'Time since last
|
|
1691
|
+
{ key: 'lastUpdated', label: 'Last Updated', width: 'w-28', tooltip: 'Time since the last recorded reconciliation attempt; falls back to the last Ready transition. Neither guarantees success.' },
|
|
1688
1692
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1689
1693
|
],
|
|
1690
1694
|
helmreleases: [
|
|
@@ -1712,8 +1716,8 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1712
1716
|
applications: [
|
|
1713
1717
|
{ key: 'name', label: 'Name' },
|
|
1714
1718
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1715
|
-
{ key: 'project', label: 'Project', width: 'w-28' },
|
|
1716
|
-
{ key: 'sync', label: 'Sync', width: 'w-24' },
|
|
1719
|
+
{ key: 'project', label: 'Project', width: 'w-28', tooltip: 'AppProject the app belongs to — bounds which repos and clusters it may deploy to' },
|
|
1720
|
+
{ key: 'sync', label: 'Sync', width: 'w-24', tooltip: "Whether live resources match Argo's desired manifests; Synced does not mean Healthy" },
|
|
1717
1721
|
{ key: 'health', label: 'Health', width: 'w-24' },
|
|
1718
1722
|
{ key: 'repo', label: 'Repository', width: 'w-48' },
|
|
1719
1723
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
@@ -1740,7 +1744,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1740
1744
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1741
1745
|
{ key: 'container', label: 'Container', width: 'w-28' },
|
|
1742
1746
|
{ key: 'image', label: 'Image', width: 'w-48' },
|
|
1743
|
-
{ key: 'critical', label: 'C', width: 'w-12', tooltip: 'Critical vulnerabilities' },
|
|
1747
|
+
{ key: 'critical', label: 'C', width: 'w-12', tooltip: 'Critical-severity vulnerabilities. C/H/M/L = Critical, High, Medium, Low.' },
|
|
1744
1748
|
{ key: 'high', label: 'H', width: 'w-12', tooltip: 'High vulnerabilities' },
|
|
1745
1749
|
{ key: 'medium', label: 'M', width: 'w-12', tooltip: 'Medium vulnerabilities' },
|
|
1746
1750
|
{ key: 'low', label: 'L', width: 'w-12', tooltip: 'Low vulnerabilities' },
|
|
@@ -1750,7 +1754,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1750
1754
|
{ key: 'name', label: 'Name' },
|
|
1751
1755
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1752
1756
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
1753
|
-
{ key: 'critical', label: 'C', width: 'w-12', tooltip: 'Critical
|
|
1757
|
+
{ key: 'critical', label: 'C', width: 'w-12', tooltip: 'Critical-severity failed checks. C/H/M/L = Critical, High, Medium, Low.' },
|
|
1754
1758
|
{ key: 'high', label: 'H', width: 'w-12', tooltip: 'High findings' },
|
|
1755
1759
|
{ key: 'medium', label: 'M', width: 'w-12', tooltip: 'Medium findings' },
|
|
1756
1760
|
{ key: 'low', label: 'L', width: 'w-12', tooltip: 'Low findings' },
|
|
@@ -1761,7 +1765,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1761
1765
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1762
1766
|
{ key: 'container', label: 'Container', width: 'w-28' },
|
|
1763
1767
|
{ key: 'image', label: 'Image', width: 'w-48' },
|
|
1764
|
-
{ key: 'critical', label: 'C', width: 'w-12', tooltip: 'Critical secrets' },
|
|
1768
|
+
{ key: 'critical', label: 'C', width: 'w-12', tooltip: 'Critical-severity exposed secrets. C/H/M/L = Critical, High, Medium, Low.' },
|
|
1765
1769
|
{ key: 'high', label: 'H', width: 'w-12', tooltip: 'High secrets' },
|
|
1766
1770
|
{ key: 'medium', label: 'M', width: 'w-12', tooltip: 'Medium secrets' },
|
|
1767
1771
|
{ key: 'low', label: 'L', width: 'w-12', tooltip: 'Low secrets' },
|
|
@@ -1797,13 +1801,15 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1797
1801
|
sbomreports: [
|
|
1798
1802
|
{ key: 'name', label: 'Name' },
|
|
1799
1803
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1804
|
+
{ key: 'image', label: 'Image', width: 'w-48', tooltip: 'Image the SBOM describes. The container name alone does not identify what was scanned.' },
|
|
1800
1805
|
{ key: 'container', label: 'Container', width: 'w-28' },
|
|
1801
|
-
{ key: 'components', label: 'Components', width: 'w-24' },
|
|
1806
|
+
{ key: 'components', label: 'Components', width: 'w-24', tooltip: 'Packages and libraries found in the image' },
|
|
1802
1807
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
1803
1808
|
{ key: 'age', label: 'Age', width: 'w-16' },
|
|
1804
1809
|
],
|
|
1805
1810
|
clustersbomreports: [
|
|
1806
1811
|
{ key: 'name', label: 'Name' },
|
|
1812
|
+
{ key: 'image', label: 'Image', width: 'w-48', tooltip: 'Image the SBOM describes. The container name alone does not identify what was scanned.' },
|
|
1807
1813
|
{ key: 'components', label: 'Components', width: 'w-24' },
|
|
1808
1814
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
1809
1815
|
{ key: 'age', label: 'Age', width: 'w-16' },
|
|
@@ -1833,6 +1839,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1833
1839
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1834
1840
|
{ key: 'status', label: 'Status', width: 'w-24' },
|
|
1835
1841
|
{ key: 'store', label: 'Store', width: 'w-36' },
|
|
1842
|
+
{ key: 'provider', label: 'Provider', width: 'w-48', tooltip: 'Backend the referenced store reads from. A dash means the store could not be read — it may not exist, or may be outside your access; an ellipsis means the stores are still loading.' },
|
|
1836
1843
|
{ key: 'refreshInterval', label: 'Refresh', width: 'w-24', tooltip: 'How often the value is re-pulled from the provider. A zero interval means it is fetched once and not updated afterward.' },
|
|
1837
1844
|
{ key: 'lastSync', label: 'Last Sync', width: 'w-28' },
|
|
1838
1845
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
@@ -1864,10 +1871,10 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1864
1871
|
{ key: 'name', label: 'Name' },
|
|
1865
1872
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1866
1873
|
{ key: 'status', label: 'Status', width: 'w-36' },
|
|
1867
|
-
{ key: 'storageLocation', label: 'Storage', width: 'w-36' },
|
|
1874
|
+
{ key: 'storageLocation', label: 'Storage', width: 'w-36', tooltip: "The backup's storage location. A completed backup still needs this location reachable to restore from." },
|
|
1868
1875
|
{ key: 'namespaces', label: 'Scope', width: 'w-24', tooltip: 'Included namespaces (* = all)' },
|
|
1869
1876
|
{ key: 'duration', label: 'Duration', width: 'w-24' },
|
|
1870
|
-
{ key: 'expiry', label: 'Expires', width: 'w-24' },
|
|
1877
|
+
{ key: 'expiry', label: 'Expires', width: 'w-24', tooltip: "When Velero's retention makes this backup eligible for cleanup. Expired means Velero intends to delete it, not that it is gone — and not that a restore will work." },
|
|
1871
1878
|
{ key: 'errors', label: 'Errors', width: 'w-28' },
|
|
1872
1879
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1873
1880
|
],
|
|
@@ -1911,7 +1918,8 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1911
1918
|
{ key: 'name', label: 'Name' },
|
|
1912
1919
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1913
1920
|
{ key: 'status', label: 'Status', width: 'w-36' },
|
|
1914
|
-
{ key: 'repositoryType', label: 'Type', width: 'w-24' },
|
|
1921
|
+
{ key: 'repositoryType', label: 'Type', width: 'w-24', tooltip: 'kopia or restic. Restic is deprecated — Velero 1.17 stopped creating restic backups and 1.19 drops restic restore.' },
|
|
1922
|
+
{ key: 'volumeNamespace', label: 'Volume NS', width: 'w-36', tooltip: 'Namespace whose volumes this repository stores. Distinct from the namespace the repository object lives in.' },
|
|
1915
1923
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1916
1924
|
],
|
|
1917
1925
|
backupstoragelocations: [
|
|
@@ -1920,8 +1928,8 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1920
1928
|
{ key: 'status', label: 'Status', width: 'w-36' },
|
|
1921
1929
|
{ key: 'provider', label: 'Provider', width: 'w-24' },
|
|
1922
1930
|
{ key: 'bucket', label: 'Bucket', width: 'w-40' },
|
|
1923
|
-
{ key: 'default', label: 'Default', width: 'w-24' },
|
|
1924
|
-
{ key: 'lastValidation', label: 'Validated', width: 'w-28' },
|
|
1931
|
+
{ key: 'default', label: 'Default', width: 'w-24', tooltip: 'Whether this location is marked default. A backup naming no storage location is written to the default one.' },
|
|
1932
|
+
{ key: 'lastValidation', label: 'Validated', width: 'w-28', tooltip: 'Time since Velero last validated this location. An old value means availability has not been checked recently; validation may be disabled or configured to run less often.' },
|
|
1925
1933
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1926
1934
|
],
|
|
1927
1935
|
// ============================================================================
|
|
@@ -1941,7 +1949,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1941
1949
|
{ key: 'status', label: 'Status', width: 'w-44' },
|
|
1942
1950
|
{ key: 'instances', label: 'Instances', width: 'w-28', tooltip: 'Ready/Total' },
|
|
1943
1951
|
{ key: 'primary', label: 'Primary', width: 'w-36' },
|
|
1944
|
-
{ key: 'image', label: 'Image', width: 'w-28' },
|
|
1952
|
+
{ key: 'image', label: 'Image', width: 'w-28', tooltip: 'Configured image tag, or the operator-resolved image for a catalog-backed cluster. This does not confirm that every instance has finished updating.' },
|
|
1945
1953
|
// No Storage column: it rendered spec.storage.size, the configured REQUEST.
|
|
1946
1954
|
// The useful number is actual usage (kubectl cnpg status shows "Size: 158M")
|
|
1947
1955
|
// and that isn't in the CR. A plausible-but-wrong-meaning number is worse
|
|
@@ -1959,7 +1967,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1959
1967
|
updaterequests: [
|
|
1960
1968
|
{ key: 'name', label: 'Name' },
|
|
1961
1969
|
{ key: 'namespace', label: 'Namespace', width: 'w-32' },
|
|
1962
|
-
{ key: 'status', label: 'State', width: 'w-28' },
|
|
1970
|
+
{ key: 'status', label: 'State', width: 'w-28', tooltip: 'Pending work Kyverno has queued but not yet applied; Failed is work it tried and could not.' },
|
|
1963
1971
|
{ key: 'type', label: 'Type', width: 'w-24' },
|
|
1964
1972
|
{ key: 'policy', label: 'Policy', width: 'w-52' },
|
|
1965
1973
|
{ key: 'triggers', label: 'Triggered By', width: 'w-56' },
|
|
@@ -1970,7 +1978,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1970
1978
|
{ key: 'namespace', label: 'Namespace', width: 'w-32' },
|
|
1971
1979
|
{ key: 'status', label: 'Outcome', width: 'w-28' },
|
|
1972
1980
|
{ key: 'subject', label: 'About', width: 'w-56' },
|
|
1973
|
-
{ key: 'source', label: 'Produced By', width: 'w-36' },
|
|
1981
|
+
{ key: 'source', label: 'Produced By', width: 'w-36', tooltip: 'Admission: evaluated during an API admission request. Background scan: evaluated against existing resources.' },
|
|
1974
1982
|
{ key: 'results', label: 'Results', width: 'w-24' },
|
|
1975
1983
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
1976
1984
|
],
|
|
@@ -1985,7 +1993,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
1985
1993
|
cnpgdatabases: [
|
|
1986
1994
|
{ key: 'name', label: 'Name' },
|
|
1987
1995
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
1988
|
-
{ key: 'status', label: 'Applied', width: 'w-32' },
|
|
1996
|
+
{ key: 'status', label: 'Applied', width: 'w-32', tooltip: 'Whether the operator has applied this to PostgreSQL. Pending means it has not reconciled it yet — not that it failed.' },
|
|
1989
1997
|
{ key: 'cluster', label: 'Cluster', width: 'w-36' },
|
|
1990
1998
|
{ key: 'target', label: 'Database', width: 'w-40' },
|
|
1991
1999
|
{ key: 'message', label: 'Message', width: 'w-64' },
|
|
@@ -2081,8 +2089,8 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2081
2089
|
{ key: 'name', label: 'Name' },
|
|
2082
2090
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
2083
2091
|
{ key: 'status', label: 'Status', width: 'w-24' },
|
|
2084
|
-
{ key: 'hosts', label: 'Hosts', width: 'w-48' },
|
|
2085
|
-
{ key: 'gateways', label: 'Gateways', width: 'w-40' },
|
|
2092
|
+
{ key: 'hosts', label: 'Hosts', width: 'w-48', tooltip: 'Request hostnames this VirtualService matches — not the backends it routes to' },
|
|
2093
|
+
{ key: 'gateways', label: 'Gateways', width: 'w-40', tooltip: "Where these routing rules apply. '-' means the default mesh gateway — sidecar traffic; individual route matches can override this." },
|
|
2086
2094
|
{ key: 'routes', label: 'Routes', width: 'w-20', tooltip: 'HTTP + TCP + TLS routes' },
|
|
2087
2095
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
2088
2096
|
],
|
|
@@ -2093,7 +2101,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2093
2101
|
{ key: 'host', label: 'Host', width: 'w-48', tooltip: "The service this rule's traffic policy applies to" },
|
|
2094
2102
|
{ key: 'subsets', label: 'Subsets', width: 'w-20', tooltip: 'Named backend groups that routes can select, often for canary releases. Defining subsets does not send traffic to them.' },
|
|
2095
2103
|
{ key: 'tlsMode', label: 'Client TLS', width: 'w-28', tooltip: 'Declared client-side TLS mode for this host at the rule level. Subset and port policies can override it; this does not establish the effective mTLS posture.' },
|
|
2096
|
-
{ key: 'loadBalancer', label: 'LB Policy', width: 'w-28', tooltip: "Load balancing algorithm
|
|
2104
|
+
{ key: 'loadBalancer', label: 'LB Policy', width: 'w-28', tooltip: "Load balancing algorithm for this host. A dash means Istio's mesh default applies (LEAST_REQUEST since Istio 1.14). Subset and port policies can differ." },
|
|
2097
2105
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
2098
2106
|
],
|
|
2099
2107
|
serviceentries: [
|
|
@@ -2107,8 +2115,8 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2107
2115
|
peerauthentications: [
|
|
2108
2116
|
{ key: 'name', label: 'Name' },
|
|
2109
2117
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
2110
|
-
{ key: 'mode', label: 'mTLS Mode', width: 'w-28' },
|
|
2111
|
-
{ key: 'selector', label: 'Selector', width: 'w-48' },
|
|
2118
|
+
{ key: 'mode', label: 'mTLS Mode', width: 'w-28', tooltip: 'Incoming connection policy: STRICT requires mTLS; PERMISSIVE also accepts plaintext; DISABLE turns mTLS off (unsupported in ambient). UNSET inherits the broader policy, defaulting to PERMISSIVE. Port-level overrides can differ.' },
|
|
2119
|
+
{ key: 'selector', label: 'Selector', width: 'w-48', tooltip: 'Selects workloads in this namespace. No selector defines a namespace default, or a mesh default in the root namespace; more specific policies can override it.' },
|
|
2112
2120
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
2113
2121
|
],
|
|
2114
2122
|
authorizationpolicies: [
|
|
@@ -2126,7 +2134,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2126
2134
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
2127
2135
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
2128
2136
|
{ key: 'url', label: 'URL', width: 'w-56' },
|
|
2129
|
-
{ key: 'latestRevision', label: 'Latest Revision', width: 'w-44' },
|
|
2137
|
+
{ key: 'latestRevision', label: 'Latest Revision', width: 'w-44', tooltip: 'Newest revision that has reported Ready. A newer revision may still be starting or may have failed; this revision need not receive traffic.' },
|
|
2130
2138
|
{ key: 'traffic', label: 'Traffic', width: 'w-48' },
|
|
2131
2139
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
2132
2140
|
],
|
|
@@ -2135,16 +2143,16 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2135
2143
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
2136
2144
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
2137
2145
|
{ key: 'latestCreated', label: 'Latest Created', width: 'w-48' },
|
|
2138
|
-
{ key: 'latestReady', label: 'Latest Ready', width: 'w-48' },
|
|
2146
|
+
{ key: 'latestReady', label: 'Latest Ready', width: 'w-48', tooltip: 'Newest revision that has reported Ready. If it differs from Latest Created, the newer revision may still be starting or may have failed; inspect Status.' },
|
|
2139
2147
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
2140
2148
|
],
|
|
2141
2149
|
knativerevisions: [
|
|
2142
2150
|
{ key: 'name', label: 'Name' },
|
|
2143
2151
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
2144
2152
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
2145
|
-
{ key: 'routing', label: 'Traffic', width: 'w-20', tooltip: '
|
|
2153
|
+
{ key: 'routing', label: 'Traffic', width: 'w-20', tooltip: 'Active: marked for Route traffic, even if scaled to zero. Reserve: not currently marked for Route traffic. Neither value measures incoming requests.' },
|
|
2146
2154
|
{ key: 'image', label: 'Image', width: 'w-48' },
|
|
2147
|
-
{ key: 'concurrency', label: 'Concurrency', width: 'w-32' },
|
|
2155
|
+
{ key: 'concurrency', label: 'Concurrency', width: 'w-32', tooltip: "Hard limit on simultaneous requests handled by each pod; excess requests are buffered. Unlimited removes this cap, not autoscaling's target." },
|
|
2148
2156
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
2149
2157
|
],
|
|
2150
2158
|
knativeroutes: [
|
|
@@ -2169,7 +2177,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2169
2177
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
2170
2178
|
{ key: 'broker', label: 'Broker', width: 'w-36' },
|
|
2171
2179
|
{ key: 'subscriber', label: 'Subscriber', width: 'w-48' },
|
|
2172
|
-
{ key: 'filter', label: 'Filter', width: 'w-48' },
|
|
2180
|
+
{ key: 'filter', label: 'Filter', width: 'w-48', tooltip: 'Selects which broker events are eligible for delivery. No filtering admits every event; it does not guarantee successful delivery. Expression filters override attribute filters.' },
|
|
2173
2181
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
2174
2182
|
],
|
|
2175
2183
|
eventtypes: [
|
|
@@ -2186,7 +2194,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2186
2194
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
2187
2195
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
2188
2196
|
{ key: 'schedule', label: 'Schedule', width: 'w-36' },
|
|
2189
|
-
{ key: 'sink', label: 'Sink', width: 'w-48' },
|
|
2197
|
+
{ key: 'sink', label: 'Sink', width: 'w-48', tooltip: 'Requested event destination. A displayed reference does not prove it resolved or received events; inspect conditions when delivery fails.' },
|
|
2190
2198
|
{ key: 'data', label: 'Data', width: 'w-36' },
|
|
2191
2199
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
2192
2200
|
],
|
|
@@ -2243,14 +2251,14 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2243
2251
|
{ key: 'name', label: 'Name' },
|
|
2244
2252
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
2245
2253
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
2246
|
-
{ key: 'steps', label: 'Steps', width: 'w-16' },
|
|
2254
|
+
{ key: 'steps', label: 'Steps', width: 'w-16', tooltip: "Stages events pass through in order; each stage's reply feeds the next" },
|
|
2247
2255
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
2248
2256
|
],
|
|
2249
2257
|
parallels: [
|
|
2250
2258
|
{ key: 'name', label: 'Name' },
|
|
2251
2259
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
2252
2260
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
2253
|
-
{ key: 'branches', label: 'Branches', width: 'w-20' },
|
|
2261
|
+
{ key: 'branches', label: 'Branches', width: 'w-20', tooltip: 'Independent filter-and-subscriber pairs; every event is offered to all of them' },
|
|
2254
2262
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
2255
2263
|
],
|
|
2256
2264
|
// Knative Networking
|
|
@@ -2260,7 +2268,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2260
2268
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
2261
2269
|
{ key: 'ingressClass', label: 'Class', width: 'w-24' },
|
|
2262
2270
|
{ key: 'hosts', label: 'Hosts', width: 'w-56' },
|
|
2263
|
-
{ key: 'visibility', label: 'Visibility', width: 'w-28' },
|
|
2271
|
+
{ key: 'visibility', label: 'Visibility', width: 'w-28', tooltip: 'Requested exposure across all rules. ExternalIP means at least one rule requests external exposure; ClusterLocal means all rules request cluster-only exposure. This does not verify connectivity.' },
|
|
2264
2272
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
2265
2273
|
],
|
|
2266
2274
|
knativecertificates: [
|
|
@@ -2269,13 +2277,14 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2269
2277
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
2270
2278
|
{ key: 'dnsNames', label: 'DNS Names', width: 'w-56' },
|
|
2271
2279
|
{ key: 'secretName', label: 'Secret', width: 'w-44' },
|
|
2280
|
+
{ key: 'expires', label: 'Expires', width: 'w-28', tooltip: 'Expiry of the certificate in the named Secret, as the controller reported it.' },
|
|
2272
2281
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
2273
2282
|
],
|
|
2274
2283
|
serverlessservices: [
|
|
2275
2284
|
{ key: 'name', label: 'Name' },
|
|
2276
2285
|
{ key: 'namespace', label: 'Namespace', width: 'w-36' },
|
|
2277
2286
|
{ key: 'status', label: 'Status', width: 'w-28' },
|
|
2278
|
-
{ key: 'mode', label: 'Mode', width: 'w-20' },
|
|
2287
|
+
{ key: 'mode', label: 'Mode', width: 'w-20', tooltip: 'Requested backend mode: Serve selects revision pods; Proxy selects activators. Activators may remain involved with healthy pods for burst handling, so Proxy does not prove a cold start.' },
|
|
2279
2288
|
{ key: 'age', label: 'Age', width: 'w-24' },
|
|
2280
2289
|
],
|
|
2281
2290
|
domainmappings: [
|
|
@@ -2289,7 +2298,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2289
2298
|
ingressroutes: [
|
|
2290
2299
|
{ key: 'name', label: 'Name', width: 'min-w-40' },
|
|
2291
2300
|
{ key: 'namespace', label: 'Namespace', width: 'w-36 shrink-0' },
|
|
2292
|
-
{ key: 'entrypoints', label: 'Entry Points', width: 'w-32 shrink-0' },
|
|
2301
|
+
{ key: 'entrypoints', label: 'Entry Points', width: 'w-32 shrink-0', tooltip: 'Entry points this route binds to. When unset, Traefik uses the default entry points from its static configuration.' },
|
|
2293
2302
|
{ key: 'hosts', label: 'Hosts', width: 'min-w-44' },
|
|
2294
2303
|
{ key: 'routes', label: 'Routes', width: 'min-w-48' },
|
|
2295
2304
|
{ key: 'tls', label: 'TLS', width: 'w-14 shrink-0' },
|
|
@@ -2299,7 +2308,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2299
2308
|
ingressroutetcps: [
|
|
2300
2309
|
{ key: 'name', label: 'Name', width: 'min-w-40' },
|
|
2301
2310
|
{ key: 'namespace', label: 'Namespace', width: 'w-36 shrink-0' },
|
|
2302
|
-
{ key: 'entrypoints', label: 'Entry Points', width: 'w-32 shrink-0' },
|
|
2311
|
+
{ key: 'entrypoints', label: 'Entry Points', width: 'w-32 shrink-0', tooltip: 'Entry points this route binds to. When unset, Traefik uses the default entry points from its static configuration.' },
|
|
2303
2312
|
{ key: 'hosts', label: 'Hosts', width: 'min-w-44' },
|
|
2304
2313
|
{ key: 'routes', label: 'Routes', width: 'min-w-48' },
|
|
2305
2314
|
{ key: 'tls', label: 'TLS', width: 'w-14 shrink-0' },
|
|
@@ -2309,7 +2318,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2309
2318
|
ingressrouteudps: [
|
|
2310
2319
|
{ key: 'name', label: 'Name', width: 'min-w-40' },
|
|
2311
2320
|
{ key: 'namespace', label: 'Namespace', width: 'w-36 shrink-0' },
|
|
2312
|
-
{ key: 'entrypoints', label: 'Entry Points', width: 'w-32 shrink-0' },
|
|
2321
|
+
{ key: 'entrypoints', label: 'Entry Points', width: 'w-32 shrink-0', tooltip: 'Entry points this route binds to. When unset it is attached to every available UDP entry point; asDefault has no effect on UDP.' },
|
|
2313
2322
|
{ key: 'routes', label: 'Routes', width: 'min-w-48' },
|
|
2314
2323
|
{ key: 'age', label: 'Age', width: 'w-24 shrink-0' },
|
|
2315
2324
|
],
|
|
@@ -2349,7 +2358,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2349
2358
|
tlsoptions: [
|
|
2350
2359
|
{ key: 'name', label: 'Name', width: 'min-w-40' },
|
|
2351
2360
|
{ key: 'namespace', label: 'Namespace', width: 'w-36 shrink-0' },
|
|
2352
|
-
{ key: 'minVersion', label: 'Min TLS', width: 'w-24 shrink-0' },
|
|
2361
|
+
{ key: 'minVersion', label: 'Min TLS', width: 'w-24 shrink-0', tooltip: "Lowest TLS version accepted; connections below it are rejected. A dash means the resource sets no minimum, so Traefik's own default applies." },
|
|
2353
2362
|
{ key: 'age', label: 'Age', width: 'w-24 shrink-0' },
|
|
2354
2363
|
],
|
|
2355
2364
|
tlsstores: [
|
|
@@ -2365,7 +2374,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2365
2374
|
{ key: 'class', label: 'Class', width: 'w-32 shrink-0' },
|
|
2366
2375
|
{ key: 'cpReplicas', label: 'CP Ready', width: 'w-24 shrink-0', tooltip: 'Control plane replicas (ready/desired)' },
|
|
2367
2376
|
{ key: 'workerReplicas', label: 'Workers', width: 'w-20 shrink-0', tooltip: 'Worker replicas (ready/desired)' },
|
|
2368
|
-
{ key: 'phase', label: 'Phase', width: 'w-28 shrink-0' },
|
|
2377
|
+
{ key: 'phase', label: 'Phase', width: 'w-28 shrink-0', tooltip: 'Lifecycle phase while the cluster is still provisioning or deleting; the Available/Ready condition once it has landed.' },
|
|
2369
2378
|
{ key: 'version', label: 'Version', width: 'w-24 shrink-0' },
|
|
2370
2379
|
{ key: 'age', label: 'Age', width: 'w-24 shrink-0' },
|
|
2371
2380
|
],
|
|
@@ -2374,6 +2383,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2374
2383
|
{ key: 'namespace', label: 'Namespace', width: 'w-36 shrink-0' },
|
|
2375
2384
|
{ key: 'cluster', label: 'Cluster', width: 'w-32 shrink-0' },
|
|
2376
2385
|
{ key: 'ready', label: 'Ready', width: 'w-20 shrink-0', tooltip: 'Ready replicas / desired' },
|
|
2386
|
+
{ key: 'upToDate', label: 'Up-to-date', width: 'w-24', tooltip: 'Machines already running the current spec. Fewer than Ready means a rollout is still in progress.' },
|
|
2377
2387
|
{ key: 'phase', label: 'Phase', width: 'w-28 shrink-0' },
|
|
2378
2388
|
{ key: 'version', label: 'Version', width: 'w-24 shrink-0' },
|
|
2379
2389
|
{ key: 'age', label: 'Age', width: 'w-24 shrink-0' },
|
|
@@ -2383,7 +2393,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2383
2393
|
{ key: 'namespace', label: 'Namespace', width: 'w-36 shrink-0' },
|
|
2384
2394
|
{ key: 'cluster', label: 'Cluster', width: 'w-32 shrink-0' },
|
|
2385
2395
|
{ key: 'role', label: 'Role', width: 'w-28 shrink-0' },
|
|
2386
|
-
{ key: 'phase', label: 'Phase', width: 'w-28 shrink-0' },
|
|
2396
|
+
{ key: 'phase', label: 'Phase', width: 'w-28 shrink-0', tooltip: 'Lifecycle milestone; Running does not guarantee that the node is currently Ready.' },
|
|
2387
2397
|
{ key: 'node', label: 'Node', width: 'w-32 shrink-0' },
|
|
2388
2398
|
{ key: 'version', label: 'Version', width: 'w-24 shrink-0' },
|
|
2389
2399
|
{ key: 'age', label: 'Age', width: 'w-24 shrink-0' },
|
|
@@ -2441,7 +2451,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2441
2451
|
{ key: 'name', label: 'Name', width: 'min-w-40' },
|
|
2442
2452
|
{ key: 'namespace', label: 'Namespace', width: 'w-36 shrink-0' },
|
|
2443
2453
|
{ key: 'instanceType', label: 'Instance', width: 'w-28 shrink-0' },
|
|
2444
|
-
{ key: 'replicas', label: 'Ready', width: 'w-20 shrink-0', tooltip:
|
|
2454
|
+
{ key: 'replicas', label: 'Ready', width: 'w-20 shrink-0', tooltip: "Replicas the provider reports, over the autoscaling maximum when one is set. The second number is a ceiling, not a target, so this is not a ready/desired ratio." },
|
|
2445
2455
|
{ key: 'capacityType', label: 'Capacity', width: 'w-28 shrink-0' },
|
|
2446
2456
|
{ key: 'status', label: 'Status', width: 'w-28 shrink-0' },
|
|
2447
2457
|
{ key: 'age', label: 'Age', width: 'w-24 shrink-0' },
|
|
@@ -2459,7 +2469,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2459
2469
|
{ key: 'name', label: 'Name', width: 'min-w-40' },
|
|
2460
2470
|
{ key: 'namespace', label: 'Namespace', width: 'w-36 shrink-0' },
|
|
2461
2471
|
{ key: 'instanceType', label: 'Instance', width: 'w-28 shrink-0' },
|
|
2462
|
-
{ key: 'capacity', label: 'Capacity', width: 'w-32 shrink-0', tooltip: '
|
|
2472
|
+
{ key: 'capacity', label: 'Capacity', width: 'w-32 shrink-0', tooltip: 'Per-node CPU and memory reported by the provider for scale-from-zero estimation.' },
|
|
2463
2473
|
{ key: 'age', label: 'Age', width: 'w-24 shrink-0' },
|
|
2464
2474
|
],
|
|
2465
2475
|
awsmanagedclusters: [
|
|
@@ -2484,7 +2494,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2484
2494
|
{ key: 'name', label: 'Name', width: 'min-w-40' },
|
|
2485
2495
|
{ key: 'namespace', label: 'Namespace', width: 'w-36 shrink-0' },
|
|
2486
2496
|
{ key: 'machineType', label: 'Machine Type', width: 'w-32 shrink-0' },
|
|
2487
|
-
{ key: 'replicas', label: 'Replicas', width: 'w-20 shrink-0' },
|
|
2497
|
+
{ key: 'replicas', label: 'Replicas', width: 'w-20 shrink-0', tooltip: "Replicas the provider reports as observed. Not a ready/desired ratio, and the pool's autoscaling bounds are not shown here." },
|
|
2488
2498
|
{ key: 'status', label: 'Status', width: 'w-28 shrink-0' },
|
|
2489
2499
|
{ key: 'age', label: 'Age', width: 'w-24 shrink-0' },
|
|
2490
2500
|
],
|
|
@@ -2523,9 +2533,9 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2523
2533
|
{ key: 'name', label: 'Name', width: 'min-w-40' },
|
|
2524
2534
|
{ key: 'namespace', label: 'Namespace', width: 'w-36 shrink-0' },
|
|
2525
2535
|
{ key: 'sku', label: 'VM Size', width: 'w-32 shrink-0' },
|
|
2526
|
-
{ key: 'mode', label: 'Mode', width: 'w-20 shrink-0' },
|
|
2527
|
-
{ key: 'replicas', label: 'Replicas', width: 'w-20 shrink-0' },
|
|
2528
|
-
{ key: 'priority', label: 'Priority', width: 'w-24 shrink-0' },
|
|
2536
|
+
{ key: 'mode', label: 'Mode', width: 'w-20 shrink-0', tooltip: 'System pools are preferred for critical AKS system pods; User pools are intended for applications. Mode does not enforce workload isolation.' },
|
|
2537
|
+
{ key: 'replicas', label: 'Replicas', width: 'w-20 shrink-0', tooltip: "Replicas the provider reports as observed. Not a ready/desired ratio, and the pool's autoscaling bounds are not shown here." },
|
|
2538
|
+
{ key: 'priority', label: 'Priority', width: 'w-24 shrink-0', tooltip: 'Spot VMs may be evicted for capacity or price; Regular VMs are not Spot. This is unrelated to Kubernetes scheduling priority.' },
|
|
2529
2539
|
{ key: 'status', label: 'Status', width: 'w-28 shrink-0' },
|
|
2530
2540
|
{ key: 'age', label: 'Age', width: 'w-24 shrink-0' },
|
|
2531
2541
|
],
|
|
@@ -2552,11 +2562,11 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2552
2562
|
httpproxies: [
|
|
2553
2563
|
{ key: 'name', label: 'Name', width: 'min-w-40' },
|
|
2554
2564
|
{ key: 'namespace', label: 'Namespace', width: 'w-36 shrink-0' },
|
|
2555
|
-
{ key: 'fqdn', label: 'FQDN', width: 'min-w-44' },
|
|
2565
|
+
{ key: 'fqdn', label: 'FQDN', width: 'min-w-44', tooltip: 'Virtual-host hostname this proxy declares. A dash means it declares none, which is normal for an included proxy — its routes are served under the roots that include it.' },
|
|
2556
2566
|
{ key: 'routes', label: 'Routes', width: 'w-20 shrink-0' },
|
|
2557
|
-
{ key: 'includes', label: 'Includes', width: 'w-24 shrink-0' },
|
|
2567
|
+
{ key: 'includes', label: 'Includes', width: 'w-24 shrink-0', tooltip: "Child HTTPProxies this one directly includes. They contribute routing configuration, so a proxy can serve traffic even when its own Routes count is zero." },
|
|
2558
2568
|
{ key: 'tls', label: 'TLS', width: 'w-14 shrink-0' },
|
|
2559
|
-
{ key: 'status', label: 'Status', width: 'w-28 shrink-0' },
|
|
2569
|
+
{ key: 'status', label: 'Status', width: 'w-28 shrink-0', tooltip: "Contour's verdict on this proxy. Orphaned means no root proxy includes it, so it serves no traffic." },
|
|
2560
2570
|
{ key: 'age', label: 'Age', width: 'w-24 shrink-0' },
|
|
2561
2571
|
],
|
|
2562
2572
|
// Crossplane — Managed Resources are unbounded (one kind per provider CRD);
|
|
@@ -2566,7 +2576,7 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2566
2576
|
{ key: 'namespace', label: 'Namespace', width: 'w-32 shrink-0' },
|
|
2567
2577
|
{ key: 'kind', label: 'Kind', width: 'w-32 shrink-0' },
|
|
2568
2578
|
{ key: 'external', label: 'External Name', width: 'min-w-48' },
|
|
2569
|
-
{ key: 'provider', label: 'Provider Config', width: 'w-40 shrink-0' },
|
|
2579
|
+
{ key: 'provider', label: 'Provider Config', width: 'w-40 shrink-0', tooltip: 'Provider configuration selecting the credentials and connection settings used to manage this external resource.' },
|
|
2570
2580
|
{ key: 'status', label: 'Status', width: 'w-32 shrink-0' },
|
|
2571
2581
|
{ key: 'age', label: 'Age', width: 'w-24 shrink-0' },
|
|
2572
2582
|
],
|
|
@@ -2586,14 +2596,14 @@ const KNOWN_COLUMNS: Record<string, Column[]> = {
|
|
|
2586
2596
|
compositions: [
|
|
2587
2597
|
{ key: 'name', label: 'Name', width: 'min-w-40' },
|
|
2588
2598
|
{ key: 'composite', label: 'Composite Kind', width: 'w-44 shrink-0' },
|
|
2589
|
-
{ key: 'mode', label: 'Mode', width: 'w-24 shrink-0' },
|
|
2599
|
+
{ key: 'mode', label: 'Mode', width: 'w-24 shrink-0', tooltip: 'Pipeline runs composition functions. Resources uses native patch-and-transform composition and must be migrated before upgrading to Crossplane v2.' },
|
|
2590
2600
|
{ key: 'functions', label: 'Functions', width: 'w-28 shrink-0' },
|
|
2591
2601
|
{ key: 'age', label: 'Age', width: 'w-24 shrink-0' },
|
|
2592
2602
|
],
|
|
2593
2603
|
compositeresourcedefinitions: [
|
|
2594
2604
|
{ key: 'name', label: 'Name', width: 'min-w-40' },
|
|
2595
2605
|
{ key: 'kind', label: 'Kind', width: 'w-40 shrink-0' },
|
|
2596
|
-
{ key: 'claim', label: 'Claim Kind', width: 'w-40 shrink-0' },
|
|
2606
|
+
{ key: 'claim', label: 'Claim Kind', width: 'w-40 shrink-0', tooltip: 'Optional namespaced claim kind. Crossplane v2 supports claims only for XRDs using LegacyCluster scope.' },
|
|
2597
2607
|
{ key: 'age', label: 'Age', width: 'w-24 shrink-0' },
|
|
2598
2608
|
],
|
|
2599
2609
|
}
|
|
@@ -3261,6 +3271,10 @@ interface ResourcesViewData {
|
|
|
3261
3271
|
onNavigate?: (path: string, options?: { replace?: boolean }) => void
|
|
3262
3272
|
certExpiry?: Record<string, { expired?: boolean; daysLeft: number }>
|
|
3263
3273
|
certExpiryError?: boolean
|
|
3274
|
+
// Provider type per SecretStore, keyed 'ns/name' and 'name' for the
|
|
3275
|
+
// cluster-scoped kind. An ExternalSecret names a store; only the store
|
|
3276
|
+
// knows which backend it reads from.
|
|
3277
|
+
storeProviders?: Record<string, string>
|
|
3264
3278
|
/** Cluster Audit findings keyed by "namespace/name". Raw compatibility
|
|
3265
3279
|
* counts render danger as High and warning as Medium. */
|
|
3266
3280
|
auditBadges?: Record<string, { danger: number; warning: number; messages?: AuditBadgeMessage[] }>
|
|
@@ -3321,6 +3335,10 @@ interface ResourcesViewProps {
|
|
|
3321
3335
|
topNodeMetrics?: TopNodeMetrics[]
|
|
3322
3336
|
certExpiry?: Record<string, { expired?: boolean; daysLeft: number }>
|
|
3323
3337
|
certExpiryError?: boolean
|
|
3338
|
+
// Provider type per SecretStore, keyed 'ns/name' and 'name' for the
|
|
3339
|
+
// cluster-scoped kind. An ExternalSecret names a store; only the store
|
|
3340
|
+
// knows which backend it reads from.
|
|
3341
|
+
storeProviders?: Record<string, string>
|
|
3324
3342
|
/** Cluster Audit findings keyed by "namespace/name". Raw compatibility
|
|
3325
3343
|
* counts render danger as High and warning as Medium. */
|
|
3326
3344
|
auditBadges?: Record<string, { danger: number; warning: number; messages?: AuditBadgeMessage[] }>
|
|
@@ -3570,6 +3588,7 @@ export function ResourcesView({
|
|
|
3570
3588
|
topNodeMetrics,
|
|
3571
3589
|
certExpiry,
|
|
3572
3590
|
certExpiryError,
|
|
3591
|
+
storeProviders,
|
|
3573
3592
|
auditBadges,
|
|
3574
3593
|
pinned = [],
|
|
3575
3594
|
togglePin = () => {},
|
|
@@ -5078,8 +5097,10 @@ export function ResourcesView({
|
|
|
5078
5097
|
// DaemonSet: numberAvailable, others: availableReplicas
|
|
5079
5098
|
return status.numberAvailable ?? status.availableReplicas ?? 0
|
|
5080
5099
|
case 'upToDate':
|
|
5081
|
-
// DaemonSet: updatedNumberScheduled
|
|
5082
|
-
|
|
5100
|
+
// DaemonSet: updatedNumberScheduled; CAPI v1beta2: upToDateReplicas;
|
|
5101
|
+
// others: updatedReplicas. Same precedence the cells display, or a row
|
|
5102
|
+
// sorts as zero while showing a real count.
|
|
5103
|
+
return status.updatedNumberScheduled ?? status.upToDateReplicas ?? status.updatedReplicas ?? 0
|
|
5083
5104
|
case 'restarts':
|
|
5084
5105
|
if (kindLower === 'jobsets') return getJobSetRestarts(resource)
|
|
5085
5106
|
return getPodRestarts(resource)
|
|
@@ -6610,6 +6631,7 @@ export function ResourcesView({
|
|
|
6610
6631
|
isChecked={checkedResources.has(resourceKey)}
|
|
6611
6632
|
showCheckbox={isCheckboxMode}
|
|
6612
6633
|
majorityNodeMinorVersion={majorityNodeMinorVersion}
|
|
6634
|
+
storeProviders={storeProviders}
|
|
6613
6635
|
onRowClick={handleRowClick}
|
|
6614
6636
|
onRowMouseEnter={handleRowMouseEnter}
|
|
6615
6637
|
compareMode={compareMode}
|
|
@@ -6765,6 +6787,7 @@ interface ResourceRowCellsProps {
|
|
|
6765
6787
|
isChecked?: boolean
|
|
6766
6788
|
showCheckbox?: boolean
|
|
6767
6789
|
majorityNodeMinorVersion?: string
|
|
6790
|
+
storeProviders?: Record<string, string>
|
|
6768
6791
|
// Row callbacks receive the resource so the parent can pass referentially
|
|
6769
6792
|
// stable handlers — per-row closures would defeat React.memo and re-render
|
|
6770
6793
|
// every visible row on each SSE-driven refetch.
|
|
@@ -6799,7 +6822,7 @@ function rowHighlightClass(
|
|
|
6799
6822
|
return 'group-hover/row:bg-theme-surface/50'
|
|
6800
6823
|
}
|
|
6801
6824
|
|
|
6802
|
-
const ResourceRowCells = React.memo(function ResourceRowCells({ resource, kind, group, columns, extraColumnsByKey, hasSpacerColumn, isSelected, isHighlighted, isChecked, showCheckbox, majorityNodeMinorVersion, onRowClick, onRowMouseEnter, compareMode, comparePickIndex = -1, rowHref, onRowCheckToggle }: ResourceRowCellsProps) {
|
|
6825
|
+
const ResourceRowCells = React.memo(function ResourceRowCells({ resource, kind, group, columns, extraColumnsByKey, hasSpacerColumn, isSelected, isHighlighted, isChecked, showCheckbox, majorityNodeMinorVersion, storeProviders, onRowClick, onRowMouseEnter, compareMode, comparePickIndex = -1, rowHref, onRowCheckToggle }: ResourceRowCellsProps) {
|
|
6803
6826
|
const rowHighlight = rowHighlightClass(compareMode, comparePickIndex, isSelected, isHighlighted, isChecked)
|
|
6804
6827
|
const pickedSide = comparePickIndex === 0 ? 'a' : comparePickIndex === 1 ? 'b' : null
|
|
6805
6828
|
const onClick = onRowClick ? () => onRowClick(resource, !!isSelected) : undefined
|
|
@@ -6866,6 +6889,7 @@ const ResourceRowCells = React.memo(function ResourceRowCells({ resource, kind,
|
|
|
6866
6889
|
group={group}
|
|
6867
6890
|
column={col.key}
|
|
6868
6891
|
majorityNodeMinorVersion={majorityNodeMinorVersion}
|
|
6892
|
+
storeProviders={storeProviders}
|
|
6869
6893
|
extraColumn={extraColumnsByKey?.get(col.key)}
|
|
6870
6894
|
nameHref={col.key === 'name' ? rowHref : undefined}
|
|
6871
6895
|
/>
|
|
@@ -6909,6 +6933,7 @@ interface CellContentProps {
|
|
|
6909
6933
|
column: string
|
|
6910
6934
|
group?: string
|
|
6911
6935
|
majorityNodeMinorVersion?: string
|
|
6936
|
+
storeProviders?: Record<string, string>
|
|
6912
6937
|
/** When provided, the parent has injected an ExtraColumn for this
|
|
6913
6938
|
* column key. Render via the extra's render() and short-circuit
|
|
6914
6939
|
* the built-in cell logic. */
|
|
@@ -6918,7 +6943,7 @@ interface CellContentProps {
|
|
|
6918
6943
|
nameHref?: string
|
|
6919
6944
|
}
|
|
6920
6945
|
|
|
6921
|
-
function CellContent({ resource, kind, column, group, majorityNodeMinorVersion, extraColumn, nameHref }: CellContentProps) {
|
|
6946
|
+
function CellContent({ resource, kind, column, group, majorityNodeMinorVersion, storeProviders, extraColumn, nameHref }: CellContentProps) {
|
|
6922
6947
|
const { auditBadges } = useContext(ResourcesViewDataContext)
|
|
6923
6948
|
// Parent-injected extra columns short-circuit the built-in switch.
|
|
6924
6949
|
// Used by hosts that inject leading columns (e.g. a multi-cluster Cluster column).
|
|
@@ -7306,7 +7331,7 @@ function CellContent({ resource, kind, column, group, majorityNodeMinorVersion,
|
|
|
7306
7331
|
return <SbomReportCell resource={resource} column={column} />
|
|
7307
7332
|
// External Secrets Operator
|
|
7308
7333
|
case 'externalsecrets':
|
|
7309
|
-
return <ExternalSecretCell resource={resource} column={column} />
|
|
7334
|
+
return <ExternalSecretCell resource={resource} column={column} storeProviders={storeProviders} />
|
|
7310
7335
|
case 'clusterexternalsecrets':
|
|
7311
7336
|
return <ClusterExternalSecretCell resource={resource} column={column} />
|
|
7312
7337
|
case 'secretstores':
|