Commit Graph

10 Commits

Author SHA1 Message Date
OdooSky v3
7132d527a3 fix(odoo): add --proxy-mode to args (Mixed-Content fix; chart 0.1.9) 2026-05-13 05:52:31 +02:00
OdooSky v3
4a8dc61a92 feat(chart): rip out pg dual-mode shim — ESO-only (0.1.8)
A-Chunk 3 finalisation. All live instances are migrated to ESO,
and Tower 0.77.2 makes the migrate + template-deploy paths also
emit ESO-shape overlays (wizard always has). The
`{{- if not .Values.postgres.passwordVaultPath }}` shim in
postgres-secret.yaml has zero remaining production callers.

Changes:
  - DELETE templates/postgres-secret.yaml (dual-mode legacy path)
  - DELETE _helpers.tpl `instance.pgPassword` (only consumed by
    postgres-secret.yaml; no other callers)
  - UNWRAP templates/postgres-password-externalsecret.yaml — the
    outer `{{- if .Values.postgres.passwordVaultPath }}` conditional
    is removed; the template now renders unconditionally and the
    chart's `required` directive on tenant.id is the new boundary
    (chart render fails loud if Tower forgot to populate it)
  - SIMPLIFY values.yaml — drop the legacy `postgres.password` field
    and the dual-mode documentation. `passwordVaultPath` stays as an
    operator-visible advisory string but the chart hardcodes the
    path shape from tenant.id + instance.code

Chart 0.1.7 → 0.1.8. helm template + helm lint verified locally;
helm template with tenant.id missing fails loud with a clear
error pointing the operator at the chart line + the source of the
missing value.

The live instances (erp/erp18v3/v19) carry tenant.id + passwordVaultPath
in their overlays already; this chart version produces the same
manifests for them on next ArgoCD reconcile — no observable change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 13:56:40 +03:00
OdooSky v3
96071aec8e feat(chart): pg password via ExternalSecret/OpenBao (A-Chunk 1)
Per-instance Postgres password sourced from OpenBao via External
Secrets Operator. Dual-mode for the migration window:

  - postgres.passwordVaultPath unset → legacy postgres-secret.yaml
    renders with .Values.postgres.password (helm lookup + random
    fallback, bit-exact existing behaviour for live instances).
  - postgres.passwordVaultPath set → postgres-password-externalsecret.yaml
    renders an ExternalSecret that produces the same <release>-pg
    Secret (POSTGRES_USER/PASSWORD/DB) from OpenBao path
    `tenants/<tenant.id>/instances/<instance.code>/pg`.

Exactly one of the two templates ships per instance (mutually
exclusive `if`s on .Values.postgres.passwordVaultPath). The Postgres
StatefulSet envFroms <release>-pg unchanged.

OpenBao policy already grants the per-cluster ESO read on
`v3/data/tenants/<tenantID>/*` (buildEsoPolicy in tower's
openbao_auth_setup.go) — the new instances/<code>/pg subpath is
covered. No policy change required.

A `required` directive on the ExternalSecret asserts tenant.id is
present when passwordVaultPath is set — fails loud at helm template
time if Tower forgot to populate it.

deletionPolicy: Retain on the ExternalSecret. Postgres PGDATA on
disk hashes to the password in the Secret; an accidental ESO
removal must not cascade into the Secret disappearing.

Chart 0.1.6 → 0.1.7. Verified locally: helm template both modes,
helm lint clean.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 12:56:54 +03:00
OdooSky v3
d7c1b2f895 fix(shim-version-parse): anchor awk regex on literal version key (H2) 2026-05-09 15:34:39 +02:00
OdooSky v3
961f31998e fix(hoot-dom): derive shim version from odoo tag for Odoo 19 compat 2026-05-09 01:19:45 +02:00
OdooSky v3
55d069cd4d fix(hoot-dom): static/src alias file approach 2026-05-08 23:44:15 +02:00
OdooSky v3
9999899c3d fix(hoot-dom): include hoot module loader + version-aware shim upgrade 2026-05-08 23:35:26 +02:00
OdooSky v3
44a6972b44 fix(hoot-dom): platform shim addon to inject hoot-dom into web.assets_backend 2026-05-08 23:26:52 +02:00
OdooSky v3
96785158e7 fix(readiness): bump Odoo readinessProbe failureThreshold 2 -> 15
Heavy addon installs (e.g. ks_dashboard_ninja) blocked /web/login
probes for >10s, causing K8s to pull the Pod from Endpoints; Traefik
then 503d the operator addon-apply RPC. failureThreshold: 15 (~75s
of headroom) covers the install window without affecting true
pod-restart detection (initialDelay gates boot).

Chart 0.1.0 -> 0.1.1.
2026-05-08 22:04:07 +02:00
git_admin
a915b31588 Initial chart import from local infrastructure/ 2026-04-26 17:46:59 +03:00