@bluedynamics/cdk8s-plone 0.1.42 → 0.1.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/.jsii +26 -25
  2. package/API.md +6 -2
  3. package/README.md +3 -3
  4. package/documentation/sources/conf.py +55 -29
  5. package/documentation/sources/explanation/architecture.md +14 -16
  6. package/documentation/sources/explanation/cdk8s-workflow.md +66 -0
  7. package/documentation/sources/explanation/index.md +1 -27
  8. package/documentation/sources/how-to/backup-and-restore.md +107 -0
  9. package/documentation/sources/how-to/configure-env-and-secrets.md +184 -0
  10. package/documentation/sources/how-to/configure-ingress-tls.md +108 -0
  11. package/documentation/sources/how-to/configure-security-context.md +0 -5
  12. package/documentation/sources/how-to/deploy-blicca.md +8 -8
  13. package/documentation/sources/how-to/{deploy-production-volto.md → deploy-volto.md} +20 -25
  14. package/documentation/sources/how-to/deploy-with-httpcache.md +224 -0
  15. package/documentation/sources/how-to/deploy-with-vinyl-cache.md +0 -5
  16. package/documentation/sources/how-to/enable-prometheus-monitoring.md +4 -5
  17. package/documentation/sources/how-to/index.md +15 -8
  18. package/documentation/sources/how-to/scale-and-high-availability.md +122 -0
  19. package/documentation/sources/how-to/schedule-pods.md +0 -5
  20. package/documentation/sources/how-to/troubleshooting.md +113 -0
  21. package/documentation/sources/how-to/upgrade-and-rollout.md +89 -0
  22. package/documentation/sources/index.md +3 -11
  23. package/documentation/sources/reference/api/index.md +6 -4
  24. package/documentation/sources/reference/configuration-options.md +85 -516
  25. package/documentation/sources/reference/index.md +16 -43
  26. package/documentation/sources/tutorials/01-quick-start.md +1 -1
  27. package/documentation/sources/tutorials/index.md +7 -11
  28. package/examples/blicca/.env.example +3 -2
  29. package/examples/blicca/README.md +21 -24
  30. package/examples/blicca/__snapshots__/main.test.ts.snap +138 -345
  31. package/examples/blicca/main.test.ts +7 -0
  32. package/examples/blicca/main.ts +8 -7
  33. package/examples/blicca/postgres.plain.ts +115 -0
  34. package/examples/blicca/tsconfig.json +33 -0
  35. package/examples/{production-volto → volto}/.env.example +3 -2
  36. package/examples/{production-volto → volto}/README.md +20 -23
  37. package/examples/{production-volto → volto}/__snapshots__/main.test.ts.snap +139 -345
  38. package/examples/{production-volto → volto}/main.test.ts +7 -0
  39. package/examples/{production-volto → volto}/main.ts +8 -7
  40. package/examples/{production-volto → volto}/package.json +1 -1
  41. package/examples/volto/postgres.plain.ts +115 -0
  42. package/examples/volto/tsconfig.json +33 -0
  43. package/lib/deployment.js +36 -3
  44. package/lib/httpcache.js +42 -6
  45. package/lib/imports/k8s.js +1075 -1073
  46. package/lib/imports/monitoring.coreos.com.js +10 -8
  47. package/lib/imports/vinyl.bluedynamics.eu.d.ts +4011 -53
  48. package/lib/imports/vinyl.bluedynamics.eu.js +1791 -159
  49. package/lib/pdb.js +35 -2
  50. package/lib/plone.js +54 -5
  51. package/lib/service.js +44 -2
  52. package/lib/vinylcache.d.ts +3 -1
  53. package/lib/vinylcache.js +43 -6
  54. package/package.json +10 -12
  55. package/documentation/sources/_static/brand-theme.css +0 -685
  56. package/documentation/sources/_static/custom-icons.css +0 -123
  57. package/documentation/sources/_static/fonts/hack/Hack-Regular.woff2 +0 -0
  58. package/documentation/sources/_static/fonts/orbitron/Orbitron-Black.woff2 +0 -11
  59. package/documentation/sources/_static/fonts/orbitron/Orbitron-Bold.woff2 +0 -11
  60. package/documentation/sources/_static/fonts/orbitron/Orbitron-Regular.woff2 +0 -0
  61. package/documentation/sources/_static/fonts/rajdhani/Rajdhani-Bold.woff2 +0 -11
  62. package/documentation/sources/_static/fonts/rajdhani/Rajdhani-Medium.woff2 +0 -11
  63. package/documentation/sources/_static/fonts/rajdhani/Rajdhani-Regular.woff2 +0 -11
  64. package/documentation/sources/_static/fonts/rajdhani/Rajdhani-SemiBold.woff2 +0 -11
  65. package/documentation/sources/_static/kup6s-icon-explanation.svg +0 -32
  66. package/documentation/sources/_static/kup6s-icon-howto.svg +0 -34
  67. package/documentation/sources/_static/kup6s-icon-reference.svg +0 -34
  68. package/documentation/sources/_static/kup6s-icon-tutorials.svg +0 -30
  69. package/documentation/sources/_static/logo-fix.js +0 -12
  70. package/documentation/sources/reference/api/.gitkeep +0 -1
  71. package/examples/blicca/postgres.bitnami.ts +0 -49
  72. package/examples/production-volto/postgres.bitnami.ts +0 -49
  73. /package/documentation/sources/_static/{kup6s-icon-plone.svg → logo.svg} +0 -0
  74. /package/examples/{production-volto → volto}/cdk8s.yaml +0 -0
  75. /package/examples/{production-volto → volto}/config/varnish.tpl.vcl +0 -0
  76. /package/examples/{production-volto → volto}/ingress.ts +0 -0
  77. /package/examples/{production-volto → volto}/jest.config.js +0 -0
  78. /package/examples/{production-volto → volto}/postgres.cloudnativepg.ts +0 -0
