100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace

Kubernetes Operators Cheat Sheet

Kubernetes Operators Cheat Sheet

Kubernetes Operator pattern covering CRDs, controller reconcile loops, Kubebuilder/Operator SDK scaffolding, and status subresources.

3 PagesAdvancedMay 6, 2026

Custom Resource Definition

Defining a CRD that an operator will watch and reconcile.

yaml
apiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  name: postgresclusters.db.example.comspec:  group: db.example.com  names:    kind: PostgresCluster    plural: postgresclusters    singular: postgrescluster    shortNames: [pgc]  scope: Namespaced  versions:    - name: v1      served: true      storage: true      subresources:        status: {}      schema:        openAPIV3Schema:          type: object          properties:            spec:              type: object              properties:                replicas:                  type: integer                version:                  type: string

Reconcile Loop (Kubebuilder / controller-runtime, Go)

The core Reconcile function every operator implements.

go
func (r *PostgresClusterReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {	var cluster dbv1.PostgresCluster	if err := r.Get(ctx, req.NamespacedName, &cluster); err != nil {		return ctrl.Result{}, client.IgnoreNotFound(err)	}	// Desired state	sts := desiredStatefulSet(&cluster)	if err := ctrl.SetControllerReference(&cluster, sts, r.Scheme); err != nil {		return ctrl.Result{}, err	}	// Create or update to converge actual -> desired	if err := r.Patch(ctx, sts, client.Apply, client.ForceOwnership, client.FieldOwner("pgc-operator")); err != nil {		return ctrl.Result{}, err	}	cluster.Status.ReadyReplicas = sts.Status.ReadyReplicas	if err := r.Status().Update(ctx, &cluster); err != nil {		return ctrl.Result{}, err	}	return ctrl.Result{RequeueAfter: 30 * time.Second}, nil}

Kubebuilder Scaffolding Commands

Bootstrap an operator project and add API types/controllers.

bash
# Initialize a new operator projectkubebuilder init --domain example.com --repo github.com/acme/pgc-operator# Scaffold a new API (CRD + controller)kubebuilder create api --group db --version v1 --kind PostgresCluster# Generate CRD manifests and DeepCopy methods after editing typesmake manifests generate# Run the controller locally against your current kube contextmake install run# Build and push the operator image, then deploymake docker-build docker-push IMG=acme/pgc-operator:v0.1.0make deploy IMG=acme/pgc-operator:v0.1.0

Operator Pattern Concepts

Terminology central to writing and running Kubernetes operators.

  • CRD (Custom Resource Definition)- registers a new kind with the Kubernetes API server
  • CR (Custom Resource)- an instance of a CRD, e.g. a specific PostgresCluster object
  • Controller / reconciler- watches CRs and drives actual cluster state toward the spec
  • Level-triggered reconciliation- reconcile logic reads full current state each time, not just the diff, for resilience
  • Owner references- link child resources (StatefulSets, Services) to the CR for garbage collection
  • Status subresource- separate write path for status so spec updates don't clobber observed state
  • Finalizers- block deletion of a CR until the operator cleans up external resources
Pro Tip

Always requeue with a bounded RequeueAfter (or watch dependent resources) instead of relying purely on event-driven triggers — external state (like a cloud database being deleted out-of-band) can drift without generating a Kubernetes watch event, and only periodic reconciliation catches it.

Was this cheat sheet helpful?

Explore Topics

#KubernetesOperators#KubernetesOperatorsCheatSheet#DevOps#Advanced#CustomResourceDefinition#Reconcile#Loop#Kubebuilder#Kubernetes#CheatSheet#SkillVeris
Advertisement
Sri Hayavadhana Info-Tech

Professional Web Designing Services

  • Responsive Websites
  • E-commerce Solutions
  • SEO Friendly Design
  • Fast & Secure
  • Support & Maintenance
Get a Free Quote

Share this Cheat Sheet