Migrate Helm gateway configuration to gatewayConfig
Chart schema v2 replaces application-specific Helm values with one non-secret
gatewayConfig map. Its top-level keys are TOML tables; nested maps are TOML
inline tables. A top-level YAML list is an ordered TOML array of tables, with
one map per [[table]] entry. Kubernetes resource references (Secrets, certificates, Services,
and mounts) remain chart values.
Upgrade compatibility
The chart accepts the 0.1.x application values as deprecated aliases while
moving to gatewayConfig. When both forms set the same runtime field,
gatewayConfig wins. Runtime images and proxy settings may therefore be
migrated incrementally. Kubernetes pull policy spellings such as Always are
accepted aliases and normalize to always, if_not_present, or never.
gatewayConfig is strictly a non-secret
configuration contract: do not put passwords, tokens, private keys,
database_url, or other secret material in it; use Secret-backed environment,
file, or volume configuration instead. Helm serializes unknown fields
generically and cannot determine whether an arbitrary string such as
api_token is confidential. It rejects database_url, inline URL credentials,
and PEM private keys, but is not a general secret scanner.
Keep server.disableTls, TLS Secret names, server.hostGatewayIP, server.externalDbSecret,
server.sandboxNamespace, server.oidc.caConfigMapName, certificate settings and
Service settings: these own Kubernetes resources. The chart derives their
runtime counterparts.
Mapping
Examples
The following values configure OIDC, telemetry, sandbox images, managed workspaces, rate limiting, and the Kubernetes Secrets credential driver before migration:
After migration, the same settings use gatewayConfig:
For Vault, set openshell.gateway.credential_drivers: [vault] and configure
openshell.credential_drivers.vault; use credentialDrivers.vault.caConfigMapName
for a private Vault CA. For a proxy, use the Kubernetes-driver fields in
gatewayConfig. TLS remains Secret-backed; set server.disableTls: true only for
trusted external termination. A null map field omits it; null array elements
are invalid. Strings are serialized literally; Helm template expressions inside
them are not evaluated.