TypeScript and Python library for deploying Plone CMS to Kubernetes using CDK8S
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 (modern React frontend) and Classic UI
- 📦 High availability with configurable replicas
- ⚡ Optional Varnish HTTP caching layer
- 🔧 Fine-grained resource and probe configuration
- 🌍 Multi-language support (TypeScript/JavaScript and Python)
- ✅ Type-safe infrastructure as code
TypeScript/JavaScript:
npm install @bluedynamics/cdk8s-plonePython:
pip install cdk8s-ploneimport { 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/📚 Full documentation: https://bluedynamics.github.io/cdk8s-plone/
See the cdk8s-plone-example repository for complete working examples.
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.
- 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.
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 projenFor detailed development instructions, see CONTRIBUTING.md (if available).
- CDK8S Documentation
- Plone CMS
- kube-httpcache (for HTTP caching)
- Example Project
Maintained by Blue Dynamics Alliance
Author: Jens W. Klein (jk@kleinundpartner.at)