Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 32 additions & 24 deletions charts/document-engine/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Changelog

- [Changelog](#changelog)
- [7.2.0 (2025-11-01)](#720-2025-11-01)
- [Added](#added)
- [7.1.4 (2025-10-27)](#714-2025-10-27)
- [Changed](#changed)
- [7.1.3 (2025-10-23)](#713-2025-10-23)
Expand All @@ -14,50 +16,50 @@
- [7.0.1 (2025-10-13)](#701-2025-10-13)
- [Changed](#changed-3)
- [7.0.0 (2025-10-09)](#700-2025-10-09)
- [Added](#added)
- [Added](#added-1)
- [Changed](#changed-4)
- [6.3.1 (2025-10-08)](#631-2025-10-08)
- [Changed](#changed-5)
- [6.3.0 (2025-10-07)](#630-2025-10-07)
- [Changed](#changed-6)
- [6.2.0 (2025-10-07)](#620-2025-10-07)
- [Added](#added-1)
- [Added](#added-2)
- [6.1.0 (2025-10-05)](#610-2025-10-05)
- [Changed](#changed-7)
- [6.0.0 (2025-10-01)](#600-2025-10-01)
- [Added](#added-2)
- [Added](#added-3)
- [Changed](#changed-8)
- [5.4.1 (2025-09-28)](#541-2025-09-28)
- [Added](#added-3)
- [Added](#added-4)
- [5.4.0 (2025-09-23)](#540-2025-09-23)
- [Changed](#changed-9)
- [Fixed](#fixed-2)
- [5.3.0 (2025-09-21)](#530-2025-09-21)
- [Added](#added-4)
- [Added](#added-5)
- [5.2.0 (2025-08-25)](#520-2025-08-25)
- [Changed](#changed-10)
- [5.1.3 (2025-07-24)](#513-2025-07-24)
- [Changed](#changed-11)
- [5.1.2 (2025-07-16)](#512-2025-07-16)
- [Added](#added-5)
- [Added](#added-6)
- [5.1.1 (2025-07-08)](#511-2025-07-08)
- [Changed](#changed-12)
- [5.1.0 (2025-07-05)](#510-2025-07-05)
- [Changed](#changed-13)
- [5.0.1 (2025-06-27)](#501-2025-06-27)
- [Fixed](#fixed-3)
- [5.0.0 (2025-06-27)](#500-2025-06-27)
- [Added](#added-6)
- [Added](#added-7)
- [Changed](#changed-14)
- [4.0.1 (2025-06-24)](#401-2025-06-24)
- [Fixed](#fixed-4)
- [4.0.0 (2025-06-24)](#400-2025-06-24)
- [Added](#added-7)
- [Added](#added-8)
- [Changed](#changed-15)
- [3.10.1 (2025-06-18)](#3101-2025-06-18)
- [Changed](#changed-16)
- [3.10.0 (2025-06-10)](#3100-2025-06-10)
- [Added](#added-8)
- [Added](#added-9)
- [3.9.1 (2025-06-09)](#391-2025-06-09)
- [Changed](#changed-17)
- [3.9.0 (2025-05-29)](#390-2025-05-29)
Expand All @@ -71,7 +73,7 @@
- [3.8.8 (2025-05-12)](#388-2025-05-12)
- [Changed](#changed-21)
- [3.8.7 (2025-05-12)](#387-2025-05-12)
- [Added](#added-9)
- [Added](#added-10)
- [3.8.6 (2025-04-09)](#386-2025-04-09)
- [Changed](#changed-22)
- [3.8.5 (2025-04-03)](#385-2025-04-03)
Expand All @@ -86,7 +88,7 @@
- [Fixed](#fixed-10)
- [Changed](#changed-23)
- [3.8.0 (2025-04-03)](#380-2025-04-03)
- [Added](#added-10)
- [Added](#added-11)
- [3.7.1 (2025-03-26)](#371-2025-03-26)
- [Changed](#changed-24)
- [3.7.0 (2025-03-20)](#370-2025-03-20)
Expand All @@ -104,7 +106,7 @@
- [3.3.2 (2025-01-15)](#332-2025-01-15)
- [Changed](#changed-31)
- [3.3.1 (2025-01-10)](#331-2025-01-10)
- [Added](#added-11)
- [Added](#added-12)
- [3.2.12 (2024-12-05)](#3212-2024-12-05)
- [Changed](#changed-32)
- [3.2.11 (2024-11-21)](#3211-2024-11-21)
Expand All @@ -114,10 +116,10 @@
- [3.2.9 (2024-11-15)](#329-2024-11-15)
- [Changed](#changed-35)
- [3.2.7 (2024-11-15)](#327-2024-11-15)
- [Added](#added-12)
- [Added](#added-13)
- [Changed](#changed-36)
- [3.2.6 (2024-10-29)](#326-2024-10-29)
- [Added](#added-13)
- [Added](#added-14)
- [Changed](#changed-37)
- [3.2.5 (2024-10-24)](#325-2024-10-24)
- [Changed](#changed-38)
Expand All @@ -136,27 +138,27 @@
- [3.1.1 (2024-08-23)](#311-2024-08-23)
- [Fixed](#fixed-13)
- [3.1.0 (2024-08-22)](#310-2024-08-22)
- [Added](#added-14)
- [Added](#added-15)
- [3.0.6 (2024-08-22)](#306-2024-08-22)
- [Changed](#changed-43)
- [3.0.5 (2024-08-21)](#305-2024-08-21)
- [Fixed](#fixed-14)
- [3.0.4 (2024-08-21)](#304-2024-08-21)
- [Changed](#changed-44)
- [Added](#added-15)
- [Added](#added-16)
- [2.9.3 (2024-08-16)](#293-2024-08-16)
- [Fixed](#fixed-15)
- [2.9.2 (2024-08-13)](#292-2024-08-13)
- [Changed](#changed-45)
- [2.9.1 (2024-08-10)](#291-2024-08-10)
- [Added](#added-16)
- [Added](#added-17)
- [Changed](#changed-46)
- [2.9.0 (2024-08-01)](#290-2024-08-01)
- [Added](#added-17)
- [Added](#added-18)
- [Changed](#changed-47)
- [Fixed](#fixed-16)
- [2.8.0](#280)
- [Added](#added-18)
- [Added](#added-19)
- [Changed](#changed-48)
- [Fixed](#fixed-17)
- [2.7.3](#273)
Expand All @@ -167,21 +169,27 @@
- [2.7.0](#270)
- [Changed](#changed-50)
- [2.6.2](#262)
- [Added](#added-19)
- [Added](#added-20)
- [Changed](#changed-51)
- [2.6.0](#260)
- [Added](#added-20)
- [2.4.0](#240)
- [Added](#added-21)
- [2.3.0](#230)
- [2.4.0](#240)
- [Added](#added-22)
- [2.2.0](#220)
- [2.3.0](#230)
- [Added](#added-23)
- [2.2.0](#220)
- [Added](#added-24)
- [2.1.0](#210)
- [Changed](#changed-52)
- [2.0.0](#200)
- [Changed](#changed-53)

## 7.2.0 (2025-11-01)

### Added

* Added Envoy as an optional sidecar for better load distrubution using consistent hashing.

## 7.1.4 (2025-10-27)

### Changed
Expand Down
2 changes: 1 addition & 1 deletion charts/document-engine/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ type: application
description: Document Engine is a backend software for processing documents and powering automation workflows.
home: https://www.nutrient.io/sdk/document-engine
icon: https://cdn.prod.website-files.com/65fdb7696055f07a05048833/66e58e33c3880ff24aa34027_nutrient-logo.png
version: 7.1.4
version: 7.2.0
appVersion: "1.12.2"

keywords:
Expand Down
81 changes: 46 additions & 35 deletions charts/document-engine/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Document Engine Helm chart

![Version: 7.1.4](https://img.shields.io/badge/Version-7.1.4-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.12.2](https://img.shields.io/badge/AppVersion-1.12.2-informational?style=flat-square)
![Version: 7.2.0](https://img.shields.io/badge/Version-7.2.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.12.2](https://img.shields.io/badge/AppVersion-1.12.2-informational?style=flat-square)

Document Engine is a backend software for processing documents and powering automation workflows.

Expand Down Expand Up @@ -422,20 +422,31 @@ Note:

| Key | Description | Default |
|-----|-------------|---------|
| [`envoySidecar`](./values.yaml#L896) | Envoy sidecar for consistent hashing by document ID | [...](./values.yaml#L896) |
| [`envoySidecar.adminPort`](./values.yaml#L912) | Admin port for Envoy | `9901` |
| [`envoySidecar.enabled`](./values.yaml#L899) | Enable Envoy sidecar for consistent hashing | `false` |
| [`envoySidecar.healthCheck`](./values.yaml#L916) | Health check configuration for upstream cluster | [...](./values.yaml#L916) |
| [`envoySidecar.healthCheck.healthyThreshold`](./values.yaml#L928) | Healthy threshold | `2` |
| [`envoySidecar.healthCheck.interval`](./values.yaml#L922) | Health check interval | `"10s"` |
| [`envoySidecar.healthCheck.timeout`](./values.yaml#L919) | Health check timeout | `"5s"` |
| [`envoySidecar.healthCheck.unhealthyThreshold`](./values.yaml#L925) | Unhealthy threshold | `2` |
| [`envoySidecar.image`](./values.yaml#L903) | Envoy sidecar image configuration | [...](./values.yaml#L903) |
| [`envoySidecar.port`](./values.yaml#L909) | Port where Envoy sidecar listens | `8080` |
| [`envoySidecar.resources`](./values.yaml#L932) | Resource limits for Envoy sidecar | [...](./values.yaml#L932) |
| [`extraIngresses`](./values.yaml#L880) | Additional ingresses, e.g. for the dashboard | [...](./values.yaml#L880) |
| [`ingress`](./values.yaml#L845) | Ingress | [...](./values.yaml#L845) |
| [`ingress.annotations`](./values.yaml#L854) | Ingress annotations | `{}` |
| [`ingress.className`](./values.yaml#L851) | Ingress class name | `""` |
| [`ingress.enabled`](./values.yaml#L848) | Enable ingress | `false` |
| [`ingress.hosts`](./values.yaml#L857) | Hosts | `[]` |
| [`ingress.tls`](./values.yaml#L871) | Ingress TLS section | `[]` |
| [`networkPolicy`](./values.yaml#L897) | [Network policy](https://kubernetes.io/docs/concepts/services-networking/network-policies/) | [...](./values.yaml#L897) |
| [`networkPolicy.allowExternal`](./values.yaml#L905) | Allow access from anywhere | `true` |
| [`networkPolicy.allowExternalEgress`](./values.yaml#L929) | Allow the pod to access any range of port and all destinations. | `true` |
| [`networkPolicy.enabled`](./values.yaml#L900) | Enable network policy | `true` |
| [`networkPolicy.extraEgress`](./values.yaml#L932) | Extra egress rules | `[]` |
| [`networkPolicy.extraIngress`](./values.yaml#L908) | Additional ingress rules | `[]` |
| [`networkPolicy.ingressMatchSelectorLabels`](./values.yaml#L923) | Allow traffic from other namespaces | `[]` |
| [`networkPolicy`](./values.yaml#L944) | [Network policy](https://kubernetes.io/docs/concepts/services-networking/network-policies/) | [...](./values.yaml#L944) |
| [`networkPolicy.allowExternal`](./values.yaml#L952) | Allow access from anywhere | `true` |
| [`networkPolicy.allowExternalEgress`](./values.yaml#L976) | Allow the pod to access any range of port and all destinations. | `true` |
| [`networkPolicy.enabled`](./values.yaml#L947) | Enable network policy | `true` |
| [`networkPolicy.extraEgress`](./values.yaml#L979) | Extra egress rules | `[]` |
| [`networkPolicy.extraIngress`](./values.yaml#L955) | Additional ingress rules | `[]` |
| [`networkPolicy.ingressMatchSelectorLabels`](./values.yaml#L970) | Allow traffic from other namespaces | `[]` |
| [`service`](./values.yaml#L825) | Service | [...](./values.yaml#L825) |
| [`service.annotations`](./values.yaml#L834) | Service annotations | `{}` |
| [`service.internalTrafficPolicy`](./values.yaml#L837) | Service internal traffic policy | `"Cluster"` |
Expand Down Expand Up @@ -481,42 +492,42 @@ Note:

| Key | Description | Default |
|-----|-------------|---------|
| [`lifecycle`](./values.yaml#L992) | [Lifecycle](https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/) | `map[]` |
| [`livenessProbe`](./values.yaml#L962) | [Liveness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | [...](./values.yaml#L962) |
| [`readinessProbe`](./values.yaml#L975) | [Readiness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | [...](./values.yaml#L975) |
| [`startupProbe`](./values.yaml#L949) | [Startup probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | [...](./values.yaml#L949) |
| [`terminationGracePeriodSeconds`](./values.yaml#L988) | [Termination grace period](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/). Should be greater than the longest expected request processing time (`config.requestTimeoutSeconds`). | `65` |
| [`lifecycle`](./values.yaml#L1039) | [Lifecycle](https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/) | `map[]` |
| [`livenessProbe`](./values.yaml#L1009) | [Liveness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | [...](./values.yaml#L1009) |
| [`readinessProbe`](./values.yaml#L1022) | [Readiness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | [...](./values.yaml#L1022) |
| [`startupProbe`](./values.yaml#L996) | [Startup probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | [...](./values.yaml#L996) |
| [`terminationGracePeriodSeconds`](./values.yaml#L1035) | [Termination grace period](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/). Should be greater than the longest expected request processing time (`config.requestTimeoutSeconds`). | `65` |

### Scheduling

| Key | Description | Default |
|-----|-------------|---------|
| [`affinity`](./values.yaml#L1047) | Node affinity | `{}` |
| [`autoscaling`](./values.yaml#L1000) | [Autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) | [...](./values.yaml#L1000) |
| [`nodeSelector`](./values.yaml#L1044) | [Node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) | `{}` |
| [`podDisruptionBudget`](./values.yaml#L1037) | [Pod disruption budget](https://kubernetes.io/docs/tasks/run-application/configure-pdb/) | [...](./values.yaml#L1037) |
| [`priorityClassName`](./values.yaml#L1056) | [Priority classs](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/) | `""` |
| [`replicaCount`](./values.yaml#L1025) | Number of replicas | `1` |
| [`resources`](./values.yaml#L1022) | [Resources](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) | `{}` |
| [`schedulerName`](./values.yaml#L1059) | [Scheduler](https://kubernetes.io/docs/concepts/scheduling-eviction/kube-scheduler/) | `""` |
| [`tolerations`](./values.yaml#L1050) | [Node tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) | `[]` |
| [`topologySpreadConstraints`](./values.yaml#L1053) | [Topology spread constraints](https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/) | `[]` |
| [`updateStrategy`](./values.yaml#L1028) | [Update strategy](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy) | `{"rollingUpdate":{},"type":"RollingUpdate"}` |
| [`affinity`](./values.yaml#L1094) | Node affinity | `{}` |
| [`autoscaling`](./values.yaml#L1047) | [Autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) | [...](./values.yaml#L1047) |
| [`nodeSelector`](./values.yaml#L1091) | [Node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) | `{}` |
| [`podDisruptionBudget`](./values.yaml#L1084) | [Pod disruption budget](https://kubernetes.io/docs/tasks/run-application/configure-pdb/) | [...](./values.yaml#L1084) |
| [`priorityClassName`](./values.yaml#L1103) | [Priority classs](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/) | `""` |
| [`replicaCount`](./values.yaml#L1072) | Number of replicas | `1` |
| [`resources`](./values.yaml#L1069) | [Resources](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) | `{}` |
| [`schedulerName`](./values.yaml#L1106) | [Scheduler](https://kubernetes.io/docs/concepts/scheduling-eviction/kube-scheduler/) | `""` |
| [`tolerations`](./values.yaml#L1097) | [Node tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) | `[]` |
| [`topologySpreadConstraints`](./values.yaml#L1100) | [Topology spread constraints](https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/) | `[]` |
| [`updateStrategy`](./values.yaml#L1075) | [Update strategy](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy) | `{"rollingUpdate":{},"type":"RollingUpdate"}` |

### Storage resource definitions

| Key | Description | Default |
|-----|-------------|---------|
| [`cloudNativePG`](./values.yaml#L1064) | [CloudNativePG](https://cloudnative-pg.io/) resources | [...](./values.yaml#L1064) |
| [`cloudNativePG.clusterAnnotations`](./values.yaml#L1099) | Cluster annotations | `{}` |
| [`cloudNativePG.clusterLabels`](./values.yaml#L1096) | Cluster labels | `{}` |
| [`cloudNativePG.clusterName`](./values.yaml#L1076) | CloudNativePG custom Cluster name | `"{{ .Release.Name }}-postgres"` |
| [`cloudNativePG.clusterSpec`](./values.yaml#L1080) | CloudNativePG [cluster spec](https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-ClusterSpec) | [...](./values.yaml#L1080) |
| [`cloudNativePG.enabled`](./values.yaml#L1067) | Enable CloudNativePG resources | `false` |
| [`cloudNativePG.networkPolicy`](./values.yaml#L1108) | Network policy to allow access to the cluster | `{"enabled":true}` |
| [`cloudNativePG.operatorNamespace`](./values.yaml#L1070) | CloudNativePG operator namespace | `"cnpg-system"` |
| [`cloudNativePG.operatorReleaseName`](./values.yaml#L1073) | CloudNativePG operator release name | `"cloudnative-pg"` |
| [`cloudNativePG.superuserSecret`](./values.yaml#L1102) | Superuser secret to use with the cluster | `{"create":true,"password":"despair","username":"postgres"}` |
| [`cloudNativePG`](./values.yaml#L1111) | [CloudNativePG](https://cloudnative-pg.io/) resources | [...](./values.yaml#L1111) |
| [`cloudNativePG.clusterAnnotations`](./values.yaml#L1146) | Cluster annotations | `{}` |
| [`cloudNativePG.clusterLabels`](./values.yaml#L1143) | Cluster labels | `{}` |
| [`cloudNativePG.clusterName`](./values.yaml#L1123) | CloudNativePG custom Cluster name | `"{{ .Release.Name }}-postgres"` |
| [`cloudNativePG.clusterSpec`](./values.yaml#L1127) | CloudNativePG [cluster spec](https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-ClusterSpec) | [...](./values.yaml#L1127) |
| [`cloudNativePG.enabled`](./values.yaml#L1114) | Enable CloudNativePG resources | `false` |
| [`cloudNativePG.networkPolicy`](./values.yaml#L1155) | Network policy to allow access to the cluster | `{"enabled":true}` |
| [`cloudNativePG.operatorNamespace`](./values.yaml#L1117) | CloudNativePG operator namespace | `"cnpg-system"` |
| [`cloudNativePG.operatorReleaseName`](./values.yaml#L1120) | CloudNativePG operator release name | `"cloudnative-pg"` |
| [`cloudNativePG.superuserSecret`](./values.yaml#L1149) | Superuser secret to use with the cluster | `{"create":true,"password":"despair","username":"postgres"}` |

### Other Values

Expand All @@ -526,7 +537,7 @@ Note:
| [`config.hoard.binaryCopyThreshold`](./values.yaml#L139) | `HOARD_BINARY_COPY_THRESHOLD` — internal parameter, do not change unless explicitly recommended by Nutrient support. | `2` |
| [`config.http2SharedRendering.checkinTimeoutMilliseconds`](./values.yaml#L150) | `HTTP2_SHARED_RENDERING_PROCESS_CHECKIN_TIMEOUT` — document processing daemon checkin timeout. Do not change unless explicitly recommended by Nutrient support. | `0` |
| [`config.http2SharedRendering.checkoutTimeoutMilliseconds`](./values.yaml#L153) | `HTTP2_SHARED_RENDERING_PROCESS_CHECKOUT_TIMEOUT` — document processing daemon checkout timeout. Do not change unless explicitly recommended by Nutrient support. | `5000` |
| [`revisionHistoryLimit`](./values.yaml#L1032) | [Revision history limit](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#clean-up-policy) | `10` |
| [`revisionHistoryLimit`](./values.yaml#L1079) | [Revision history limit](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#clean-up-policy) | `10` |

## Contribution

Expand Down
16 changes: 16 additions & 0 deletions charts/document-engine/ci/05-envoy-sidecar-values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Minimal test for Envoy sidecar consistent hashing
envoySidecar:
enabled: true

replicaCount: 2

database:
enabled: true
migrationJob:
enabled: false

assetStorage:
backendType: built-in

cloudNativePG:
enabled: true
6 changes: 6 additions & 0 deletions charts/document-engine/ci/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,11 @@
* `04-cnpg-azure-values.yaml`
* PostgreSQL
* Azurite to test Azure Blob storage
* `05-envoy-sidecar-values.yaml`
* Envoy sidecar for consistent hashing by document ID
* Multiple replicas (2) to test hash distribution
* Envoy admin endpoint exposed for metrics
* Network policy enabled to test Envoy port access
* Headless service for pod discovery
* `10-env-variables-values.yaml`
* Very blunt environment variables setting, an easy migration from Docker compose
Loading