@@ -1,68 +1,41 @@
1
1
  ---
2
2
  myst:
3
3
  html_meta:
4
- "description": "Information-oriented technical reference for cdk8s-plone constructs, configuration options, and APIs."
5
- "property=og:description": "Information-oriented technical reference for cdk8s-plone constructs, configuration options, and APIs."
4
+ "description": "Information-oriented technical reference for cdk8s-plone: the generated API reference and a task-oriented configuration guide."
5
+ "property=og:description": "Information-oriented technical reference for cdk8s-plone: the generated API reference and a task-oriented configuration guide."
6
6
  "property=og:title": "Reference"
7
7
  "keywords": "Plone, cdk8s, Kubernetes, reference, API, configuration"
8
8
  ---
9
9
 
10
- ```{image} ../_static/kup6s-icon-reference.svg
11
- :align: center
12
- :class: section-icon-large
13
- ```
14
-
15
10
  # Reference
16
11
 
17
- **Information-oriented technical specifications and configurations for cdk8s-plone.**
18
-
19
- Reference guides provide detailed technical information about cdk8s-plone's API, configuration options, and component specifications. They describe how things work and what parameters are available.
12
+ **Information-oriented technical specifications for cdk8s-plone.**
20
13
 
21
- ## API reference
14
+ The reference has two parts that play different roles:
22
15
 
23
- *This section will contain auto-generated or detailed documentation for:*
24
- - Main chart classes
25
- - Configuration interfaces
26
- - Individual construct classes
27
- - Utility functions and validators
16
+ {doc}`API reference <api/index>`
17
+ : The complete, authoritative list of every construct, interface, option, type, default value, and enum.
18
+ It is generated from the TypeScript source with `npx projen docgen`, so it never drifts from the code.
19
+ Use it to look up exactly what an option does, its type, and whether it is required.
28
20
 
29
- ## Configuration reference
21
+ {doc}`Configuration guide <configuration-options>`
22
+ : A hand-written, task-oriented tour of the most common configuration, with copy-pasteable examples.
23
+ It links into the API reference rather than repeating it.
24
+ Use it to see how options fit together for a real deployment.
30
25
 
31
26
  ```{toctree}
32
27
  ---
33
28
  maxdepth: 1
34
29
  titlesonly: true
35
30
  ---
31
+ api/index
36
32
  configuration-options
37
33
  ```
38
34
 
39
- ## Component specifications
40
-
41
- ```{toctree}
42
- ---
43
- maxdepth: 1
44
- titlesonly: true
45
- ---
46
- ```
47
-
48
- *Component specifications will be added in future releases.*
49
-
50
- ## API documentation
51
-
52
- See the `api/` directory for detailed construct documentation:
53
-
54
- ```{toctree}
55
- ---
56
- maxdepth: 1
57
- glob: true
58
- ---
59
- api/*
60
- ```
61
-
62
35
  ---
