Values were passed as kubectl -p argument and via environment variables,
both visible to other processes. Node now generates the values and writes
the patch into a private temp file (umask 077, removed on exit); kubectl
reads it with --patch-file. Only key names and modes are on the command
line. Also fixes the first key being dropped (node -e argv offset).
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
- overlays/encry configmaps now carry the live cluster values (runbook
step 1) plus OIDC_CLIENT_ID; kubectl diff against the cluster is empty.
- deploy/k8s/scripts/ensure-secrets.sh adds missing secret keys without
touching existing ones (random encryption keys, empty Open-Meteo key,
TELEGRAM_BOT_TOKEN=dummy) and never prints values.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>