PDB Operator v0.1.0 - Initial Release
· 2 min read
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%), andcustom - Two-controller architecture: PDBPolicyController for policy management and DeploymentController for PDB lifecycle
- Three enforcement modes:
strict,flexible, andadvisoryfor 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/maxUnavailableandunhealthyPodEvictionPolicy - 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.
