refactor(helm): switch from env vars to config files
What does this MR do and why?
Replaces GKG_* environment variables in Helm chart deployments with ConfigMap-mounted YAML config files. The flat GKG_DATALAKE__URL style env vars obscured the hierarchical config structure; YAML files make the per-mode configuration readable at a glance, consistent with how siphon components were already configured.
Each GKG mode (webserver, indexer, dispatcher, health-check) gets its own ConfigMap with a default.yaml mounted at /app/config/. The config crate picks this up via File::with_name("config/default") relative to the WORKDIR. Secrets (ClickHouse passwords, JWT, Gitaly token) stay as env vars since they come from K8s secrets and override file values through the config crate's layering.
Also fixes a bug where the config crate's YAML format support was never actually compiled in — features = ["yaml-rust2"] specifies the dependency name, not the feature flag ("yaml"). This was invisible before because everything came from env vars.
Dockerfile and build-dev.sh now set WORKDIR /app for a more conventional container layout.
Related Issues
Closes #173 (closed)
Testing
-
cargo test --package gkg-server -- config— all config tests pass -
helm lintandhelm template— valid output with all modes enabled - Deployed to GKE sandbox, confirmed config file loading fails without the yaml feature fix, rolled back
Performance Analysis
- This merge request does not introduce any performance regression. If a performance regression is expected, explain why.