63
36
 
64
- **Getting started?** Begin with the [Tutorials](../tutorials/index.md) for hands-on learning.
37
+ **Getting started?** Begin with the {doc}`/tutorials/index` for hands-on learning.
65
38
 
66
- **Solving a specific problem?** Check the [How-To Guides](../how-to/index.md) for task-oriented solutions.
39
+ **Solving a specific problem?** Check the {doc}`/how-to/index` for task-oriented solutions.
67
40
 
68
- **Understanding concepts?** Read the [Explanation](../explanation/index.md) section for architecture and design.
41
+ **Understanding concepts?** Read the {doc}`/explanation/index` for architecture and design.
@@ -15,7 +15,7 @@ This tutorial will guide you through deploying your first Plone instance using c
15
15
 
16
16
  Before you start, ensure you have:
17
17
 
18
- - **Node.js 16+** and npm installed
18
+ - **Node.js 18+** and npm installed
19
19
  - **kubectl** configured to access your Kubernetes cluster
20
20
  - Basic familiarity with Kubernetes and TypeScript
21
21
  - A Kubernetes cluster (local or remote)
@@ -7,11 +7,6 @@ myst:
7
7
  "keywords": "Plone, cdk8s, Kubernetes, tutorials, getting started"
8
8
  ---
9
9
 
10
- ```{image} ../_static/kup6s-icon-tutorials.svg
11
- :align: center
12
- :class: section-icon-large
13
- ```
14
-
15
10
  # Tutorials
16
11
 
17
12
  **Learning-oriented guides that take you through a series of steps to complete a project.**
@@ -20,12 +15,13 @@ Tutorials are lessons that help you gain practical skills and familiarity with c
20
15
 
21
16
  ## What you'll learn
22
17
 
23
- These tutorials will teach you how to:
18
+ The quick start teaches you how to:
19
+
20
+ - Define a Plone deployment with the `Plone` construct
21
+ - Synthesize Kubernetes manifests with `cdk8s synth`
22
+ - Apply the manifests and reach the running site
24
23
 
25
- - Deploy a basic Plone instance using cdk8s-plone
26
- - Configure PostgreSQL backend
27
- - Customize component resources and settings
28
- - Test your deployment
24
+ For tasks beyond the first deployment, such as configuring a database, caching, or scaling, see the {doc}`/how-to/index`.
29
25
 
30
26
  ## Available tutorials
31
27
 
@@ -41,7 +37,7 @@ titlesonly: true
41
37
 
42
38
  These tutorials assume you have:
43
39
  - Basic familiarity with Kubernetes concepts
44
- - Node.js 16+ and npm installed
40
+ - Node.js 18+ and npm installed
45
41
  - A Kubernetes cluster (local or remote)
46
42
  - kubectl configured to access your cluster
47
43
  - Basic TypeScript knowledge
@@ -15,5 +15,6 @@ CLUSTER_ISSUER=letsencrypt-prod
15
15
  #PLONE_BACKEND_IMAGE=plone/plone-backend:6.1.3
16
16
 
17
17
  # Configure database backend
18
- # Options: 'bitnami' (default, simple) or 'cloudnativepg' (production-ready)
19
- DATABASE=cloudnativepg
18
+ # Options: 'plain' (default, operator-free single instance) or
19
+ # 'cloudnativepg' (production HA, requires the CloudNativePG operator)
20
+ DATABASE=plain
@@ -17,7 +17,7 @@ Blicca is the server-side rendered UI of Plone CMS: the Plone backend renders th
17
17
  - Migration from older Plone versions (keeping the familiar server-rendered UX)
18
18
  - Projects requiring Blicca-specific add-ons
19
19
 
20
- **When to use Volto instead:** See the [production-volto](../production-volto/) example for the React single-page frontend approach.
20
+ **When to use Volto instead:** See the [volto](../volto/) example for the React single-page frontend approach.
21
21
 
22
22
  ## Features
23
23
 
@@ -25,8 +25,8 @@ This example includes:
25
25
 
26
26
  - **Plone 6.1 with Blicca** (server-side rendering)
27
27
  - **PostgreSQL with RelStorage** - Choose between:
