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.58
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.58.tar.gz | 918.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cdk8s_plone-0.1.58-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.8 MB
Release files / cdk8s_plone-0.1.58.tar.gz
| Download URL | cdk8s_plone-0.1.58.tar.gz |
|---|---|
| Size | 918.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
aa7867cecf4a4fc7500b456e1ae47a9413268725132c1ab24a4548ad07210ea8
|
|
BLAKE2b-256 checksum How to use checksums |
75284773c48dc8ce4d81e632161f23e8d6003886fab6194f3a1be3f7bdcbf977
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.8
|
Release files / cdk8s_plone-0.1.58-py3-none-any.whl
| Download URL | cdk8s_plone-0.1.58-py3-none-any.whl |
|---|---|
| Size | 917.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0e35dad1221400b5327dc0a7474434e0a101bd9aed75205364903bd634460551
|
|
BLAKE2b-256 checksum How to use checksums |
8fa6219f6be9e013acf1d2dad41185f47dafa6f0c94ad3434490c54ae70cf44b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.8
|