The dorgu operator is a Kubernetes operator built with controller-runtime that manages two custom resources: ApplicationPersona and ClusterPersona. It follows the standard operator pattern of watching resources and reconciling desired state.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.
Design principles
| Principle | Description |
|---|---|
| Read-only workloads | The operator NEVER writes to workload resources (Deployments, Services). It only updates Persona CRD status fields. |
| Fail-open | If the operator is down or encounters errors, workloads are unaffected. The webhook uses failurePolicy: Ignore. |
| Opt-in features | Only the core controllers are enabled by default. Webhook, Prometheus, and WebSocket require explicit opt-in. |
| No ArgoCD dependency | ArgoCD integration uses the unstructured API — no compile-time dependency on ArgoCD types. |
| Graceful degradation | Missing integrations (no Prometheus, no ArgoCD) are silently skipped without affecting core functionality. |
Project structure
Reconciliation model
The operator runs three independent controllers, each watching different resources:| Controller | Watches | Updates | Requeue interval |
|---|---|---|---|
| ApplicationPersona | Deployments, Pods | .status on ApplicationPersona | 60 seconds |
| ClusterPersona | Nodes, Namespaces, Pods | .status on ClusterPersona | 5 minutes |
| ArgoCD Watcher | ArgoCD Applications | .status.argocd on ApplicationPersona | 30 seconds |
Startup sequence
CRD ownership model
The operator follows a strict ownership model for the two CRDs:| CRD | Scope | Created by | Spec owned by | Status owned by |
|---|---|---|---|---|
| ApplicationPersona | Namespaced | User / CLI | User / CLI | Operator |
| ClusterPersona | Cluster-scoped | User / CLI | User / CLI | Operator |
.spec of each persona. The operator exclusively manages .status, writing validation results, health information, resource baselines, and ArgoCD sync state.
RBAC model
The operator needs read access to cluster resources and write access only to Persona status:| Resource | Verbs | Purpose |
|---|---|---|
| ApplicationPersonas | get, list, watch, update (status) | Reconcile and update status |
| ClusterPersonas | get, list, watch, update (status) | Reconcile and update status |
| Deployments | get, list, watch | Validate against persona constraints |
| Pods | get, list | Check pod health, count running pods |
| Nodes | get, list | Discover cluster capacity |
| Namespaces | get, list | Count namespaces |
| ArgoCD Applications | get, list, watch | Sync status tracking (optional) |
CRD specification
Full ApplicationPersona and ClusterPersona schema
Configuration
All operator configuration options