28
+ - Plain single-instance PostgreSQL using the official `postgres` image (default, operator-free, for dev and small setups)
28
29
  - [CloudNativePG](https://cloudnative-pg.io/) (CNCF project, production-ready with HA)
29
- - [Bitnami PostgreSQL](https://github.com/bitnami/charts/tree/main/bitnami/postgresql) Helm chart (simple, for dev/testing)
30
30
  - **HTTP Caching with Varnish** - Using [kube-httpcache](https://github.com/mittwald/kube-httpcache)
31
31
  - **Ingress** - Supports both Traefik and Kong with TLS/cert-manager
32
32
  - **Three access domains**:
@@ -52,13 +52,12 @@ npm install
52
52
 
53
53
  Your cluster needs:
54
54
 
55
- 1. **PostgreSQL Operator** (choose one):
56
- - **CloudNativePG** (recommended for production):
55
+ 1. **PostgreSQL** (choose one):
56
+ - **Plain** (default, no operator needed): the example deploys a single-instance PostgreSQL StatefulSet using the official `postgres` image, so there is nothing to install.
57
+ - **CloudNativePG** (recommended for production HA): install the operator
57
58
  ```bash
58
59
  kubectl apply -f https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-1.24/releases/cnpg-1.24.0.yaml
59
60
  ```
60
- - **Bitnami** (no operator needed, uses Helm):
61
- - Requires namespace `plone` to exist: `kubectl create namespace plone`
62
61
 
63
62
  2. **Ingress Controller** (choose one):
64
63
  - Traefik v3 with CRDs installed
@@ -105,8 +104,8 @@ CLUSTER_ISSUER=letsencrypt-prod
105
104
  # Plone backend image (defaults to official image if not set)
106
105
  PLONE_BACKEND_IMAGE=plone/plone-backend:6.1.3
107
106
 
108
- # Database backend: 'bitnami' (default) or 'cloudnativepg'
109
- DATABASE=cloudnativepg
107
+ # Database backend: 'plain' (default) or 'cloudnativepg'
108
+ DATABASE=plain
110
109
  ```
111
110
 
112
111
  ### 3. Generate Kubernetes Manifests
@@ -185,24 +184,24 @@ kubectl apply -f dist/plone-blicca.k8s.yaml -n plone
185
184
  DATABASE=cloudnativepg
186
185
  ```
187
186
 
188
- ### Bitnami PostgreSQL (Development/Testing)
187
+ ### Plain PostgreSQL (default, operator-free)
189
188
 
190
189
  **Pros:**
191
- - No operator required
192
- - Simple setup
193
- - Good for development and testing
194
- - Helm-based deployment
190
+ - No operator and no third-party Helm chart required
191
+ - Uses the official `postgres` image, which is actively maintained
192
+ - Single-instance StatefulSet with a PersistentVolumeClaim
193
+ - Good for development and small production setups
195
194
 
196
195
  **Cons:**
197
- - Requires namespace `plone` to be pre-created
198
- - No built-in HA features
199
- - Less suitable for production
196
+ - No built-in high availability, failover, or automated backups
200
197
 
201
198
  **Configuration:**
202
199
  ```bash
203
- DATABASE=bitnami
200
+ DATABASE=plain
204
201
  ```
205
202
 
203
+ **Secrets:** the example creates a Secret with `username`, `password`, and `database` keys.
204
+
206
205
  ## Development
207
206
 
208
207
  ### Build and Test
@@ -302,13 +301,11 @@ kubectl get cluster
302
301
  kubectl get secret -l cnpg.io/cluster
303
302
  ```
304
303
 
305
- **Bitnami:**
304
+ **Plain PostgreSQL:**
306
305
  ```bash
307
- # Check service
308
- kubectl get svc -l app.kubernetes.io/part-of=plone
309
-
310
- # Check secret
311
- kubectl get secret -l app.kubernetes.io/part-of=plone
306
+ # Check the StatefulSet and pod
307
+ kubectl get statefulset -l app.kubernetes.io/name=plone-postgresql
308
+ kubectl get pods -l app.kubernetes.io/name=plone-postgresql
312
309
  ```
313
310
 
314
311
  ### Access Logs
@@ -322,7 +319,7 @@ kubectl get all -l app.kubernetes.io/part-of=plone
322
319
 
323
320
  If you later want to migrate to Volto:
324
321
 
325
- 1. See the [production-volto](../production-volto/) example
322
+ 1. See the [volto](../volto/) example
326
323
  2. Keep the same backend configuration (database, caching)
327
324
  3. Add Volto frontend deployment
328
325
  4. Update ingress to route to frontend