NXTGAUGE_USERS_URL used the short service name "nxtgauge-rust-users",
which only resolves within the same namespace. The prod overlay places
ai-assistant in nxtgauge-ai while the users service is in nxtgauge, so
every help-center search and ticket-creation call failed with a DNS
resolution error (surfaced as a 502 to the client). Use the full
in-cluster FQDN instead.
Was defaulting to plain Ollama with gemma3:270m for every request -
no LLM_PROVIDER or LITELLM_* env vars were set. LiteLLM is already
deployed with purpose-built model aliases per task
(apps/litellm/base/configmap.yaml); this wires ai-assistant to use it.
JWT_SECRET can't reference nxtgauge-backend-rust-secrets (namespace
nxtgauge) from the ai-assistant pod, which the prod overlay places in
nxtgauge-ai — Kubernetes secretKeyRef must be same-namespace. Duplicate
the value into nxtgauge-ai-assistant-secrets instead.
- Add .sops.yaml (age) and encrypt every plaintext Secret manifest in apps/
- Commit the Flux GitRepository/Kustomization (previously only applied manually)
with a decryption stanza referencing the sops-age key (created out-of-band,
not committed)
- Rotate JWT_SECRET (previously exposed in plaintext) and set a real
AI_SERVICE_KEY (was an empty placeholder), shared between
nxtgauge-backend-rust and nxtgauge-ai-assistant
- Wire JWT_SECRET into the ai-assistant deployment (was missing entirely,
causing every authenticated request to fail)
- Redact the leaked LiteLLM production master key from README/OPENCODE_CONNECT
docs; move the litellm prod overlay off a plaintext secretGenerator onto an
encrypted patch
- Fix PostgreSQL endpoints (now auto-creating correctly)
- Fix Forgejo DB connection
- Update retention to keep 10 SHA tags (was 2, too aggressive)
- Update all deployments to use available tags
- Add missing base images to registry (alpine, node, rust, python)
- Protect base images from retention deletion
- Backend: 9444056 - crane mirror base images, then build
- Frontend: d26f0bf - crane mirror node:20-alpine, then build
- Admin: e044d4c - crane mirror node:20-alpine, then build
- AI: 6f94539 - crane mirror base images, then build
- All repos now use crane to mirror base images before building
- frontend: use registry.nxtgauge.com/node:20-alpine
- admin: use registry.nxtgauge.com/node:20-alpine
- ai: use registry.nxtgauge.com/rust:1.87-alpine and alpine:3.20
- All images now use internal registry to avoid Docker Hub rate limits
- Update kustomization.yaml tags and admin base deployment image
- Remove ghcr.io references from admin gitops
Images needed in registry.nxtgauge.com:
- node:20-alpine
- rust:1.87-alpine
- alpine:3.20
- Add nxtgauge-ai-assistant deployment, service, and kustomization overlays
- Update users service to commit 430711a with AI endpoints
- Set NXTGAUGE_USERS_URL and AI_SERVICE_KEY env vars