This chart provides a library to bootstrap a Plone deployment on a Kubernetes cluster using the CDK8S framework.
It provides
- Backend (as API with
plone.voltoor as Classic-UI) - Frontend (Plone-Volto, a ReactJS based user interface)
- Varnish using kube-httpcache. It includes a way to invalidate varnish cluster (optional)
To use this library, create a new CDK8S project (or use an existing one)
cdk8s init typescript-appThen add the following dependency to package.json:
{
"dependencies": {
"@bluedynamics/cdk8s-plone": "*"
}
}Run npm install to install cdk8s-plone.
Todo: Document in details how to install.
cdk8s init python-appPython package name is cdk8s-plone.
With cdk8s-cli installed, create a new project:
cdk8s sythnAdd the following code to your main.ts:
...
import { Plone } from '@bluedynamics/cdk8s-plone';
...
super(scope, id, props);
// define resources here
new Plone(this, 'Plone', {});
...Run npm run build to generate the Kubernetes manifests.
The manifests are stored in the dist directory.
For more have a look at the example project.
For using cdk8s-plone, we assume you already have following tools installed:
-
kubectl – A command-line tool for interacting with Kubernetes clusters. For deploying the Kubernetes manifest you will need a tool like this. Take a look at the Install Tools for kubectl.
-
(optional) Helm – A Kubernetes package manager for managing Plone/Volto deployments. This tool is optional and only needed if you generate helm charts as output with cdk8s synth - instead of pure manifests. There are several ways to install it see the install section for Helm.
Kubernetes Documentation relevant for ressource management, readiness and liveness
Interface
image(string):- The used Plone image
- e.g.
plone/plone-backend:6.1.0
imagePullPolicy(string):- default
IfNotPresent
- default
replicas(numbers)maxUnavailable(number|string)minAvailable(number|string)limitCpu(string)limitMemory(string)requestCpu(string)requestMemory(string)environment(kplus.Env)readinessEnabled(boolean)readinessInitialDelaySeconds(number)readinessIimeoutSeconds(number)readinessPeriodSeconds(number)readinessSuccessThreshold(number)readinessFailureThreshold(number)livenessEnabled(boolean)- should be
trueforvolto - should be
falseforbackend/classicui
- should be
livenessInitialDelaySeconds(number)livenessIimeoutSeconds(number)livenessPeriodSeconds(number)livenessSuccessThreshold(number)livenessFailureThreshold(number)
Interface
version(string):- version of your project
siteId(string):- default
Plone
- default
variant(PloneVariant):- default
PloneVariant.VOLTO
- default
backend(PloneBaseOptions):- default
{} - needs
imageandenviroment
- default
frontend(PloneBaseOptions):- default
{} - needs
imageifPloneVariant.VOLTO
- default
imagePullSecrets(string[])
Enum
- VOLTO = 'volto'
- CLASSICUI = 'classicui'
- no frontend options/image needed
class
builds the Plone Construct
backendServiceName(string)frontendServiceName(string)variant(PloneVariant)- default
Volto
- default
siteId(string)- default
Plone
- default
Interface
plone(Plone):- Plone chart
varnishVcl{string}:- varnishfile
- per default
varnishVclFileshould be used
varnishVclFile(string):- File in config folder
existingSecret(string)limitCpu(string)limitMemory(string)requestCpu(string)requestMemory(string)servicemonitor(string)- default
falseused for metrics
- default
class
uses helmchart kube-httpcache and builds the PloneHttpCache Construct
scope(Construct)id(string)options(PloneHttpcacheOptions)
Clone the repository and install the dependencies:
nvm use lts/*
corepack enable
npx projenThen run the following command to run the test:
npx projen test- Option to enable Servicemonitor