A Kubernetes operator for managing Zitadel resources declaratively via Custom Resource Definitions (CRDs).
Overview
The Zitadel Operator watches six CRDs under API group zitadel.truvity.io/v1alpha1 and reconciles them against the Zitadel API using the official zitadel-go/v3 SDK (gRPC, v2 APIs):
CRD
Scope
Description
OIDCApp
Namespaced
OIDC application registrations
Project
Cluster
Zitadel projects with roles
IdentityProvider
Cluster
External IdP federations
Organization
Cluster
Zitadel organizations
MachineUser
Namespaced
Service accounts with key-based auth
LoginPolicy
Cluster
Login policy configuration
Features
Declarative OIDC configuration as Kubernetes resources
Idempotent reconciliation — no duplicate API calls for unchanged resources
JWT Profile authentication (private key in K8s Secret)
Two deployment modes:
IAM_OWNER — full instance admin (for central/kernel clusters)
PROJECT_OWNER — limited to one project (for child clusters)
Status subresource with ready conditions, lastSyncTime, and error reporting
Finalizer-based cleanup on CR deletion
Generic and reusable — no cloud-provider-specific code
devbox shell
just generate # Generate deepcopy methods and CRD manifests
just build # Build the operator binary
just test # Run tests
just lint # Run linters
just vuln # Run Go vulnerability check
just check # Run all checks (generate + build + test + lint + vuln)
Available Recipes
Recipe
Description
generate
Generate deepcopy methods and CRD manifests
build
Build the operator binary
test
Run tests
lint
Run linters
vuln
Run Go vulnerability check (govulncheck)
check
Run all checks (generate + build + test + lint + vuln)