Skip to main content
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.

Design principles

Project structure

Reconciliation model

The operator runs three independent controllers, each watching different resources:

Startup sequence

CRD ownership model

The operator follows a strict ownership model for the two CRDs: The user (or CLI) creates and manages the .spec of each persona. The operator exclusively manages .status, writing validation results, health information, resource baselines, and ArgoCD sync state.

RBAC model

Every write verb the operator holds targets a dorgu.io CRD, a Kubernetes Event, or a leader-election Lease. Everything else in the cluster is read-only.
No create, update, patch, or delete on Deployments. No access to Secrets. There are no rules for Services, StatefulSets, DaemonSets, ConfigMaps, or RBAC resources at all. That is what makes “the operator never writes workloads” a fact about your API server rather than a promise about Dorgu’s source code.The full ClusterRole, the denied verbs called out explicitly, and a kubectl auth can-i recipe to verify it on your own cluster: security and permissions.

Security and permissions

The ClusterRole in full, and what it deliberately omits

Ownership model

Which workloads the CLI will patch, and which it only recommends for

CRD specification

Full ApplicationPersona and ClusterPersona schema

Configuration

All operator configuration options