Provides a CMS Plone Backend and Frontend for Kubernetes with cdk8s
Project description
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 (modern React frontend) and 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:
-
Production Volto - Production-ready Plone 6 deployment with modern UI:
- Volto frontend (React) + REST API backend
- PostgreSQL with RelStorage (CloudNativePG or Bitnami)
- Varnish HTTP caching with kube-httpcache
- Ingress support (Traefik/Kong) with TLS
-
Classic UI - Traditional Plone deployment with server-side rendering:
- Classic UI (traditional Plone interface)
- PostgreSQL with RelStorage (CloudNativePG or Bitnami)
- 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)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cdk8s_plone-0.1.25.tar.gz.
File metadata
- Download URL: cdk8s_plone-0.1.25.tar.gz
- Upload date:
- Size: 968.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ca81fbc6231283c847c0f586086baf72bb5f6059f4a482de01a6e4cdb7da2bb
|
|
| MD5 |
5fd7e15f66660b1acb9d5611b3c6ce26
|
|
| BLAKE2b-256 |
021c86be7b12b0f95ca5dd5cf5fe1686ef8bb8c953f5014b4affea76b062fccc
|
File details
Details for the file cdk8s_plone-0.1.25-py3-none-any.whl.
File metadata
- Download URL: cdk8s_plone-0.1.25-py3-none-any.whl
- Upload date:
- Size: 966.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4ae4490a56bcc66c831711197140555475f6d9065858d07a08039fc5320ba8d
|
|
| MD5 |
bb3105ce0386a378b68e396f83ff2390
|
|
| BLAKE2b-256 |
883e02483712329e12a01dc617a9faf6590879b0810798cc62dea71cafcaba79
|