Skip to content

Commit ed275ee

Browse files
committed
feat(lago-pdf): default gotenberg to ghcr.io/getlago/gotenberg:8.32 with legacy Porter flags
The chart previously defaulted to `getlago/lago-gotenberg:8` on Docker Hub. That tag is Gotenberg 8.5.0 (pushed 2024-05-07), whose default for `--chromium-restart-after` is 0 — Chromium never restarts, which reproduces the 5-minute request hang described in `scripts/pdf.rb` on lago-infrastructure. The Porter deployments `pdf-web` / `pdf-eu-web` have always run `ghcr.io/getlago/gotenberg:8.32` with six explicit flags that restart Chromium every 100 jobs, cap the Chromium queue at 20, disable JS inside invoice HTML, ignore certificate errors on the fetcher, and disable LibreOffice routes we do not use. lago-infrastructure PR #1483 pinned those on the three managed clusters. This change lifts them to the chart default so self-hosted users get the same configuration. - Chart.yaml: appVersion 8 → 8.32 (the container template resolves `gotenberg.image.tag | default .Chart.AppVersion`). - values.yaml: gotenberg.image.repository getlago/lago-gotenberg → ghcr.io/getlago/gotenberg. Both images are public, so no imagePullSecrets change is needed. - values.yaml: gotenberg.container.args → the seven-arg legacy set. The prior `--api-disable-health-check-logging` is intentionally dropped; it was renamed to `--api-disable-health-check-route-telemetry` in Gotenberg 8.32 and defaults to true, so health-check logging stays off with no flag set. - Taskfile.yaml: dev/kind image ref bumped to match the new default so local integration tests exercise the same image. - README.md: regenerated via helm-docs to reflect the new defaults.
1 parent 99b1cd4 commit ed275ee

4 files changed

Lines changed: 30 additions & 16 deletions

File tree

Taskfile.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ vars:
99
redis: redis:7-alpine
1010
api: getlago/api:{{.VERSION}}
1111
front: getlago/front:v1.41.0
12-
gotenberg: getlago/lago-gotenberg:8.15
12+
gotenberg: ghcr.io/getlago/gotenberg:8.32
1313
CHARTS:
1414
map:
1515
# Base configs (no dependencies)

charts/lago-pdf/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ type: application
66

77
version: 0.9.0
88

9-
appVersion: "8"
9+
appVersion: "8.32"
1010

1111
dependencies:
1212
- name: lago-config

charts/lago-pdf/README.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
# lago-pdf
22

3-
![Version: 0.5.0](https://img.shields.io/badge/Version-0.5.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 8](https://img.shields.io/badge/AppVersion-8-informational?style=flat-square)
3+
![Version: 0.9.0](https://img.shields.io/badge/Version-0.9.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 8.32](https://img.shields.io/badge/AppVersion-8.32-informational?style=flat-square)
44

55
A Helm chart for the Lago PDF stack (Gotenberg + optional Rails worker)
66

77
## Requirements
88

99
| Repository | Name | Version |
1010
|------------|------|---------|
11-
| file://../lago-config | config(lago-config) | 0.5.0 |
12-
| file://../lago-rails | worker(lago-rails) | 0.5.0 |
11+
| file://../lago-config | config(lago-config) | 0.9.0 |
12+
| file://../lago-rails | worker(lago-rails) | 0.9.0 |
1313

1414
## Values
1515

@@ -25,29 +25,29 @@ A Helm chart for the Lago PDF stack (Gotenberg + optional Rails worker)
2525

2626
| Key | Type | Default | Description |
2727
|-----|------|---------|-------------|
28-
| worker | object | `{"config":{"enabled":false,"nameOverride":"lago-pdf-config"},"container":{"command":["./scripts/start.worker.sh"],"ports":null},"enabled":true,"livenessProbe":null,"nameOverride":"lago-pdf-worker","readinessProbe":null,"service":{"enabled":false}}` | PDF worker subchart (lago-rails configured as a background worker) |
28+
| worker | object | `{"config":{"enabled":false,"nameOverride":"lago-pdf-config"},"container":{"command":["./scripts/start.worker.sh"],"ports":[]},"enabled":true,"livenessProbe":{"enabled":false},"nameOverride":"lago-pdf-worker","readinessProbe":{"enabled":false},"service":{"enabled":false}}` | PDF worker subchart (lago-rails configured as a background worker) |
2929
| worker.enabled | bool | `true` | Deploy the PDF worker |
3030
| worker.nameOverride | string | `"lago-pdf-worker"` | Override the worker subchart release name |
3131
| worker.config.enabled | bool | `false` | Disable nested config (uses parent config) |
3232
| worker.config.nameOverride | string | `"lago-pdf-config"` | Config subchart name override |
3333
| worker.service.enabled | bool | `false` | Disable service for the worker (no inbound traffic) |
34-
| worker.livenessProbe | string | `nil` | Liveness probe (disabled for worker) |
35-
| worker.readinessProbe | string | `nil` | Readiness probe (disabled for worker) |
34+
| worker.livenessProbe | object | `{"enabled":false}` | Liveness probe (disabled for worker) |
35+
| worker.readinessProbe | object | `{"enabled":false}` | Readiness probe (disabled for worker) |
3636
| worker.container.command | list | `["./scripts/start.worker.sh"]` | Worker entrypoint command |
37-
| worker.container.ports | string | `nil` | Worker container ports (none needed) |
37+
| worker.container.ports | list | `[]` | Worker container ports (none needed) |
3838

3939
### Gotenberg
4040

4141
| Key | Type | Default | Description |
4242
|-----|------|---------|-------------|
43-
| gotenberg | object | `{"affinity":{},"autoscaling":{"enabled":false,"external":false,"maxReplicas":100,"minReplicas":1,"targetCPUUtilizationPercentage":80},"container":{"args":["gotenberg","--api-disable-health-check-logging"],"command":[],"name":"","ports":{"http":3000}},"extraEnv":{},"extraEnvFrom":[],"fullnameOverride":"","image":{"pullPolicy":"IfNotPresent","repository":"getlago/lago-gotenberg","tag":null},"imagePullSecrets":[],"livenessProbe":{"httpGet":{"path":"/health","port":"http"},"initialDelaySeconds":10,"periodSeconds":30},"nameOverride":"","nodeSelector":{},"podAnnotations":{},"podLabels":{},"podSecurityContext":{},"readinessProbe":{"httpGet":{"path":"/health","port":"http"},"initialDelaySeconds":10,"periodSeconds":3},"replicaCount":1,"resources":{},"securityContext":{},"service":{"enabled":true,"port":80,"type":"ClusterIP"},"serviceAccount":{"annotations":{},"automount":true,"create":true,"name":""},"tolerations":[],"volumeMounts":[],"volumes":[]}` | Gotenberg HTML-to-PDF conversion service |
44-
| gotenberg.image.repository | string | `"getlago/lago-gotenberg"` | Gotenberg image repository |
43+
| gotenberg | object | `{"affinity":{},"autoscaling":{"enabled":false,"external":false,"maxReplicas":100,"minReplicas":1,"targetCPUUtilizationPercentage":80},"container":{"args":["gotenberg","--libreoffice-disable-routes=true","--chromium-ignore-certificate-errors=true","--chromium-disable-javascript=true","--api-timeout=30s","--chromium-max-queue-size=20","--chromium-restart-after=100"],"command":[],"name":"","ports":{"http":3000}},"extraEnv":{},"extraEnvFrom":[],"fullnameOverride":"","image":{"pullPolicy":"IfNotPresent","repository":"ghcr.io/getlago/gotenberg","tag":null},"imagePullSecrets":[],"livenessProbe":{"httpGet":{"path":"/health","port":"http"},"initialDelaySeconds":10,"periodSeconds":30},"nameOverride":"","nodeSelector":{},"podAnnotations":{},"podLabels":{},"podSecurityContext":{},"readinessProbe":{"httpGet":{"path":"/health","port":"http"},"initialDelaySeconds":10,"periodSeconds":3},"replicaCount":1,"resources":{},"securityContext":{},"service":{"enabled":true,"port":80,"type":"ClusterIP"},"serviceAccount":{"annotations":{},"automount":true,"create":true,"name":""},"tolerations":[],"topologySpreadConstraints":[],"volumeMounts":[],"volumes":[]}` | Gotenberg HTML-to-PDF conversion service |
44+
| gotenberg.image.repository | string | `"ghcr.io/getlago/gotenberg"` | Gotenberg image repository |
4545
| gotenberg.image.tag | string | `nil` | Override the Gotenberg image tag |
4646
| gotenberg.image.pullPolicy | string | `"IfNotPresent"` | Image pull policy |
4747
| gotenberg.replicaCount | int | `1` | Number of Gotenberg replicas (ignored when autoscaling is enabled) |
4848
| gotenberg.container.name | string | `""` | Override the container name |
4949
| gotenberg.container.command | list | `[]` | Container entrypoint command |
50-
| gotenberg.container.args | list | `["gotenberg","--api-disable-health-check-logging"]` | Container command arguments |
50+
| gotenberg.container.args | list | `["gotenberg","--libreoffice-disable-routes=true","--chromium-ignore-certificate-errors=true","--chromium-disable-javascript=true","--api-timeout=30s","--chromium-max-queue-size=20","--chromium-restart-after=100"]` | Container command arguments. Match the legacy Porter deployments (`pdf-web` / `pdf-eu-web`): restart Chromium every 100 jobs to avoid zombie processes, cap the queue at 20, disable JS in invoice HTML, ignore certificate errors on the Chromium fetcher, disable LibreOffice routes we do not use, and cap the API timeout at 30s. `--api-disable-health-check-logging` was renamed to `--api-disable-health-check-route-telemetry` in Gotenberg 8.32 and defaults to `true`, so it is intentionally not set here. |
5151
| gotenberg.container.ports.http | int | `3000` | HTTP container port |
5252
| gotenberg.service.enabled | bool | `true` | Create a Service for Gotenberg |
5353
| gotenberg.service.type | string | `"ClusterIP"` | Service type |
@@ -84,9 +84,9 @@ A Helm chart for the Lago PDF stack (Gotenberg + optional Rails worker)
8484

8585
| Key | Type | Default | Description |
8686
|-----|------|---------|-------------|
87+
| annotations | object | `{}` | Deployment metadata annotations (e.g. Stakater Reloader) |
8788
| nameOverride | string | `""` | Override the chart name |
8889
| fullnameOverride | string | `""` | Override the full release name |
89-
| annotations | object | `{}` | Deployment metadata annotations |
9090

9191
### Extra Objects
9292

charts/lago-pdf/values.yaml

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ gotenberg:
357357
image:
358358
# -- Gotenberg image repository
359359
# @section -- Gotenberg
360-
repository: getlago/lago-gotenberg
360+
repository: ghcr.io/getlago/gotenberg
361361
# -- Override the Gotenberg image tag
362362
# @section -- Gotenberg
363363
tag:
@@ -376,9 +376,23 @@ gotenberg:
376376
# -- Container entrypoint command
377377
# @section -- Gotenberg
378378
command: []
379-
# -- Container command arguments
379+
# -- Container command arguments. Match the legacy Porter deployments
380+
# (`pdf-web` / `pdf-eu-web`): restart Chromium every 100 jobs to avoid
381+
# zombie processes, cap the queue at 20, disable JS in invoice HTML,
382+
# ignore certificate errors on the Chromium fetcher, disable
383+
# LibreOffice routes we do not use, and cap the API timeout at 30s.
384+
# `--api-disable-health-check-logging` was renamed to
385+
# `--api-disable-health-check-route-telemetry` in Gotenberg 8.32 and
386+
# defaults to `true`, so it is intentionally not set here.
380387
# @section -- Gotenberg
381-
args: ["gotenberg", "--api-disable-health-check-logging"]
388+
args:
389+
- gotenberg
390+
- --libreoffice-disable-routes=true
391+
- --chromium-ignore-certificate-errors=true
392+
- --chromium-disable-javascript=true
393+
- --api-timeout=30s
394+
- --chromium-max-queue-size=20
395+
- --chromium-restart-after=100
382396
ports:
383397
# -- HTTP container port
384398
# @section -- Gotenberg

0 commit comments

Comments
 (0)