What is an ApplicationPersona
An ApplicationPersona is a Kubernetes Custom Resource that represents the identity and requirements of an application. It captures:- Resource constraints — CPU and memory requests/limits
- Scaling parameters — min/max replicas, HPA thresholds
- Health probes — liveness, readiness, and startup checks
- Security policies — security contexts, pod security standards
- Ownership info — team, repository, contact details
Persona lifecycle
Generate
Analyze your application and produce a persona YAML manifest. Use This inspects the
--dry-run to preview without writing files:Dockerfile, dependency manifests, source code, and .dorgu.yaml config to produce a complete ApplicationPersona resource.Apply
Analyze and apply the persona directly to your cluster in a single command:This combines generation and
kubectl apply — the CLI produces the YAML and pipes it to kubectl targeting the specified namespace.Status fields
Thepersona status command reports the following fields from the ApplicationPersona resource:
| Field | Values | Description |
|---|---|---|
.status.phase | Pending, Active, Degraded, Unknown | Current persona lifecycle phase |
.status.validation.passed | true / false | Whether validation checks passed |
.status.validation.issues[] | array | List of validation issues found by the operator |
.status.health.status | Healthy, Degraded, Unknown | Application health status |
.status.health.replicas | object | Current and desired replica counts |
.status.argoCD.syncStatus | Synced, OutOfSync | ArgoCD sync status (if integrated) |
.status.learned.resourceBaseline | object | Resource usage learned from Prometheus |
What the operator validates
When a persona is applied, the Dorgu Operator runs continuous validation against the workload it describes. The operator checks:- Resource limits — CPU and memory requests/limits are set and within acceptable bounds
- Replica counts — actual replicas match the declared scaling parameters
- Health probes — liveness and readiness probes are configured and endpoints are reachable
- Security contexts — containers run as non-root, drop capabilities, use read-only root filesystems
The operator never writes to workload resources (Deployments, Services, etc.). It only reads cluster state and updates the
ApplicationPersona status fields. This is a core architectural invariant.Persona apply flow
The following diagram shows what happens when you rundorgu persona apply:
ClusterPersona
A ClusterPersona is a cluster-scoped CRD (as opposed to the namespace-scopedApplicationPersona). It represents the identity of the entire cluster — what nodes are available, what add-ons are installed, and the total resource capacity.
Create a ClusterPersona with:
- Nodes — count, instance types, capacity
- Add-ons — ingress controllers, cert-manager, monitoring stack, service mesh
- Resource capacity — total allocatable CPU and memory across the cluster
ingressClassName.
Real-time monitoring
Usedorgu watch personas to stream live updates for all personas in a namespace: