en
Plone on Kubernetes - conditions were cloudy
Integrator
Other
Business
Intermediate
Plone on Kubernetes — Why you want it, what was missing, and what I built to make it thrive Running Plone in a container is easy. Running it well on Kubernetes — with replicas, rolling updates, autoscalers and PostgreSQL underneath instead of a lonely Data.fs — is a different game. Over the last while I've been rebuilding the pieces one by one under a single umbrella: Cloudbrine, the cloud-native PostgreSQL ZODB/Plone ecosystem. This is the 25-minute bird's-eye tour of the whole thing.

Details

We'll start with why you'd want Plone on Kubernetes at all, then walk the puzzle pieces that make it actually thrive:

* Storage — zodb-pgjsonb puts ZODB on PostgreSQL as JSONB (powered by a Rust pickle-to-JSON codec), with zodb-s3blobs sending blobs to S3 where they belong.

* Catalog & media — plone-pgcatalog moves search into the database, plone-pgthumbor hands image scaling to Thumbor.

* Deployment — cdk8s-plone describes your whole stack as real code and generates clean manifests instead of hand-edited YAML.

* Caching — cloud-vinyl, a Kubernetes operator for Vinyl Cache (the FOSS successor to Varnish), so your pods stop re-rendering the same page for the hundredth time.

* Observability — plone.observability gives honest liveness/readiness/startup probes and real Prometheus metrics, because Plone's cheerful @@ok keeps saying OK right up until it can't answer at all — with a nod to cdk8s-monitoring, Grafana and Tempo.

* Infrastructure — and because none of this runs on wishful thinking, the parts you bring along: CloudNativePG for PostgreSQL, an S3-compatible object store (MinIO or AWS) for blobs, Thumbor for images, and a Prometheus/Grafana/Tempo stack for metrics and traces.

No single deep dive — this is the map, the pieces, and how they click together, so you leave knowing what a production-grade, cloud-native Plone actually looks like and where to start building your own.