CDK8S Plone
TypeScript and Python library for deploying Plone CMS to Kubernetes using CDK8S
Overview
cdk8s-plone provides CDK8S constructs for deploying Plone CMS on Kubernetes. Define your infrastructure using TypeScript or Python and generate Kubernetes manifests automatically.
Key Features:
- 🚀 Supports Volto (React frontend) and Blicca (formerly Classic UI)
- 📦 High availability with configurable replicas
- ⚡ Optional Varnish HTTP caching via kube-httpcache (
PloneHttpcache) or cloud-vinyl VinylCache operator (PloneVinylCache) - 🔧 Fine-grained resource and probe configuration
- 🌍 Multi-language support (TypeScript/JavaScript and Python)
- ✅ Type-safe infrastructure as code
Quick Start
Installation
TypeScript/JavaScript:
npm install @bluedynamics/cdk8s-plone
Python:
pip install cdk8s-plone
Basic Example
import { App, Chart } from 'cdk8s';
import { Plone, PloneVariant } from '@bluedynamics/cdk8s-plone';
const app = new App();
const chart = new Chart(app, 'PloneDeployment');
new Plone(chart, 'my-plone', {
variant: PloneVariant.VOLTO,
backend: {
image: 'plone/plone-backend:6.1.3',
replicas: 3,
},
frontend: {
image: 'plone/plone-frontend:16.0.0',
replicas: 2,
},
});
app.synth();
Generate Kubernetes manifests:
cdk8s synth
kubectl apply -f dist/
Documentation
📚 Full documentation: https://bluedynamics.github.io/cdk8s-plone/
Examples
Complete working examples are available in the examples/ directory:
-
Volto - Production-ready Plone 6 deployment with the React single-page frontend:
- Volto frontend (React) + REST API backend
- PostgreSQL with RelStorage (plain PostgreSQL or CloudNativePG)
- Varnish HTTP caching with kube-httpcache
- Ingress support (Traefik/Kong) with TLS
-
Blicca - Plone deployment with server-side rendering (formerly Classic UI):
- Blicca (backend renders the UI, no separate frontend)
- PostgreSQL with RelStorage (plain PostgreSQL or CloudNativePG)
- Varnish HTTP caching with kube-httpcache
- Ingress support (Traefik/Kong) with TLS
- Simpler architecture (no separate frontend)
Prometheus Metrics
Enable Prometheus ServiceMonitor for metrics collection (requires Prometheus Operator):
new Plone(chart, 'my-plone', {
backend: {
servicemonitor: true,
metricsPath: '/metrics', // optional, defaults to '/metrics'
},
frontend: {
servicemonitor: true,
metricsPort: 9090, // optional, defaults to service port
},
});
Note: You must instrument your Plone backend/frontend to expose metrics at the configured endpoint. For Volto/Node.js frontends, consider using prom-client or express-prometheus-middleware.
Requirements
- kubectl - Install kubectl
- Node.js 16+ (for TypeScript/JavaScript) - Install Node.js
- Python 3.8+ (for Python) - Install Python
- Kubernetes cluster (local or cloud)
For detailed setup instructions, see Setup Prerequisites.
Development
This project uses Projen for project management.
# Install dependencies
npm install
# Run tests
npm test
# Build
npm run build
# Update project configuration
# Edit .projenrc.ts, then run:
npx projen
For detailed development instructions, see CONTRIBUTING.md (if available).
Resources
- CDK8S Documentation
- Plone CMS
- kube-httpcache (for HTTP caching)
- CloudNativePG (for PostgreSQL management)
License
Maintainers
Maintained by Blue Dynamics Alliance
Author: Jens W. Klein (jk@kleinundpartner.at)
Metadata
Release files for cdk8s-plone 0.1.57
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cdk8s_plone-0.1.57.tar.gz | 918.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cdk8s_plone-0.1.57-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.8 MB
Release files / cdk8s_plone-0.1.57.tar.gz
| Download URL | cdk8s_plone-0.1.57.tar.gz |
|---|---|
| Size | 918.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7f94549513b067fde6057943507f2ef2329814b6fcc2a3696f7d1f410e06d3d6
|
|
BLAKE2b-256 checksum How to use checksums |
de93820df767606c084203e9ad7ca715ea9760a5fc5dbb12a44f71578d15f9d1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.7
|
Release files / cdk8s_plone-0.1.57-py3-none-any.whl
| Download URL | cdk8s_plone-0.1.57-py3-none-any.whl |
|---|---|
| Size | 917.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c6cc40724d788891da4d414c35a798f266f9ceb8c5cf577120e13c687da42806
|
|
BLAKE2b-256 checksum How to use checksums |
8c2a75305d4d75cfc26e97249c34fa930e6eb584c28469a4ca74e2b95b9f5d04
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.7
|