Skip to main content

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:
FieldSource
Namenode.metadata.name
Rolenode-role.kubernetes.io/control-plane or master label
ReadyReady condition in node.status.conditions
CapacityCPU, memory, pods, ephemeral storage from node.status.capacity
AllocatableCPU, memory, pods, ephemeral storage from node.status.allocatable
Kubelet versionnode.status.nodeInfo.kubeletVersion
Container runtimenode.status.nodeInfo.containerRuntimeVersion
Taintsnode.spec.taints formatted as key=value:effect
LabelsFiltered 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:
FieldCalculation
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-onNamespace checkedPod name patternType
ArgoCDargocdargocdgitops
Prometheusmonitoringprometheus or prometheus-servermonitoring
Grafanamonitoringgrafanamonitoring
cert-managercert-managercert-managercert-management
ingress-nginxingress-nginxingress-nginx-controlleringress
external-secretsexternal-secretsexternal-secretssecrets
Istioistio-systemistiodservice-mesh
CloudNativePGcnpg-systemcnpg-cloudnative-pgdatabase
OpenObserveopenobserveopenobservemonitoring
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)

Platform detection

The controller identifies the Kubernetes platform using two methods: Method 1: Node labels
Label containsPlatform
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 prefixPlatform
aws://EKS
gce://GKE
azure://AKS
kind://Kind
If neither method matches, the platform is reported as Generic.

Namespace summary

FieldDescription
totalTotal number of namespaces
activeNamespaces in Active phase
withPersonasNamespaces containing at least one ApplicationPersona

Phase determination

ConditionPhase
No nodes discoveredDiscovering
All nodes readyReady
Some nodes not readyDegraded
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

ConditionStatusWhen
DiscoveredTrueDiscovery completed (with or without issues)
DiscoveredFalseNode discovery failed
HealthyTrueAll nodes ready
HealthyFalseSome nodes not ready

Checking cluster status

dorgu 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