fix: move LLM config to encrypted ConfigMap (CI-friendly)
Build & Push Portfolio Image / Test (pull_request) Failing after 34s
Build & Push Portfolio Image / Build & Push Image (pull_request) Skipped

Problem: LLM_API_URL hardcoded to external HTTPS endpoint
- https://api.riotpiao.com/v1/chat/completions (TLS hairpin through nginx)
- Not externalizable for CI or environment-specific deployment

Solution: Move to SOPS-encrypted ConfigMap with in-cluster endpoint
- LLM_API_URL: http://api-gateway.api.svc.cluster.local:8080/v1/chat/completions
- No TLS overhead, direct cluster communication
- Encrypted for security (SOPS + age key)
- Externalizable: CI can update values without app redeployment

Changes:
1. Create configmap.enc.yaml (SOPS-encrypted)
   - Data: LLM_API_URL, LLM_MODEL
   - Encrypted with .sops.yaml age key
2. Update deployment.yaml
   - Change from 'value:' to 'valueFrom: configMapKeyRef'
   - Reference portfolio-llm-config ConfigMap
3. Update kustomization.yaml
   - Add configmap.enc.yaml to resources
   - Add sops: version: 3 for decryption

Benefits:
- ArgoCD auto-decrypts via SOPS before applying
- CI can auto-patch ConfigMap without app changes
- Environment-specific config (dev/staging/prod)
- Secrets encrypted in git (never plain text)
This commit is contained in:
Story Crater Bot
2026-09-06 23:25:35 -07:00
parent 6e1e7506c3
commit 4ad8a4f4a4
3 changed files with 41 additions and 3 deletions
+9 -3
View File
@@ -42,11 +42,17 @@ spec:
secretKeyRef:
name: portfolio-agent-oidc
key: TOKEN_URL
# LLM API configuration
# LLM API configuration (from encrypted ConfigMap)
- name: LLM_API_URL
value: "https://api.riotpiao.com/v1/chat/completions"
valueFrom:
configMapKeyRef:
name: portfolio-llm-config
key: LLM_API_URL
- name: LLM_MODEL
value: "qwen2.5:3b-instruct"
valueFrom:
configMapKeyRef:
name: portfolio-llm-config
key: LLM_MODEL
ports:
- name: http
containerPort: 3000