Skip to main content
CRDs (CustomResourceDefinitions) define your API surface, but what actually acts on those custom resources? Operators do. An operator is a controller: a piece of software that watches custom resources and reconciles cluster state to match the desired state you declared. For example, you create a Certificate custom resource and the operator provisions the actual TLS certificate; when you delete the Certificate resource, the operator cleans up the associated artifacts. This guide shows how to read operator-reported status and conditions so you can diagnose operator behavior without access to its source code. We use cert-manager as a concrete example. Why this matters:
  • Operators continuously reconcile desired state; reading Conditions and Events is the first step in troubleshooting.
  • Understanding the status fields tells you whether the operator succeeded, is still working, or failed.
CRDs that cert-manager installs To issue a certificate you need:
  • an Issuer (defines how the certificate is issued), and
  • a Certificate (defines what you want).
Below we create a self-signed Issuer (good for testing) and a Certificate that references it, then inspect the operator-reported conditions. Describe the Issuer to confirm the operator processed it and marked it Ready:
Apply a Certificate resource. Example test-certificate.yaml:
Apply the Certificate and check its status:
Describe the Certificate to read the operator-reported Conditions, human-readable messages, validity window, renewal time, and Events showing reconciliation steps:
Key fields to inspect when diagnosing operator behavior Next, inspect the Secret that the operator created to hold the issued certificate:
You can see the Secret contains ca.crt, tls.crt, and tls.key. The operator created this Secret automatically as a side effect of reconciling the Certificate resource. Make the reconciliation loop tangible: delete the Secret and watch the operator restore it.
Operators continuously watch relevant resources and restore owned resources when they detect drift. This reconciliation loop is fundamental to operators: you cannot accidentally break the desired state long-term because the operator will reconcile it back.
Start troubleshooting operators by running kubectl describe on the custom resource and reading the Conditions and Events. Conditions typically indicate Ready/NotReady states (True/False), and Events provide the reconciliation steps and reasons for failures or successes.
Summary — key things to remember
  • Use kubectl get and kubectl describe on custom resources to inspect Status, Conditions, and Events.
  • Condition Type + Status + Message are your first diagnostic signals.
  • Operators continuously reconcile resources and will recreate owned resources if deleted.
  • The controller/operator enforces ownership and cleanup order intentionally; unexpected delete-order behavior is usually by design, not a bug.
Links and references

Watch Video

Practice Lab