Skip to content

Helm chart is not production-shaped #1302

Description

@ren-jentic

Follow-up from the #1142 review (register IDs: F-03, F-04, F-07, G-09–G-13, G-30, G-31, D-06, L-01, L-06, L-11, X-02, X-08, N-03). Evidence in the review laps: 1, 2, 3, 5, 7.

The documented production Helm install has structural gaps the docs partially hedge:

  • No JENTIC_ENV=production on the OSS path, so the placeholder-secret guard silently generates per-process ephemeral secrets instead of failing (F-03).
  • "Set the shared-state backend to Redis before scaling out" is not executable on the published image — the redis extra is not installed (F-04).
  • Bundled-DB migrate hook is post-install,post-upgrade, so new pods serve on the old schema until the Job finishes; should be pre-upgrade + post-install (G-09).
  • LOG_FORMAT/LOG_LEVEL env vars documented in the chart README are read by nothing (G-10).
  • Values-file DB passwords are corrupted by YAML number coercion (password: 0123456789 renders 1.23456789e+08); a kindIs "string" + fail guard is a two-line fix (G-12).
  • No securityContext on any application subchart (no runAsNonRoot, readOnlyRootFilesystem, capabilities.drop), no Ingress/PDB/HPA/NetworkPolicy — while docs/security/README.md prescribes exactly that checklist (G-13, X-02).
  • Omitting global.image.tag silently deploys :latest; the _image.tpl comment claims a warning that is never printed (G-30).
  • extraEnv renders before the chart's own env helpers, so on duplicate keys the chart always beats the operator (G-31).
  • Default helm install scaling advice exceeds the bundled Postgres max_connections (100) at 2 processes (D-06).
  • Air-gapped installs need docker.io/postgres, otel, and gateway pulls that the transfer section never lists (G-11).
  • Bundled Postgres PVC is 8Gi, immutable via volumeClaimTemplates, documented nowhere (L-06).
  • trusted_proxies defaults empty and is documented only on the path without an ingress — behind the ingress helm.md mandates, the whole fleet shares one rate-limit bucket (X-08).
  • jti single-use is process-local; multi-replica auth replays inside the 300 s window; the Redis-before-scale-out list omits it (M-12-adjacent, filed here for the chart shape).

Partially addressed on the branch already: memory requests/limits for app/admin raised to 256Mi/1Gi (L-01/N-01), --timeout 30m documented, external-DB secret shapes corrected (F-01/F-02).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:deployDocker, Helm, Terraform, k8s, versioningbugSomething isn't workingfeasibility:medHarness: buildable with meaningful effort/riskfit:highHarness: squarely fits the product scopeseverity:majorSignificant impact; painful workaround exists

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions