Skip to main content

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

npm version PyPI version License

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

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

License

Apache 2.0

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

cdk8s_plone-0.1.40.tar.gz (908.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cdk8s_plone-0.1.40-py3-none-any.whl (906.7 kB view details)

Uploaded Python 3

File details

Details for the file cdk8s_plone-0.1.40.tar.gz.

File metadata

  • Download URL: cdk8s_plone-0.1.40.tar.gz
  • Upload date:
  • Size: 908.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.14.5

File hashes

Hashes for cdk8s_plone-0.1.40.tar.gz
Algorithm Hash digest
SHA256 c3a6f5d3a0dd4f1690f9686c2d94d2addc5c74efb0f9fda4999b86ac2a378f59
MD5 874b2fa5cad66b5ee424de7511c7bb1e
BLAKE2b-256 0c454458176905c60623fa37fa90ff3453aa275c534db0aa0d02c9450c61f71f

See more details on using hashes here.

File details

Details for the file cdk8s_plone-0.1.40-py3-none-any.whl.

File metadata

  • Download URL: cdk8s_plone-0.1.40-py3-none-any.whl
  • Upload date:
  • Size: 906.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.14.5

File hashes

Hashes for cdk8s_plone-0.1.40-py3-none-any.whl
Algorithm Hash digest
SHA256 0a7b5e73db2a8ecf126b8a0c3c7d77c06ac7baceece0f6d91bdb9057e121198c
MD5 2d1773ba68b3a2211f0093d3a5d91b19
BLAKE2b-256 3b19a382b213efa7007040058608aa9bef39767e66b4bd47ae66924fbc9e228f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page