{ "author": { "email": "jk@kleinundpartner.at", "name": "Jens W. Klein", "roles": [ "author" ] }, "dependencies": { "cdk8s": "^2.70.113", "cdk8s-plus-30": "^2.4.10", "constructs": "^10.4.2" }, "dependencyClosure": { "cdk8s": { "targets": { "dotnet": { "namespace": "Org.Cdk8s", "packageId": "Org.Cdk8s" }, "go": { "moduleName": "github.com/cdk8s-team/cdk8s-core-go" }, "java": { "maven": { "artifactId": "cdk8s", "groupId": "org.cdk8s" }, "package": "org.cdk8s" }, "js": { "npm": "cdk8s" }, "python": { "distName": "cdk8s", "module": "cdk8s" } } }, "cdk8s-plus-30": { "submodules": { "cdk8s-plus-30.k8s": {} }, "targets": { "dotnet": { "namespace": "Org.Cdk8s.Plus30", "packageId": "Org.Cdk8s.Plus30" }, "go": { "moduleName": "github.com/cdk8s-team/cdk8s-plus-go" }, "java": { "maven": { "artifactId": "cdk8s-plus-30", "groupId": "org.cdk8s" }, "package": "org.cdk8s.plus30" }, "js": { "npm": "cdk8s-plus-30" }, "python": { "distName": "cdk8s-plus-30", "module": "cdk8s_plus_30" } } }, "constructs": { "targets": { "dotnet": { "namespace": "Constructs", "packageId": "Constructs" }, "go": { "moduleName": "github.com/aws/constructs-go" }, "java": { "maven": { "artifactId": "constructs", "groupId": "software.constructs" }, "package": "software.constructs" }, "js": { "npm": "constructs" }, "python": { "distName": "constructs", "module": "constructs" } } } }, "description": "Provides a CMS Plone Backend and Frontend for Kubernetes with cdk8s", "docs": { "stability": "stable" }, "homepage": "https://github.com/bluedynamics/cdk8s-plone.git", "jsiiVersion": "5.9.56 (build 0265a5f)", "license": "Apache-2.0", "metadata": { "jsii": { "pacmak": { "hasDefaultInterfaces": true } }, "tscOutDir": "lib", "tscRootDir": "src" }, "name": "@bluedynamics/cdk8s-plone", "readme": { "markdown": "# CDK8S Plone\n\n> 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 (React frontend) and Blicca (formerly 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- **[Volto](examples/volto/)** - Production-ready Plone 6 deployment with the React single-page frontend:\n - Volto frontend (React) + REST API backend\n - PostgreSQL with RelStorage (plain PostgreSQL or CloudNativePG)\n - Varnish HTTP caching with kube-httpcache\n - Ingress support (Traefik/Kong) with TLS\n\n- **[Blicca](examples/blicca/)** - Plone deployment with server-side rendering (formerly Classic UI):\n - Blicca (backend renders the UI, no separate frontend)\n - PostgreSQL with RelStorage (plain PostgreSQL or CloudNativePG)\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" }, "repository": { "type": "git", "url": "https://github.com/bluedynamics/cdk8s-plone.git" }, "schema": "jsii/0.10.0", "targets": { "js": { "npm": "@bluedynamics/cdk8s-plone" }, "python": { "distName": "cdk8s-plone", "module": "cdk8s_plone" } }, "types": { "@bluedynamics/cdk8s-plone.HttpcacheEnvVar": { "assembly": "@bluedynamics/cdk8s-plone", "datatype": true, "docs": { "stability": "stable", "summary": "An environment variable to pass to the kube-httpcache container." }, "fqn": "@bluedynamics/cdk8s-plone.HttpcacheEnvVar", "kind": "interface", "locationInModule": { "filename": "src/httpcache.ts", "line": 10 }, "name": "HttpcacheEnvVar", "properties": [ { "abstract": true, "docs": { "stability": "stable", "summary": "The name of the environment variable." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 14 }, "name": "name", "type": { "primitive": "string" } }, { "abstract": true, "docs": { "stability": "stable", "summary": "The value of the environment variable." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 19 }, "name": "value", "type": { "primitive": "string" } } ], "symbolId": "src/httpcache:HttpcacheEnvVar" }, "@bluedynamics/cdk8s-plone.HttpcacheToleration": { "assembly": "@bluedynamics/cdk8s-plone", "datatype": true, "docs": { "stability": "stable", "summary": "A Kubernetes toleration for the Varnish pods." }, "fqn": "@bluedynamics/cdk8s-plone.HttpcacheToleration", "kind": "interface", "locationInModule": { "filename": "src/httpcache.ts", "line": 25 }, "name": "HttpcacheToleration", "properties": [ { "abstract": true, "docs": { "stability": "stable", "summary": "The taint key to tolerate." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 29 }, "name": "key", "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- tolerate all effects", "stability": "stable", "summary": "The taint effect to tolerate (NoSchedule, PreferNoSchedule, NoExecute)." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 47 }, "name": "effect", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "'Equal'", "stability": "stable", "summary": "The operator (Equal or Exists)." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 35 }, "name": "operator", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- no value", "stability": "stable", "summary": "The taint value to match (when operator is Equal)." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 41 }, "name": "value", "optional": true, "type": { "primitive": "string" } } ], "symbolId": "src/httpcache:HttpcacheToleration" }, "@bluedynamics/cdk8s-plone.Plone": { "assembly": "@bluedynamics/cdk8s-plone", "base": "constructs.Construct", "docs": { "example": "new Plone(chart, 'my-plone', {\n variant: PloneVariant.VOLTO,\n backend: {\n image: 'plone/plone-backend:6.0.10',\n replicas: 3,\n },\n frontend: {\n image: 'plone/plone-frontend:16.0.0',\n },\n});", "remarks": "This construct creates all necessary Kubernetes resources for running Plone:\n- Deployment(s) for backend (and optionally frontend)\n- Service(s) for network access\n- Optional PodDisruptionBudget for high availability\n\nSupports two deployment variants:\n- VOLTO: React single-page frontend talking to the REST API backend (default)\n- BLICCA: the Plone backend renders the UI server-side and serves HTML directly", "stability": "stable", "summary": "Plone construct for deploying Plone CMS to Kubernetes." }, "fqn": "@bluedynamics/cdk8s-plone.Plone", "initializer": { "docs": { "stability": "stable" }, "locationInModule": { "filename": "src/plone.ts", "line": 417 }, "parameters": [ { "name": "scope", "type": { "fqn": "constructs.Construct" } }, { "name": "id", "type": { "primitive": "string" } }, { "name": "options", "optional": true, "type": { "fqn": "@bluedynamics/cdk8s-plone.PloneOptions" } } ] }, "kind": "class", "locationInModule": { "filename": "src/plone.ts", "line": 394 }, "name": "Plone", "properties": [ { "docs": { "remarks": "Use this to reference the backend service from other constructs.", "stability": "stable", "summary": "Name of the backend Kubernetes service." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 399 }, "name": "backendServiceName", "type": { "primitive": "string" } }, { "docs": { "stability": "stable", "summary": "The Plone site ID in ZODB." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 415 }, "name": "siteId", "type": { "primitive": "string" } }, { "docs": { "stability": "stable", "summary": "The deployment variant being used (VOLTO or BLICCA)." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 410 }, "name": "variant", "type": { "fqn": "@bluedynamics/cdk8s-plone.PloneVariant" } }, { "docs": { "remarks": "Only set when variant is VOLTO, otherwise undefined.", "stability": "stable", "summary": "Name of the frontend Kubernetes service." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 405 }, "name": "frontendServiceName", "optional": true, "type": { "primitive": "string" } } ], "symbolId": "src/plone:Plone" }, "@bluedynamics/cdk8s-plone.PloneBaseOptions": { "assembly": "@bluedynamics/cdk8s-plone", "datatype": true, "docs": { "remarks": "These options control container image, replica count, resource limits,\nenvironment variables, and health probes.", "stability": "stable", "summary": "Base options for Plone backend or frontend configuration." }, "fqn": "@bluedynamics/cdk8s-plone.PloneBaseOptions", "kind": "interface", "locationInModule": { "filename": "src/plone.ts", "line": 81 }, "name": "PloneBaseOptions", "properties": [ { "abstract": true, "docs": { "default": "- no additional annotations", "example": "{ 'deployment.kubernetes.io/revision': '1' }", "stability": "stable", "summary": "Annotations to add to the Deployment metadata." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 232 }, "name": "annotations", "optional": true, "type": { "collection": { "elementtype": { "primitive": "string" }, "kind": "map" } } }, { "abstract": true, "docs": { "default": "- undefined (no additional environment variables)", "remarks": "Use cdk8s-plus-30 Env class to define variables and sources.", "stability": "stable", "summary": "Environment variables to set in the container." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 150 }, "name": "environment", "optional": true, "type": { "fqn": "cdk8s-plus-30.Env" } }, { "abstract": true, "docs": { "default": "- 'plone/plone-backend:latest' for backend, 'plone/plone-frontend:latest' for frontend", "example": "'plone/plone-backend:6.0.10' or 'plone/plone-frontend:16.0.0'", "stability": "stable", "summary": "Container image to use for the deployment." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 87 }, "name": "image", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "'IfNotPresent'", "stability": "stable", "summary": "Image pull policy for the container." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 93 }, "name": "imagePullPolicy", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "'500m' for both backend and frontend", "example": "'500m' or '1' or '2000m'", "stability": "stable", "summary": "CPU limit for the container." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 122 }, "name": "limitCpu", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "'512Mi' for backend, '1Gi' for frontend", "example": "'512Mi' or '1Gi'", "stability": "stable", "summary": "Memory limit for the container." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 129 }, "name": "limitMemory", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "false", "remarks": "Liveness probes determine when to restart a container.\nRecommended: true for frontend, false for backend (Zope has its own recovery).", "stability": "stable", "summary": "Enable liveness probe for the container." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 195 }, "name": "livenessEnabled", "optional": true, "type": { "primitive": "boolean" } }, { "abstract": true, "docs": { "default": "3", "stability": "stable", "summary": "Minimum consecutive failures for the liveness probe to be considered failed." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 225 }, "name": "livenessFailureThreshold", "optional": true, "type": { "primitive": "number" } }, { "abstract": true, "docs": { "default": "30", "stability": "stable", "summary": "Number of seconds after container start before liveness probe is initiated." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 201 }, "name": "livenessInitialDelaySeconds", "optional": true, "type": { "primitive": "number" } }, { "abstract": true, "docs": { "default": "10", "stability": "stable", "summary": "How often (in seconds) to perform the liveness probe." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 213 }, "name": "livenessPeriodSeconds", "optional": true, "type": { "primitive": "number" } }, { "abstract": true, "docs": { "default": "1", "stability": "stable", "summary": "Minimum consecutive successes for the liveness probe to be considered successful." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 219 }, "name": "livenessSuccessThreshold", "optional": true, "type": { "primitive": "number" } }, { "abstract": true, "docs": { "default": "5", "stability": "stable", "summary": "Number of seconds after which the liveness probe times out." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 207 }, "name": "livenessTimeoutSeconds", "optional": true, "type": { "primitive": "number" } }, { "abstract": true, "docs": { "default": "- undefined (not set)", "remarks": "Can be an absolute number (e.g., 1) or a percentage (e.g., '50%').\nUsed in PodDisruptionBudget if specified.", "stability": "stable", "summary": "Maximum number of pods that can be unavailable during updates." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 107 }, "name": "maxUnavailable", "optional": true, "type": { "union": { "types": [ { "primitive": "string" }, { "primitive": "number" } ] } } }, { "abstract": true, "docs": { "default": "'/metrics'", "remarks": "Only used when servicemonitor is enabled.", "stability": "stable", "summary": "Path to scrape metrics from." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 280 }, "name": "metricsPath", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- uses the main service port", "remarks": "Only used when servicemonitor is enabled.", "stability": "stable", "summary": "Port name or number to scrape metrics from." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 273 }, "name": "metricsPort", "optional": true, "type": { "union": { "types": [ { "primitive": "string" }, { "primitive": "number" } ] } } }, { "abstract": true, "docs": { "default": "- undefined (not set)", "remarks": "Can be an absolute number (e.g., 1) or a percentage (e.g., '50%').\nUsed in PodDisruptionBudget if specified.", "stability": "stable", "summary": "Minimum number of pods that must be available during updates." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 115 }, "name": "minAvailable", "optional": true, "type": { "union": { "types": [ { "primitive": "string" }, { "primitive": "number" } ] } } }, { "abstract": true, "docs": { "default": "- no node selector", "example": "{ 'topology.kubernetes.io/region': 'fsn1' }", "remarks": "Use to constrain pods to nodes with matching labels, e.g. for region affinity.", "stability": "stable", "summary": "Node selector labels for pod scheduling." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 288 }, "name": "nodeSelector", "optional": true, "type": { "collection": { "elementtype": { "primitive": "string" }, "kind": "map" } } }, { "abstract": true, "docs": { "default": "- no additional annotations", "example": "{ 'prometheus.io/scrape': 'true', 'prometheus.io/port': '8080' }", "remarks": "Common for Prometheus, Istio, backup policies, etc.", "stability": "stable", "summary": "Annotations to add to the Pod template metadata." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 240 }, "name": "podAnnotations", "optional": true, "type": { "collection": { "elementtype": { "primitive": "string" }, "kind": "map" } } }, { "abstract": true, "docs": { "default": "true", "remarks": "Readiness probes determine when a container is ready to accept traffic.", "stability": "stable", "summary": "Enable readiness probe for the container." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 157 }, "name": "readinessEnabled", "optional": true, "type": { "primitive": "boolean" } }, { "abstract": true, "docs": { "default": "3", "stability": "stable", "summary": "Minimum consecutive failures for the readiness probe to be considered failed." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 187 }, "name": "readinessFailureThreshold", "optional": true, "type": { "primitive": "number" } }, { "abstract": true, "docs": { "default": "10", "stability": "stable", "summary": "Number of seconds after container start before readiness probe is initiated." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 163 }, "name": "readinessInitialDelaySeconds", "optional": true, "type": { "primitive": "number" } }, { "abstract": true, "docs": { "default": "10", "stability": "stable", "summary": "How often (in seconds) to perform the readiness probe." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 175 }, "name": "readinessPeriodSeconds", "optional": true, "type": { "primitive": "number" } }, { "abstract": true, "docs": { "default": "1", "stability": "stable", "summary": "Minimum consecutive successes for the readiness probe to be considered successful." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 181 }, "name": "readinessSuccessThreshold", "optional": true, "type": { "primitive": "number" } }, { "abstract": true, "docs": { "default": "15", "stability": "stable", "summary": "Number of seconds after which the readiness probe times out." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 169 }, "name": "readinessTimeoutSeconds", "optional": true, "type": { "primitive": "number" } }, { "abstract": true, "docs": { "default": "2", "stability": "stable", "summary": "Number of pod replicas to run." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 99 }, "name": "replicas", "optional": true, "type": { "primitive": "number" } }, { "abstract": true, "docs": { "default": "'200m'", "example": "'200m' or '0.5'", "stability": "stable", "summary": "CPU request for the container." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 136 }, "name": "requestCpu", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "'256Mi'", "example": "'256Mi' or '512Mi'", "stability": "stable", "summary": "Memory request for the container." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 143 }, "name": "requestMemory", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- no security context", "example": "{ capabilities: { add: ['SYS_PTRACE'] } }", "remarks": "Use to set capabilities, run as non-root, read-only filesystem, etc.", "stability": "stable", "summary": "Security context for the container." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 296 }, "name": "securityContext", "optional": true, "type": { "fqn": "@bluedynamics/cdk8s-plone.PloneSecurityContext" } }, { "abstract": true, "docs": { "default": "- construct-managed defaults only", "example": "{ type: 'LoadBalancer', trafficDistribution: 'PreferClose' }", "remarks": "Applies to this component's Service.", "stability": "stable", "summary": "Service configuration: type, trafficDistribution, sessionAffinity, annotations/labels, and a raw `overrides` escape hatch for any other ServiceSpec field." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 258 }, "name": "service", "optional": true, "type": { "fqn": "@bluedynamics/cdk8s-plone.PloneServiceSpec" } }, { "abstract": true, "docs": { "default": "- no additional annotations", "deprecated": "use `service.annotations` instead", "example": "{ 'external-dns.alpha.kubernetes.io/hostname': 'plone.example.com' }", "remarks": "Common for external-dns, load balancers, service mesh, etc.", "stability": "deprecated", "summary": "Annotations to add to the Service metadata." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 249 }, "name": "serviceAnnotations", "optional": true, "type": { "collection": { "elementtype": { "primitive": "string" }, "kind": "map" } } }, { "abstract": true, "docs": { "default": "false", "remarks": "Requires Prometheus Operator to be installed in the cluster.\nWhen enabled, a ServiceMonitor resource will be created to scrape metrics.", "stability": "stable", "summary": "Enable Prometheus ServiceMonitor for metrics collection." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 266 }, "name": "servicemonitor", "optional": true, "type": { "primitive": "boolean" } } ], "symbolId": "src/plone:PloneBaseOptions" }, "@bluedynamics/cdk8s-plone.PloneCapabilities": { "assembly": "@bluedynamics/cdk8s-plone", "datatype": true, "docs": { "stability": "stable", "summary": "Linux capabilities to add or drop on a container." }, "fqn": "@bluedynamics/cdk8s-plone.PloneCapabilities", "kind": "interface", "locationInModule": { "filename": "src/plone.ts", "line": 13 }, "name": "PloneCapabilities", "properties": [ { "abstract": true, "docs": { "default": "- no capabilities added", "stability": "stable", "summary": "Capabilities to add (e.g. 'SYS_PTRACE', 'NET_ADMIN')." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 18 }, "name": "add", "optional": true, "type": { "collection": { "elementtype": { "primitive": "string" }, "kind": "array" } } }, { "abstract": true, "docs": { "default": "- no capabilities dropped", "stability": "stable", "summary": "Capabilities to drop (e.g. 'ALL', 'NET_RAW')." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 24 }, "name": "drop", "optional": true, "type": { "collection": { "elementtype": { "primitive": "string" }, "kind": "array" } } } ], "symbolId": "src/plone:PloneCapabilities" }, "@bluedynamics/cdk8s-plone.PloneHttpcache": { "assembly": "@bluedynamics/cdk8s-plone", "base": "constructs.Construct", "docs": { "example": "const plone = new Plone(chart, 'plone');\nconst cache = new PloneHttpcache(chart, 'cache', {\n plone: plone,\n existingSecret: 'varnish-secret',\n});", "remarks": "Uses the mittwald/kube-httpcache Helm chart to deploy Varnish as a\ncaching proxy in front of Plone backend and/or frontend services.\n\nThe cache automatically connects to the Plone services and provides\nHTTP cache invalidation capabilities.", "stability": "stable", "summary": "PloneHttpcache construct for deploying Varnish HTTP caching layer." }, "fqn": "@bluedynamics/cdk8s-plone.PloneHttpcache", "initializer": { "docs": { "stability": "stable" }, "locationInModule": { "filename": "src/httpcache.ts", "line": 179 }, "parameters": [ { "name": "scope", "type": { "fqn": "constructs.Construct" } }, { "name": "id", "type": { "primitive": "string" } }, { "name": "options", "type": { "fqn": "@bluedynamics/cdk8s-plone.PloneHttpcacheOptions" } } ] }, "kind": "class", "locationInModule": { "filename": "src/httpcache.ts", "line": 172 }, "name": "PloneHttpcache", "properties": [ { "docs": { "remarks": "Use this to reference the cache service from ingress or other constructs.", "stability": "stable", "summary": "Name of the Varnish service created by the Helm chart." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 177 }, "name": "httpcacheServiceName", "type": { "primitive": "string" } } ], "symbolId": "src/httpcache:PloneHttpcache" }, "@bluedynamics/cdk8s-plone.PloneHttpcacheOptions": { "assembly": "@bluedynamics/cdk8s-plone", "datatype": true, "docs": { "stability": "stable", "summary": "Configuration options for PloneHttpcache (Varnish caching layer)." }, "fqn": "@bluedynamics/cdk8s-plone.PloneHttpcacheOptions", "kind": "interface", "locationInModule": { "filename": "src/httpcache.ts", "line": 53 }, "name": "PloneHttpcacheOptions", "properties": [ { "abstract": true, "docs": { "remarks": "The cache will automatically connect to the backend and frontend services.", "stability": "stable", "summary": "The Plone construct to attach the HTTP cache to." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 58 }, "name": "plone", "type": { "fqn": "@bluedynamics/cdk8s-plone.Plone" } }, { "abstract": true, "docs": { "default": "undefined (chartVersion = with each chart release there is an image release too )", "remarks": "If not specified, the latest version from the repository will be used.", "stability": "stable", "summary": "Version of the kube-httpcache Container Image to use." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 131 }, "name": "appVersion", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "undefined (latest)", "remarks": "If not specified, the latest version from the repository will be used.", "stability": "stable", "summary": "Version of the kube-httpcache Helm chart to use." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 124 }, "name": "chartVersion", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- undefined (no existing secret)", "remarks": "The secret should be created separately in the same namespace.", "stability": "stable", "summary": "Name of an existing Kubernetes secret containing Varnish admin credentials." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 79 }, "name": "existingSecret", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "true", "remarks": "When enabled, the exporter sidecar container will be deployed alongside Varnish.", "stability": "stable", "summary": "Enable the Prometheus exporter for Varnish metrics." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 117 }, "name": "exporterEnabled", "optional": true, "type": { "primitive": "boolean" } }, { "abstract": true, "docs": { "default": "- no additional env vars", "remarks": "These are appended to the built-in env vars (BACKEND_SERVICE_NAME, etc.)\nand can be referenced in VCL templates using Go template syntax: {{ .Env.VAR_NAME }}", "stability": "stable", "summary": "Additional environment variables to pass to the kube-httpcache container." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 145 }, "name": "extraEnvVars", "optional": true, "type": { "collection": { "elementtype": { "fqn": "@bluedynamics/cdk8s-plone.HttpcacheEnvVar" }, "kind": "array" } } }, { "abstract": true, "docs": { "default": "'500m'", "stability": "stable", "summary": "CPU limit for Varnish pods." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 85 }, "name": "limitCpu", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "'500Mi'", "stability": "stable", "summary": "Memory limit for Varnish pods." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 91 }, "name": "limitMemory", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "2", "stability": "stable", "summary": "Number of Varnish pod replicas to run." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 137 }, "name": "replicas", "optional": true, "type": { "primitive": "number" } }, { "abstract": true, "docs": { "default": "'100m'", "stability": "stable", "summary": "CPU request for Varnish pods." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 97 }, "name": "requestCpu", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "'100Mi'", "stability": "stable", "summary": "Memory request for Varnish pods." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 103 }, "name": "requestMemory", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "false", "remarks": "Requires Prometheus Operator to be installed in the cluster.", "stability": "stable", "summary": "Enable Prometheus ServiceMonitor for metrics collection." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 110 }, "name": "servicemonitor", "optional": true, "type": { "primitive": "boolean" } }, { "abstract": true, "docs": { "default": "- no tolerations", "remarks": "Use this to allow scheduling on nodes with specific taints,\ne.g. nodes tainted with kubernetes.io/arch=amd64:NoSchedule.", "stability": "stable", "summary": "Tolerations for the Varnish pods." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 153 }, "name": "tolerations", "optional": true, "type": { "collection": { "elementtype": { "fqn": "@bluedynamics/cdk8s-plone.HttpcacheToleration" }, "kind": "array" } } }, { "abstract": true, "docs": { "default": "- loaded from varnishVclFile or default config file", "remarks": "If provided, this takes precedence over varnishVclFile.", "stability": "stable", "summary": "Varnish VCL configuration as a string." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 65 }, "name": "varnishVcl", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- uses default config/varnish.tpl.vcl", "remarks": "If not provided, uses the default VCL file included in the library.", "stability": "stable", "summary": "Path to a Varnish VCL configuration file." }, "immutable": true, "locationInModule": { "filename": "src/httpcache.ts", "line": 72 }, "name": "varnishVclFile", "optional": true, "type": { "primitive": "string" } } ], "symbolId": "src/httpcache:PloneHttpcacheOptions" }, "@bluedynamics/cdk8s-plone.PloneOptions": { "assembly": "@bluedynamics/cdk8s-plone", "datatype": true, "docs": { "stability": "stable", "summary": "Main configuration options for Plone deployment." }, "fqn": "@bluedynamics/cdk8s-plone.PloneOptions", "kind": "interface", "locationInModule": { "filename": "src/plone.ts", "line": 327 }, "name": "PloneOptions", "properties": [ { "abstract": true, "docs": { "default": "{} (uses default values from PloneBaseOptions)", "stability": "stable", "summary": "Backend (Plone API) configuration." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 352 }, "name": "backend", "optional": true, "type": { "fqn": "@bluedynamics/cdk8s-plone.PloneBaseOptions" } }, { "abstract": true, "docs": { "default": "{} (uses default values from PloneBaseOptions)", "remarks": "Only used when variant is PloneVariant.VOLTO.", "stability": "stable", "summary": "Frontend (Volto) configuration." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 359 }, "name": "frontend", "optional": true, "type": { "fqn": "@bluedynamics/cdk8s-plone.PloneBaseOptions" } }, { "abstract": true, "docs": { "default": "[] (no image pull secrets)", "example": "['my-registry-secret']", "remarks": "These secrets must exist in the same namespace as the deployment.", "stability": "stable", "summary": "Names of Kubernetes secrets to use for pulling private container images." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 367 }, "name": "imagePullSecrets", "optional": true, "type": { "collection": { "elementtype": { "primitive": "string" }, "kind": "array" } } }, { "abstract": true, "docs": { "default": "'Plone'", "remarks": "This is used to construct the internal API path for Volto frontend.", "stability": "stable", "summary": "Plone site ID in the ZODB." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 340 }, "name": "siteId", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "PloneVariant.VOLTO", "stability": "stable", "summary": "Plone deployment variant to use." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 346 }, "name": "variant", "optional": true, "type": { "fqn": "@bluedynamics/cdk8s-plone.PloneVariant" } }, { "abstract": true, "docs": { "default": "'undefined'", "remarks": "This is used in Kubernetes labels and doesn't affect the actual image versions.", "stability": "stable", "summary": "Version string for labeling the deployment." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 333 }, "name": "version", "optional": true, "type": { "primitive": "string" } } ], "symbolId": "src/plone:PloneOptions" }, "@bluedynamics/cdk8s-plone.PloneSecurityContext": { "assembly": "@bluedynamics/cdk8s-plone", "datatype": true, "docs": { "remarks": "Controls privilege and access settings.", "stability": "stable", "summary": "Security context for a Plone container." }, "fqn": "@bluedynamics/cdk8s-plone.PloneSecurityContext", "kind": "interface", "locationInModule": { "filename": "src/plone.ts", "line": 31 }, "name": "PloneSecurityContext", "properties": [ { "abstract": true, "docs": { "default": "- undefined", "stability": "stable", "summary": "Allow privilege escalation for the container process." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 67 }, "name": "allowPrivilegeEscalation", "optional": true, "type": { "primitive": "boolean" } }, { "abstract": true, "docs": { "default": "- no capability changes", "example": "{ add: ['SYS_PTRACE'] }", "stability": "stable", "summary": "Linux capabilities to add or drop." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 37 }, "name": "capabilities", "optional": true, "type": { "fqn": "@bluedynamics/cdk8s-plone.PloneCapabilities" } }, { "abstract": true, "docs": { "default": "- undefined", "stability": "stable", "summary": "Run the container in privileged mode." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 73 }, "name": "privileged", "optional": true, "type": { "primitive": "boolean" } }, { "abstract": true, "docs": { "default": "- undefined", "stability": "stable", "summary": "Mount the root filesystem as read-only." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 61 }, "name": "readOnlyRootFilesystem", "optional": true, "type": { "primitive": "boolean" } }, { "abstract": true, "docs": { "default": "- container default", "stability": "stable", "summary": "Run the container as a specific group ID." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 49 }, "name": "runAsGroup", "optional": true, "type": { "primitive": "number" } }, { "abstract": true, "docs": { "default": "- undefined", "stability": "stable", "summary": "Require the container to run as non-root." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 55 }, "name": "runAsNonRoot", "optional": true, "type": { "primitive": "boolean" } }, { "abstract": true, "docs": { "default": "- container default", "stability": "stable", "summary": "Run the container as a specific user ID." }, "immutable": true, "locationInModule": { "filename": "src/plone.ts", "line": 43 }, "name": "runAsUser", "optional": true, "type": { "primitive": "number" } } ], "symbolId": "src/plone:PloneSecurityContext" }, "@bluedynamics/cdk8s-plone.PloneServiceSpec": { "assembly": "@bluedynamics/cdk8s-plone", "datatype": true, "docs": { "remarks": "Curated fields cover the common cases; use `overrides` as an escape hatch\nfor any other `ServiceSpec` field. `overrides` has the highest precedence and\ncan override every field, including the construct-managed `ports`/`selector`\n(at your own risk).", "stability": "stable", "summary": "Configuration for the generated Kubernetes Service spec." }, "fqn": "@bluedynamics/cdk8s-plone.PloneServiceSpec", "kind": "interface", "locationInModule": { "filename": "src/service.ts", "line": 13 }, "name": "PloneServiceSpec", "properties": [ { "abstract": true, "docs": { "default": "- none", "stability": "stable", "summary": "Annotations to add to the Service metadata." }, "immutable": true, "locationInModule": { "filename": "src/service.ts", "line": 66 }, "name": "annotations", "optional": true, "type": { "collection": { "elementtype": { "primitive": "string" }, "kind": "map" } } }, { "abstract": true, "docs": { "default": "- Cluster (Kubernetes default)", "stability": "stable", "summary": "External traffic policy, 'Cluster' | 'Local'." }, "immutable": true, "locationInModule": { "filename": "src/service.ts", "line": 36 }, "name": "externalTrafficPolicy", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- Cluster (Kubernetes default)", "stability": "stable", "summary": "Internal traffic policy, 'Cluster' | 'Local'." }, "immutable": true, "locationInModule": { "filename": "src/service.ts", "line": 42 }, "name": "internalTrafficPolicy", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- none", "stability": "stable", "summary": "Extra labels to add to the Service metadata." }, "immutable": true, "locationInModule": { "filename": "src/service.ts", "line": 72 }, "name": "labels", "optional": true, "type": { "collection": { "elementtype": { "primitive": "string" }, "kind": "map" } } }, { "abstract": true, "docs": { "default": "- none", "stability": "stable", "summary": "Load balancer implementation class." }, "immutable": true, "locationInModule": { "filename": "src/service.ts", "line": 54 }, "name": "loadBalancerClass", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- none", "stability": "stable", "summary": "Source IP ranges allowed to access a LoadBalancer service." }, "immutable": true, "locationInModule": { "filename": "src/service.ts", "line": 60 }, "name": "loadBalancerSourceRanges", "optional": true, "type": { "collection": { "elementtype": { "primitive": "string" }, "kind": "array" } } }, { "abstract": true, "docs": { "default": "- none", "stability": "stable", "summary": "Raw ServiceSpec overrides as a free-form map (e.g. `{ ipFamilyPolicy: 'PreferDualStack' }`). Highest precedence — merged on top of all curated fields and the construct-managed base. Use for any ServiceSpec field not covered above. Keys and values are passed through to the Service spec verbatim and are not validated by this construct." }, "immutable": true, "locationInModule": { "filename": "src/service.ts", "line": 82 }, "name": "overrides", "optional": true, "type": { "collection": { "elementtype": { "primitive": "any" }, "kind": "map" } } }, { "abstract": true, "docs": { "default": "- false", "stability": "stable", "summary": "Publish not-ready addresses (e.g. for headless services with StatefulSets)." }, "immutable": true, "locationInModule": { "filename": "src/service.ts", "line": 48 }, "name": "publishNotReadyAddresses", "optional": true, "type": { "primitive": "boolean" } }, { "abstract": true, "docs": { "default": "- None (Kubernetes default)", "stability": "stable", "summary": "Session affinity, 'ClientIP' | 'None'." }, "immutable": true, "locationInModule": { "filename": "src/service.ts", "line": 30 }, "name": "sessionAffinity", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- none", "stability": "stable", "summary": "Traffic distribution preference, e.g. 'PreferClose' for topology-aware routing." }, "immutable": true, "locationInModule": { "filename": "src/service.ts", "line": 24 }, "name": "trafficDistribution", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- ClusterIP (Kubernetes default)", "stability": "stable", "summary": "Service type, e.g. ClusterIP | NodePort | LoadBalancer | ExternalName." }, "immutable": true, "locationInModule": { "filename": "src/service.ts", "line": 18 }, "name": "type", "optional": true, "type": { "primitive": "string" } } ], "symbolId": "src/service:PloneServiceSpec" }, "@bluedynamics/cdk8s-plone.PloneVariant": { "assembly": "@bluedynamics/cdk8s-plone", "docs": { "stability": "stable", "summary": "Plone deployment variants." }, "fqn": "@bluedynamics/cdk8s-plone.PloneVariant", "kind": "enum", "locationInModule": { "filename": "src/plone.ts", "line": 301 }, "members": [ { "docs": { "remarks": "Deploys both frontend and backend services.", "stability": "stable", "summary": "Volto variant: ReactJS single-page frontend (Volto) talking to the Plone REST API." }, "name": "VOLTO" }, { "docs": { "remarks": "Deploys only the backend service.", "stability": "stable", "summary": "Blicca variant: the Plone backend renders the UI server-side and serves the HTML directly." }, "name": "BLICCA" }, { "docs": { "deprecated": "Renamed to {@link BLICCA }. Kept for backward compatibility and selects the\nsame backend-only deployment. Existing configuration using `CLASSICUI` (or the literal\nvalue `'classicui'`) keeps working unchanged. Will be removed in a future major release.", "stability": "deprecated", "summary": "Deprecated alias for the Blicca variant (formerly \"Classic UI\")." }, "name": "CLASSICUI" } ], "name": "PloneVariant", "symbolId": "src/plone:PloneVariant" }, "@bluedynamics/cdk8s-plone.PloneVinylCache": { "assembly": "@bluedynamics/cdk8s-plone", "base": "constructs.Construct", "docs": { "example": "const plone = new Plone(chart, 'plone');\nconst cache = new PloneVinylCache(chart, 'cache', {\n plone: plone,\n replicas: 2,\n});\n// Use cache.vinylCacheServiceName for IngressRoute", "remarks": "Creates a VinylCache custom resource with Plone backend/frontend services\nauto-configured as backends. The cloud-vinyl operator manages the full\nVarnish lifecycle including VCL generation, agent delivery, and monitoring.\n\nRequires the cloud-vinyl operator to be installed in the cluster.", "stability": "stable", "summary": "PloneVinylCache construct for deploying Varnish Cache via cloud-vinyl operator." }, "fqn": "@bluedynamics/cdk8s-plone.PloneVinylCache", "initializer": { "docs": { "stability": "stable" }, "locationInModule": { "filename": "src/vinylcache.ts", "line": 405 }, "parameters": [ { "name": "scope", "type": { "fqn": "constructs.Construct" } }, { "name": "id", "type": { "primitive": "string" } }, { "name": "options", "type": { "fqn": "@bluedynamics/cdk8s-plone.PloneVinylCacheOptions" } } ] }, "kind": "class", "locationInModule": { "filename": "src/vinylcache.ts", "line": 398 }, "name": "PloneVinylCache", "properties": [ { "docs": { "remarks": "Use this to reference the cache service from ingress or other constructs.", "stability": "stable", "summary": "Name of the VinylCache service created by the operator." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 403 }, "name": "vinylCacheServiceName", "type": { "primitive": "string" } } ], "symbolId": "src/vinylcache:PloneVinylCache" }, "@bluedynamics/cdk8s-plone.PloneVinylCacheOptions": { "assembly": "@bluedynamics/cdk8s-plone", "datatype": true, "docs": { "remarks": "Creates a VinylCache custom resource that the cloud-vinyl operator\nreconciles into a Varnish Cache cluster with agent-based VCL delivery.\n\nRequires the cloud-vinyl operator to be installed in the cluster.", "stability": "stable", "summary": "Configuration options for PloneVinylCache (cloud-vinyl operator)." }, "fqn": "@bluedynamics/cdk8s-plone.PloneVinylCacheOptions", "kind": "interface", "locationInModule": { "filename": "src/vinylcache.ts", "line": 163 }, "name": "PloneVinylCacheOptions", "properties": [ { "abstract": true, "docs": { "remarks": "Backends are auto-configured from the Plone services.", "stability": "stable", "summary": "The Plone construct to attach the cache to." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 168 }, "name": "plone", "type": { "fqn": "@bluedynamics/cdk8s-plone.Plone" } }, { "abstract": true, "docs": { "default": "'shard'", "stability": "stable", "summary": "Director type for load distribution." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 225 }, "name": "director", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- no extra backends", "remarks": "Uses the same backend type structure as the VinylCache CRD.", "stability": "stable", "summary": "Additional backends to add after the auto-generated Plone backends." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 175 }, "name": "extraBackends", "optional": true, "type": { "collection": { "elementtype": { "fqn": "@bluedynamics/cdk8s-plone.VinylCacheBackend" }, "kind": "array" } } }, { "abstract": true, "docs": { "default": "'varnish:7.6'", "stability": "stable", "summary": "Container image for the Varnish pods." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 293 }, "name": "image", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "true", "stability": "stable", "summary": "Enable cache invalidation (PURGE, BAN, xkey)." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 279 }, "name": "invalidation", "optional": true, "type": { "primitive": "boolean" } }, { "abstract": true, "docs": { "default": "'500m'", "stability": "stable", "summary": "CPU limit for Varnish pods." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 199 }, "name": "limitCpu", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "'512Mi'", "stability": "stable", "summary": "Memory limit for Varnish pods." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 205 }, "name": "limitMemory", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "false", "remarks": "When true this turns on operator metrics,\na ServiceMonitor, and the prometheus_varnish_exporter sidecar (required\nfor cache hit-ratio and backend-health metrics).", "stability": "stable", "summary": "Enable Prometheus monitoring." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 287 }, "name": "monitoring", "optional": true, "type": { "primitive": "boolean" } }, { "abstract": true, "docs": { "default": "- no node selector", "remarks": "Constrains pods to nodes matching all specified labels.", "stability": "stable", "summary": "Node selector labels for the Varnish pods." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 306 }, "name": "nodeSelector", "optional": true, "type": { "collection": { "elementtype": { "primitive": "string" }, "kind": "map" } } }, { "abstract": true, "docs": { "default": "2", "stability": "stable", "summary": "Number of Varnish pod replicas." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 181 }, "name": "replicas", "optional": true, "type": { "primitive": "number" } }, { "abstract": true, "docs": { "default": "'100m'", "stability": "stable", "summary": "CPU request for Varnish pods." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 187 }, "name": "requestCpu", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "'256Mi'", "stability": "stable", "summary": "Memory request for Varnish pods." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 193 }, "name": "requestMemory", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- operator default (\"HASH\")", "remarks": "\"HASH\" uses the Varnish hash (default); \"URL\" uses the request URL.\nOnly applied when director is \"shard\".\nRequires cloud-vinyl operator >= 0.4.2.", "stability": "stable", "summary": "Shard director: what value is hashed for shard selection." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 234 }, "name": "shardBy", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- operator default (\"CHOSEN\")", "remarks": "\"CHOSEN\" (default) only considers the chosen backend healthy; \"ALL\" requires all\nbackends to be healthy.\nOnly applied when director is \"shard\".\nRequires cloud-vinyl operator >= 0.4.2.", "stability": "stable", "summary": "Shard director: which backends the director considers when selecting a shard." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 244 }, "name": "shardHealthy", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- operator default (\"30s\")", "remarks": "Only applied when director is \"shard\".", "stability": "stable", "summary": "Shard director: time after adding a backend before it receives its full share of traffic, preventing thundering-herd." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 252 }, "name": "shardRampup", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- operator default (67)", "remarks": "Only applied when director is \"shard\".", "stability": "stable", "summary": "Shard director: number of Ketama replicas per backend in the hash ring." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 259 }, "name": "shardReplicas", "optional": true, "type": { "primitive": "number" } }, { "abstract": true, "docs": { "default": "- no storage configured; operator uses varnishd default (~100MB malloc)", "example": "storage: [{ name: 's0', type: 'malloc', size: '1Gi' }]", "remarks": "Each entry becomes a `-s =,` argument to varnishd.\nIf omitted, the operator ships varnishd with its stock default (~100 MB\nmalloc) — almost always too small. Set an explicit malloc size at least\nmatching the pod's memory request to use the allocated memory for caching.", "stability": "stable", "summary": "Varnish storage backends (`spec.storage`)." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 219 }, "name": "storage", "optional": true, "type": { "collection": { "elementtype": { "fqn": "@bluedynamics/cdk8s-plone.VinylCacheStorage" }, "kind": "array" } } }, { "abstract": true, "docs": { "default": "- no tolerations", "stability": "stable", "summary": "Tolerations for the Varnish pods." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 299 }, "name": "tolerations", "optional": true, "type": { "collection": { "elementtype": { "fqn": "@bluedynamics/cdk8s-plone.VinylCacheToleration" }, "kind": "array" } } }, { "abstract": true, "docs": { "default": "- no snippet", "stability": "stable", "summary": "Custom VCL snippet for vcl_backend_error subroutine." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 378 }, "name": "vclBackendErrorSnippet", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- no snippet", "stability": "stable", "summary": "Custom VCL snippet for vcl_backend_fetch subroutine." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 372 }, "name": "vclBackendFetchSnippet", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- uses built-in plone-vinyl-backend-response.vcl", "remarks": "Replaces the default Plone backend_response snippet.", "stability": "stable", "summary": "Custom VCL snippet for vcl_backend_response subroutine." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 273 }, "name": "vclBackendResponseSnippet", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- no snippet", "stability": "stable", "summary": "Custom VCL snippet for vcl_deliver subroutine." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 312 }, "name": "vclDeliverSnippet", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- no snippet", "stability": "stable", "summary": "Custom VCL snippet for vcl_fini subroutine." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 366 }, "name": "vclFiniSnippet", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- no snippet", "stability": "stable", "summary": "Custom VCL snippet for vcl_hash subroutine." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 354 }, "name": "vclHashSnippet", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- no snippet", "stability": "stable", "summary": "Custom VCL snippet for vcl_hit subroutine." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 318 }, "name": "vclHitSnippet", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- no snippet", "stability": "stable", "summary": "Custom VCL snippet for vcl_init subroutine." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 360 }, "name": "vclInitSnippet", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- no snippet", "stability": "stable", "summary": "Custom VCL snippet for vcl_miss subroutine." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 324 }, "name": "vclMissSnippet", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- no snippet", "stability": "stable", "summary": "Custom VCL snippet for vcl_pass subroutine." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 330 }, "name": "vclPassSnippet", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- no snippet", "stability": "stable", "summary": "Custom VCL snippet for vcl_pipe subroutine." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 336 }, "name": "vclPipeSnippet", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- no snippet", "stability": "stable", "summary": "Custom VCL snippet for vcl_purge subroutine." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 348 }, "name": "vclPurgeSnippet", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- uses built-in plone-vinyl-recv.vcl", "remarks": "Replaces the default Plone recv snippet.", "stability": "stable", "summary": "Custom VCL snippet for vcl_recv subroutine." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 266 }, "name": "vclRecvSnippet", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- no snippet", "stability": "stable", "summary": "Custom VCL snippet for vcl_synth subroutine." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 342 }, "name": "vclSynthSnippet", "optional": true, "type": { "primitive": "string" } } ], "symbolId": "src/vinylcache:PloneVinylCacheOptions" }, "@bluedynamics/cdk8s-plone.VinylCacheBackend": { "assembly": "@bluedynamics/cdk8s-plone", "datatype": true, "docs": { "stability": "stable", "summary": "An additional backend for the VinylCache." }, "fqn": "@bluedynamics/cdk8s-plone.VinylCacheBackend", "kind": "interface", "locationInModule": { "filename": "src/vinylcache.ts", "line": 62 }, "name": "VinylCacheBackend", "properties": [ { "abstract": true, "docs": { "remarks": "Must match ^[a-zA-Z][a-zA-Z0-9_]*$.", "stability": "stable", "summary": "VCL identifier for this backend." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 66 }, "name": "name", "type": { "primitive": "string" } }, { "abstract": true, "docs": { "stability": "stable", "summary": "Port to use for this backend." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 76 }, "name": "port", "type": { "primitive": "number" } }, { "abstract": true, "docs": { "stability": "stable", "summary": "Kubernetes Service name to use as backend." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 71 }, "name": "serviceName", "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- no probe", "stability": "stable", "summary": "Health probe configuration." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 82 }, "name": "probe", "optional": true, "type": { "fqn": "@bluedynamics/cdk8s-plone.VinylCacheBackendProbe" } }, { "abstract": true, "docs": { "default": "- operator default", "remarks": "0 means standby.", "stability": "stable", "summary": "Relative weight for the director." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 88 }, "name": "weight", "optional": true, "type": { "primitive": "number" } } ], "symbolId": "src/vinylcache:VinylCacheBackend" }, "@bluedynamics/cdk8s-plone.VinylCacheBackendProbe": { "assembly": "@bluedynamics/cdk8s-plone", "datatype": true, "docs": { "stability": "stable", "summary": "Health probe configuration for a VinylCache backend." }, "fqn": "@bluedynamics/cdk8s-plone.VinylCacheBackendProbe", "kind": "interface", "locationInModule": { "filename": "src/vinylcache.ts", "line": 21 }, "name": "VinylCacheBackendProbe", "properties": [ { "abstract": true, "docs": { "default": "200", "stability": "stable", "summary": "Expected HTTP response status code." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 56 }, "name": "expectedResponse", "optional": true, "type": { "primitive": "number" } }, { "abstract": true, "docs": { "default": "'5s'", "stability": "stable", "summary": "How often to probe the backend." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 32 }, "name": "interval", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "8", "stability": "stable", "summary": "Minimum successful probes within window for healthy status." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 50 }, "name": "threshold", "optional": true, "type": { "primitive": "number" } }, { "abstract": true, "docs": { "default": "'2s'", "stability": "stable", "summary": "Maximum time to wait for a probe response." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 38 }, "name": "timeout", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "'/'", "stability": "stable", "summary": "URL to probe." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 26 }, "name": "url", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "10", "stability": "stable", "summary": "Number of most recent probes to consider." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 44 }, "name": "window", "optional": true, "type": { "primitive": "number" } } ], "symbolId": "src/vinylcache:VinylCacheBackendProbe" }, "@bluedynamics/cdk8s-plone.VinylCacheStorage": { "assembly": "@bluedynamics/cdk8s-plone", "datatype": true, "docs": { "remarks": "Maps to `spec.storage[]` on the VinylCache CRD. The operator emits one\n`-s =,` argument per entry to varnishd.\n\nWithout any storage entry the operator falls back to the varnishd default\n(~100 MB malloc), which is almost always too small for real workloads.", "stability": "stable", "summary": "A Varnish storage backend configuration." }, "fqn": "@bluedynamics/cdk8s-plone.VinylCacheStorage", "kind": "interface", "locationInModule": { "filename": "src/vinylcache.ts", "line": 100 }, "name": "VinylCacheStorage", "properties": [ { "abstract": true, "docs": { "remarks": "Must be unique within the VinylCache and match `^[a-zA-Z][a-zA-Z0-9_]*$`.", "stability": "stable", "summary": "Internal storage identifier used in the varnishd `-s` argument." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 105 }, "name": "name", "type": { "primitive": "string" } }, { "abstract": true, "docs": { "remarks": "Only \"malloc\" and \"file\" are permitted by the\nadmission webhook.", "stability": "stable", "summary": "Storage backend type." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 111 }, "name": "type", "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- required for type \"file\"", "remarks": "Ignored for malloc.", "stability": "stable", "summary": "Filesystem path for file-type storage." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 124 }, "name": "path", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- required for both malloc and file", "stability": "stable", "summary": "Storage allocation as a Kubernetes resource quantity (e.g. \"1Gi\", \"500M\"). Required for malloc; required for file." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 118 }, "name": "size", "optional": true, "type": { "primitive": "string" } } ], "symbolId": "src/vinylcache:VinylCacheStorage" }, "@bluedynamics/cdk8s-plone.VinylCacheToleration": { "assembly": "@bluedynamics/cdk8s-plone", "datatype": true, "docs": { "stability": "stable", "summary": "A Kubernetes toleration for the Varnish pods." }, "fqn": "@bluedynamics/cdk8s-plone.VinylCacheToleration", "kind": "interface", "locationInModule": { "filename": "src/vinylcache.ts", "line": 130 }, "name": "VinylCacheToleration", "properties": [ { "abstract": true, "docs": { "stability": "stable", "summary": "The taint key to tolerate." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 134 }, "name": "key", "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- tolerate all effects", "stability": "stable", "summary": "The taint effect to tolerate (NoSchedule, PreferNoSchedule, NoExecute)." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 152 }, "name": "effect", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "'Equal'", "stability": "stable", "summary": "The operator (Equal or Exists)." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 140 }, "name": "operator", "optional": true, "type": { "primitive": "string" } }, { "abstract": true, "docs": { "default": "- no value", "stability": "stable", "summary": "The taint value to match (when operator is Equal)." }, "immutable": true, "locationInModule": { "filename": "src/vinylcache.ts", "line": 146 }, "name": "value", "optional": true, "type": { "primitive": "string" } } ], "symbolId": "src/vinylcache:VinylCacheToleration" } }, "version": "0.1.59", "fingerprint": "U+zGtnSaw/5nK/TrhhLdmYPr/84DgZRBs9tQvKS/kTU=" }