From 0161bac9949b3e7bdeabb31e4d9fe819ef05e954 Mon Sep 17 00:00:00 2001 From: Nawaz Dhandala Date: Thu, 19 Mar 2026 08:41:25 +0000 Subject: [PATCH] feat: Update Kubernetes detail views to use Navigation.getLastParamAsString for improved parameter handling feat: Increase memory limits in Helm chart configuration for better resource management feat: Add resourceSpecs configuration to values schema for enhanced dashboard detail views --- .../src/Pages/Kubernetes/View/ContainerDetail.tsx | 2 +- .../src/Pages/Kubernetes/View/CronJobDetail.tsx | 2 +- .../src/Pages/Kubernetes/View/DaemonSetDetail.tsx | 2 +- .../Pages/Kubernetes/View/DeploymentDetail.tsx | 2 +- .../src/Pages/Kubernetes/View/JobDetail.tsx | 2 +- .../src/Pages/Kubernetes/View/NamespaceDetail.tsx | 2 +- .../src/Pages/Kubernetes/View/NodeDetail.tsx | 2 +- .../src/Pages/Kubernetes/View/PodDetail.tsx | 2 +- .../Pages/Kubernetes/View/StatefulSetDetail.tsx | 2 +- .../templates/configmap-deployment.yaml | 4 ++-- .../Public/kubernetes-agent/values.schema.json | 15 +++++++++++++++ HelmChart/Public/kubernetes-agent/values.yaml | 4 ++-- 12 files changed, 28 insertions(+), 13 deletions(-) diff --git a/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/ContainerDetail.tsx b/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/ContainerDetail.tsx index 79357d0b5e..d111e8211e 100644 --- a/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/ContainerDetail.tsx +++ b/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/ContainerDetail.tsx @@ -30,7 +30,7 @@ const KubernetesClusterContainerDetail: FunctionComponent< PageComponentProps > = (): ReactElement => { const modelId: ObjectID = Navigation.getLastParamAsObjectID(2); - const containerName: string = Navigation.getLastParam()?.toString() || ""; + const containerName: string = Navigation.getLastParamAsString(); const [cluster, setCluster] = useState(null); const [isLoading, setIsLoading] = useState(true); diff --git a/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/CronJobDetail.tsx b/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/CronJobDetail.tsx index 93d48f4fa4..20403c1e4a 100644 --- a/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/CronJobDetail.tsx +++ b/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/CronJobDetail.tsx @@ -33,7 +33,7 @@ const KubernetesClusterCronJobDetail: FunctionComponent< PageComponentProps > = (): ReactElement => { const modelId: ObjectID = Navigation.getLastParamAsObjectID(2); - const cronJobName: string = Navigation.getLastParam()?.toString() || ""; + const cronJobName: string = Navigation.getLastParamAsString(); const [cluster, setCluster] = useState(null); const [isLoading, setIsLoading] = useState(true); diff --git a/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/DaemonSetDetail.tsx b/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/DaemonSetDetail.tsx index acfcd83f24..a1837e0ce0 100644 --- a/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/DaemonSetDetail.tsx +++ b/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/DaemonSetDetail.tsx @@ -33,7 +33,7 @@ const KubernetesClusterDaemonSetDetail: FunctionComponent< PageComponentProps > = (): ReactElement => { const modelId: ObjectID = Navigation.getLastParamAsObjectID(2); - const daemonSetName: string = Navigation.getLastParam()?.toString() || ""; + const daemonSetName: string = Navigation.getLastParamAsString(); const [cluster, setCluster] = useState(null); const [isLoading, setIsLoading] = useState(true); diff --git a/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/DeploymentDetail.tsx b/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/DeploymentDetail.tsx index ba877cafd1..79498ff38f 100644 --- a/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/DeploymentDetail.tsx +++ b/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/DeploymentDetail.tsx @@ -33,7 +33,7 @@ const KubernetesClusterDeploymentDetail: FunctionComponent< PageComponentProps > = (): ReactElement => { const modelId: ObjectID = Navigation.getLastParamAsObjectID(2); - const deploymentName: string = Navigation.getLastParam()?.toString() || ""; + const deploymentName: string = Navigation.getLastParamAsString(); const [cluster, setCluster] = useState(null); const [isLoading, setIsLoading] = useState(true); diff --git a/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/JobDetail.tsx b/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/JobDetail.tsx index 8b32227a89..2eb4239b35 100644 --- a/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/JobDetail.tsx +++ b/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/JobDetail.tsx @@ -33,7 +33,7 @@ const KubernetesClusterJobDetail: FunctionComponent< PageComponentProps > = (): ReactElement => { const modelId: ObjectID = Navigation.getLastParamAsObjectID(2); - const jobName: string = Navigation.getLastParam()?.toString() || ""; + const jobName: string = Navigation.getLastParamAsString(); const [cluster, setCluster] = useState(null); const [isLoading, setIsLoading] = useState(true); diff --git a/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/NamespaceDetail.tsx b/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/NamespaceDetail.tsx index fd37e12f59..a576f9e460 100644 --- a/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/NamespaceDetail.tsx +++ b/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/NamespaceDetail.tsx @@ -33,7 +33,7 @@ const KubernetesClusterNamespaceDetail: FunctionComponent< PageComponentProps > = (): ReactElement => { const modelId: ObjectID = Navigation.getLastParamAsObjectID(2); - const namespaceName: string = Navigation.getLastParam()?.toString() || ""; + const namespaceName: string = Navigation.getLastParamAsString(); const [cluster, setCluster] = useState(null); const [isLoading, setIsLoading] = useState(true); diff --git a/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/NodeDetail.tsx b/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/NodeDetail.tsx index 3382ce8f30..b4e3d6b4ed 100644 --- a/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/NodeDetail.tsx +++ b/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/NodeDetail.tsx @@ -30,7 +30,7 @@ const KubernetesClusterNodeDetail: FunctionComponent< PageComponentProps > = (): ReactElement => { const modelId: ObjectID = Navigation.getLastParamAsObjectID(2); - const nodeName: string = Navigation.getLastParam()?.toString() || ""; + const nodeName: string = Navigation.getLastParamAsString(); const [cluster, setCluster] = useState(null); const [isLoading, setIsLoading] = useState(true); diff --git a/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/PodDetail.tsx b/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/PodDetail.tsx index 9ecd356348..dfed41d26a 100644 --- a/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/PodDetail.tsx +++ b/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/PodDetail.tsx @@ -35,7 +35,7 @@ const KubernetesClusterPodDetail: FunctionComponent< PageComponentProps > = (): ReactElement => { const modelId: ObjectID = Navigation.getLastParamAsObjectID(2); - const podName: string = Navigation.getLastParam()?.toString() || ""; + const podName: string = Navigation.getLastParamAsString(); const [cluster, setCluster] = useState(null); const [isLoading, setIsLoading] = useState(true); diff --git a/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/StatefulSetDetail.tsx b/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/StatefulSetDetail.tsx index 1e55e3643f..cb3f664943 100644 --- a/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/StatefulSetDetail.tsx +++ b/App/FeatureSet/Dashboard/src/Pages/Kubernetes/View/StatefulSetDetail.tsx @@ -33,7 +33,7 @@ const KubernetesClusterStatefulSetDetail: FunctionComponent< PageComponentProps > = (): ReactElement => { const modelId: ObjectID = Navigation.getLastParamAsObjectID(2); - const statefulSetName: string = Navigation.getLastParam()?.toString() || ""; + const statefulSetName: string = Navigation.getLastParamAsString(); const [cluster, setCluster] = useState(null); const [isLoading, setIsLoading] = useState(true); diff --git a/HelmChart/Public/kubernetes-agent/templates/configmap-deployment.yaml b/HelmChart/Public/kubernetes-agent/templates/configmap-deployment.yaml index 95bd5937d7..3ab5556cd9 100644 --- a/HelmChart/Public/kubernetes-agent/templates/configmap-deployment.yaml +++ b/HelmChart/Public/kubernetes-agent/templates/configmap-deployment.yaml @@ -161,8 +161,8 @@ data: # Limit memory usage memory_limiter: check_interval: 5s - limit_mib: 1500 - spike_limit_mib: 300 + limit_mib: 3000 + spike_limit_mib: 600 exporters: otlphttp: diff --git a/HelmChart/Public/kubernetes-agent/values.schema.json b/HelmChart/Public/kubernetes-agent/values.schema.json index c602921306..d334964c72 100644 --- a/HelmChart/Public/kubernetes-agent/values.schema.json +++ b/HelmChart/Public/kubernetes-agent/values.schema.json @@ -184,6 +184,21 @@ }, "additionalProperties": false }, + "resourceSpecs": { + "type": "object", + "description": "Pull full K8s resource specs for dashboard detail views (labels, annotations, env vars, status, etc.)", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable pulling full resource specs via k8sobjects receiver" + }, + "interval": { + "type": "string", + "description": "How often to pull resource specs (e.g., 300s, 5m)" + } + }, + "additionalProperties": false + }, "collectionInterval": { "type": "string", "description": "Collection interval for metrics (e.g., 30s, 1m)" diff --git a/HelmChart/Public/kubernetes-agent/values.yaml b/HelmChart/Public/kubernetes-agent/values.yaml index ec8a5e6159..691915d72c 100644 --- a/HelmChart/Public/kubernetes-agent/values.yaml +++ b/HelmChart/Public/kubernetes-agent/values.yaml @@ -30,10 +30,10 @@ deployment: resources: requests: cpu: 200m - memory: 512Mi + memory: 1Gi limits: cpu: 1000m - memory: 2Gi + memory: 4Gi # Control plane monitoring (etcd, API server, scheduler, controller manager) # Disabled by default — enable for self-managed clusters.