Documentation Index Fetch the complete documentation index at: https://dorguai.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
The ClusterPersona controller runs a discovery loop every 5 minutes to build a comprehensive picture of your cluster’s nodes, resources, add-ons, and platform type.
What gets discovered
Node discovery
The controller lists all nodes and extracts:
Field Source Name node.metadata.nameRole node-role.kubernetes.io/control-plane or master labelReady Ready condition in node.status.conditionsCapacity CPU, memory, pods, ephemeral storage from node.status.capacity Allocatable CPU, memory, pods, ephemeral storage from node.status.allocatable Kubelet version node.status.nodeInfo.kubeletVersionContainer runtime node.status.nodeInfo.containerRuntimeVersionTaints node.spec.taints formatted as key=value:effectLabels Filtered to interesting prefixes: node.kubernetes.io/, topology.kubernetes.io/, kubernetes.io/arch, kubernetes.io/os, node-role.kubernetes.io/
Resource summary
The controller aggregates resource information across all nodes:
Field Calculation totalCPUSum of all node CPU capacity totalMemorySum of all node memory capacity allocatableCPUSum of all node allocatable CPU allocatableMemorySum of all node allocatable memory totalPodsSum of all node pod capacity runningPodsCount of pods in Running phase across all namespaces nodeCountTotal number of nodes
Add-on detection
The controller probes well-known namespaces for installed add-ons by searching for pods that contain the add-on name.
Add-on Namespace checked Pod name pattern Type ArgoCD argocdargocdgitops Prometheus monitoringprometheus or prometheus-servermonitoring Grafana monitoringgrafanamonitoring cert-manager cert-managercert-managercert-management ingress-nginx ingress-nginxingress-nginx-controlleringress external-secrets external-secretsexternal-secretssecrets Istio istio-systemistiodservice-mesh CloudNativePG cnpg-systemcnpg-cloudnative-pgdatabase OpenObserve openobserveopenobservemonitoring
For each detected add-on, the controller records:
Whether it is installed
The version (extracted from the container image tag)
The namespace
Whether the pod is healthy (in Running phase)
The controller identifies the Kubernetes platform using two methods:
Method 1: Node labels
Label contains Platform eks.amazonaws.comEKS cloud.google.com/gkeGKE kubernetes.azure.comAKS node.openshift.ioOpenShift minikube.k8s.ioMinikube kind.x-k8s.ioKind k3s.ioK3s
Method 2: Provider ID (fallback)
Provider ID prefix Platform aws://EKS gce://GKE azure://AKS kind://Kind
If neither method matches, the platform is reported as Generic.
Namespace summary
Field Description totalTotal number of namespaces activeNamespaces in Active phase withPersonasNamespaces containing at least one ApplicationPersona
Phase determination
Condition Phase No nodes discovered DiscoveringAll nodes ready ReadySome nodes not ready Degraded
When a transient API failure prevents node discovery, the controller preserves the previously discovered nodes instead of clearing them. This prevents phase regression from Ready to Discovering on temporary network issues.
Conditions
Condition Status When DiscoveredTrueDiscovery completed (with or without issues) DiscoveredFalseNode discovery failed HealthyTrueAll nodes ready HealthyFalseSome nodes not ready
Checking cluster status
Or query the resource directly:
kubectl get clusterpersona my-cluster -o yaml
Cluster onboarding Bootstrap your cluster with dorgu cluster init
Add-on detection ArgoCD integration details