Research-Stack/4-Infrastructure/k3s-flake/manifests/credential-server/deployment.yaml
Brandon Schneider 38f1022a20 feat(k3s-server): Traefik NodePort + host Caddy pass-through (internal-only)
Port conflict resolution:
- Add HelmChartConfig to pin Traefik web entrypoint to NodePort 30080
  (not host :80) so k3s Traefik and host Caddy do not race for the port
- Add host Caddy on :80 as a minimal pass-through to Traefik :30080;
  carries X-Forwarded-* headers so Traefik sees the real client IP and
  the correct Host. No TLS, no Porkbun, no subdomain logic — all of
  that stays on the edge Caddy (k3s-edge.nix)
- Caddy after= k3s.service so Traefik NodePort is ready before proxying

Authentik port fix:
- Change authentik server + worker services from NodePort 30080 to
  ClusterIP; Traefik reaches Authentik via the rs-auth Ingress and
  cluster DNS, no NodePort required

New manifests (internal, no public-traffic impact):
- manifests/ingress/: Traefik Ingress resources + Middleware CRDs
  (/apps/*, /server/* → forward_auth + strip-prefix; /api/* → strip only;
  / → Homer + forward_auth; auth.* → Authentik, no middleware)
- manifests/hermes/: placeholder chat/orchestrator service
- manifests/credential-server/: token-auth credential vault stub
- manifests/control-plane/: registry-api, jobs-api, blobs-api health stubs
- manifests/homer/configmap.yaml: updated dashboard links to canonical paths

Deploy order: rebuild k3s-server first, verify Traefik + Ingress
internally, then deploy k3s-edge (commit 3 / next step).

Generated with Devin (https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-05-26 21:03:54 -05:00

47 lines
1.2 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: credential-server
namespace: services
labels:
app: credential-server
spec:
replicas: 1
selector:
matchLabels:
app: credential-server
template:
metadata:
labels:
app: credential-server
spec:
containers:
- name: credential-server
image: registry.researchstack.info/infra/credential-server:latest
ports:
- containerPort: 8444
name: http
env:
- name: RS_CREDENTIAL_CONFIG
value: /etc/credential-server/credentials.json
- name: RS_SURFACE_PORT
value: "8444"
- name: RS_SURFACE_HOST
value: "0.0.0.0"
- name: RUST_LOG
value: "info"
volumeMounts:
- name: config
mountPath: /etc/credential-server
readOnly: true
resources:
requests:
memory: 64Mi
cpu: 50m
limits:
memory: 128Mi
volumes:
- name: config
secret:
secretName: credential-server-config
optional: true