Skip to main content

PDB Operator v0.1.0 - Initial Release

· 2 min read
Nick Nikolakakis
Lead Maintainer

We're excited to announce the initial release of PDB Operator, a Kubernetes operator that automates PodDisruptionBudget management through policy-driven availability classes.

The Problem

Managing PodDisruptionBudgets at scale is painful. Teams forget to create them, set incorrect values, or leave stale PDBs behind. PDB Operator solves this with a declarative, policy-driven approach.

What's in v0.1.0

Core Features

  • PDBPolicy CRD (availability.pdboperator.io/v1alpha1) with five availability classes: non-critical (20%), standard (50%), high-availability (75%), mission-critical (90%), and custom
  • Two-controller architecture: PDBPolicyController for policy management and DeploymentController for PDB lifecycle
  • Three enforcement modes: strict, flexible, and advisory for controlling annotation overrides
  • Workload selectors: target by labels, names, functions, or namespaces
  • Maintenance windows: automatic PDB relaxation during scheduled maintenance with timezone support

Smart Features

  • Security workload boosting: security workloads automatically get higher availability
  • Policy priority: conflict resolution when multiple policies match
  • Custom PDB configuration: full control with minAvailable/maxUnavailable and unhealthyPodEvictionPolicy
  • Annotation-based overrides with optional reason requirement

Observability

  • Prometheus metrics: 11 metrics covering reconciliation, PDB operations, compliance, and enforcement
  • OpenTelemetry tracing: distributed tracing via OTLP/gRPC
  • Structured logging: JSON-formatted with audit trails and correlation IDs
  • Kubernetes events: policy and PDB lifecycle events

Production Ready

  • Admission webhooks for validation and defaulting
  • Leader election for HA deployments
  • Circuit breaker pattern for API protection
  • Policy caching for efficient reconciliation
  • Health check endpoints (/healthz, /readyz)
  • Multi-architecture container images (amd64, arm64)
  • Distroless base image for minimal attack surface

Technical Details

  • Built with operator-sdk v1.42.0 and controller-runtime v0.23.1
  • Go 1.26.0 with Kubernetes client v0.35.2
  • 71-93% test coverage across packages

Getting Started

# Install with Helm (recommended)
helm install pdb-operator oci://ghcr.io/pdb-operator/charts/pdb-operator \
--namespace pdb-operator-system \
--create-namespace

# Or install with kubectl
kubectl apply -f https://raw.githubusercontent.com/pdb-operator/pdb-operator/main/dist/install.yaml

Check out the documentation for the full guide.

What's Next

See the Roadmap for planned features including StatefulSet/DaemonSet support, namespace-scoped defaults, dry-run mode, and more.

Contributing

We welcome contributions! See the Contributing Guide to get started. All commits must be signed off with DCO.