Skip to main content
The dorgu operator is a Kubernetes operator built with controller-runtime that manages five custom resources: ApplicationPersona, ClusterPersona, IncidentMemory, RemediationAction, and DorguEvent. 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 persona CRDs: You manage the .spec of each persona. The operator manages .status, writing validation results, health information, resource baselines, and ArgoCD sync state. The one exception is an approved remediation, where the operator patches the persona’s .spec to the value you approved.

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