{"id":24637861,"url":"https://github.com/bluedynamics/cdk8s-plone","last_synced_at":"2026-04-18T17:06:15.042Z","repository":{"id":244784203,"uuid":"816213115","full_name":"bluedynamics/cdk8s-plone","owner":"bluedynamics","description":"CDK8S Chart for Plone","archived":false,"fork":false,"pushed_at":"2025-05-08T02:00:04.000Z","size":903,"stargazers_count":0,"open_issues_count":9,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-08T23:43:50.350Z","etag":null,"topics":["cdk8s","cdk8s-library","cms","kubernetes","plone"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bluedynamics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-06-17T09:17:08.000Z","updated_at":"2025-05-07T09:47:36.000Z","dependencies_parsed_at":"2024-07-19T15:48:50.176Z","dependency_job_id":"2eb0c904-bda6-4510-b905-e3ec093c29d9","html_url":"https://github.com/bluedynamics/cdk8s-plone","commit_stats":null,"previous_names":["bluedynamics/cdk8s-plone"],"tags_count":75,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluedynamics%2Fcdk8s-plone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluedynamics%2Fcdk8s-plone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluedynamics%2Fcdk8s-plone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluedynamics%2Fcdk8s-plone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bluedynamics","download_url":"https://codeload.github.com/bluedynamics/cdk8s-plone/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253166474,"owners_count":21864467,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cdk8s","cdk8s-library","cms","kubernetes","plone"],"created_at":"2025-01-25T10:12:12.045Z","updated_at":"2026-04-18T17:06:15.035Z","avatar_url":"https://github.com/bluedynamics.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CDK8S Plone\n\n\u003e TypeScript and Python library for deploying Plone CMS to Kubernetes using CDK8S\n\n[![npm version](https://badge.fury.io/js/%40bluedynamics%2Fcdk8s-plone.svg)](https://www.npmjs.com/package/@bluedynamics/cdk8s-plone)\n[![PyPI version](https://badge.fury.io/py/cdk8s-plone.svg)](https://pypi.org/project/cdk8s-plone/)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)\n\n## Overview\n\ncdk8s-plone provides CDK8S constructs for deploying [Plone CMS](https://plone.org/) on Kubernetes. Define your infrastructure using TypeScript or Python and generate Kubernetes manifests automatically.\n\n**Key Features:**\n- 🚀 Supports Volto (modern React frontend) and Classic UI\n- 📦 High availability with configurable replicas\n- ⚡ Optional Varnish HTTP caching via kube-httpcache (`PloneHttpcache`) or cloud-vinyl VinylCache operator (`PloneVinylCache`)\n- 🔧 Fine-grained resource and probe configuration\n- 🌍 Multi-language support (TypeScript/JavaScript and Python)\n- ✅ Type-safe infrastructure as code\n\n## Quick Start\n\n### Installation\n\n**TypeScript/JavaScript:**\n```bash\nnpm install @bluedynamics/cdk8s-plone\n```\n\n**Python:**\n```bash\npip install cdk8s-plone\n```\n\n### Basic Example\n\n```typescript\nimport { App, Chart } from 'cdk8s';\nimport { Plone, PloneVariant } from '@bluedynamics/cdk8s-plone';\n\nconst app = new App();\nconst chart = new Chart(app, 'PloneDeployment');\n\nnew Plone(chart, 'my-plone', {\n  variant: PloneVariant.VOLTO,\n  backend: {\n    image: 'plone/plone-backend:6.1.3',\n    replicas: 3,\n  },\n  frontend: {\n    image: 'plone/plone-frontend:16.0.0',\n    replicas: 2,\n  },\n});\n\napp.synth();\n```\n\nGenerate Kubernetes manifests:\n```bash\ncdk8s synth\nkubectl apply -f dist/\n```\n\n## Documentation\n\n**📚 Full documentation:** https://bluedynamics.github.io/cdk8s-plone/\n\n- [Quick Start Tutorial](https://bluedynamics.github.io/cdk8s-plone/tutorials/01-quick-start.html)\n- [Configuration Reference](https://bluedynamics.github.io/cdk8s-plone/reference/configuration-options.html)\n- [Architecture Overview](https://bluedynamics.github.io/cdk8s-plone/explanation/architecture.html)\n- [Complete API Documentation](./API.md)\n\n## Examples\n\nComplete working examples are available in the [`examples/`](examples/) directory:\n\n- **[Production Volto](examples/production-volto/)** - Production-ready Plone 6 deployment with modern UI:\n  - Volto frontend (React) + REST API backend\n  - PostgreSQL with RelStorage (CloudNativePG or Bitnami)\n  - Varnish HTTP caching with kube-httpcache\n  - Ingress support (Traefik/Kong) with TLS\n\n- **[Classic UI](examples/classic-ui/)** - Traditional Plone deployment with server-side rendering:\n  - Classic UI (traditional Plone interface)\n  - PostgreSQL with RelStorage (CloudNativePG or Bitnami)\n  - Varnish HTTP caching with kube-httpcache\n  - Ingress support (Traefik/Kong) with TLS\n  - Simpler architecture (no separate frontend)\n\n### Prometheus Metrics\n\nEnable Prometheus ServiceMonitor for metrics collection (requires Prometheus Operator):\n\n```typescript\nnew Plone(chart, 'my-plone', {\n  backend: {\n    servicemonitor: true,\n    metricsPath: '/metrics',  // optional, defaults to '/metrics'\n  },\n  frontend: {\n    servicemonitor: true,\n    metricsPort: 9090,  // optional, defaults to service port\n  },\n});\n```\n\n**Note:** You must instrument your Plone backend/frontend to expose metrics at the configured endpoint. For Volto/Node.js frontends, consider using [prom-client](https://www.npmjs.com/package/prom-client) or [express-prometheus-middleware](https://www.npmjs.com/package/express-prometheus-middleware).\n\n## Requirements\n- **kubectl** - [Install kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)\n- **Node.js 16+** (for TypeScript/JavaScript) - [Install Node.js](https://nodejs.org/)\n- **Python 3.8+** (for Python) - [Install Python](https://www.python.org/)\n- **Kubernetes cluster** (local or cloud)\n\nFor detailed setup instructions, see [Setup Prerequisites](https://bluedynamics.github.io/cdk8s-plone/how-to/setup-prerequisites.html).\n\n## Development\n\nThis project uses [Projen](https://projen.io/) for project management.\n\n```bash\n# Install dependencies\nnpm install\n\n# Run tests\nnpm test\n\n# Build\nnpm run build\n\n# Update project configuration\n# Edit .projenrc.ts, then run:\nnpx projen\n```\n\nFor detailed development instructions, see [CONTRIBUTING.md](./CONTRIBUTING.md) (if available).\n\n## Resources\n\n- [CDK8S Documentation](https://cdk8s.io/)\n- [Plone CMS](https://plone.org/)\n- [kube-httpcache](https://github.com/mittwald/kube-httpcache) (for HTTP caching)\n- [CloudNativePG](https://cloudnative-pg.io/) (for PostgreSQL management)\n\n## License\n\n[Apache 2.0](LICENSE)\n\n## Maintainers\n\nMaintained by [Blue Dynamics Alliance](https://github.com/bluedynamics)\n\n**Author:** Jens W. Klein (jk@kleinundpartner.at)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluedynamics%2Fcdk8s-plone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbluedynamics%2Fcdk8s-plone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluedynamics%2Fcdk8s-plone/lists"}