Branding: bulk rename across 50+ files (Go, JS, CSS, HTML, YAML, JSON, shell scripts). Fix Helm chart description and git repo URLs. Fix test helper taglines. Admin surface: strip 14 gutted tabs (providers, models, personas, roles, knowledge, memory, tasks, health, routing, capabilities, channels, dashboard, usage, stats). Collapse to 4 categories: People, Workflows, System, Monitoring. Settings surface: strip 11 gutted tabs (models, personas, providers, roles, knowledge, memory, usage, workflows, tasks, data, gitkeys). Keep: general, appearance, profile, teams, connections, notifications. Team-admin surface: strip 5 gutted tabs (personas, providers, knowledge, tasks, usage). Keep: members, groups, connections, workflows, settings, activity. Components: delete chat-pane/ (13 files, 1938 lines) and notes-pane/ (10 files, 2381 lines). main.go: remove stale Health.Prune maintenance goroutine. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
72 lines
2.2 KiB
YAML
72 lines
2.2 KiB
YAML
# k8s/ingress.yaml
|
|
# ============================================
|
|
# Switchboard Core - Ingress
|
|
# ============================================
|
|
# Path-based routing on a single domain:
|
|
# switchboard.DOMAIN/ → production
|
|
# switchboard.DOMAIN/test/ → test (main branch)
|
|
# switchboard.DOMAIN/dev/ → dev (PR branches)
|
|
#
|
|
# Each environment deploys its own Ingress resource.
|
|
# Traefik merges rules for the same host automatically.
|
|
# Longer path prefixes take priority (Traefik default).
|
|
#
|
|
# BASE_PATH is empty for prod, "/test" or "/dev" for others.
|
|
# Backend handles BASE_PATH via r.Group(cfg.BasePath).
|
|
# Frontend entrypoint injects BASE_PATH into nginx + HTML.
|
|
# ============================================
|
|
apiVersion: networking.k8s.io/v1
|
|
kind: Ingress
|
|
metadata:
|
|
name: switchboard${DEPLOY_SUFFIX}
|
|
namespace: ${NAMESPACE}
|
|
annotations:
|
|
cert-manager.io/cluster-issuer: "${CERT_ISSUER}"
|
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
|
labels:
|
|
app: switchboard
|
|
env: ${ENVIRONMENT}
|
|
spec:
|
|
ingressClassName: "traefik"
|
|
tls:
|
|
- hosts:
|
|
- ${DEPLOY_HOST}
|
|
secretName: switchboard-tls
|
|
rules:
|
|
- host: "${DEPLOY_HOST}"
|
|
http:
|
|
paths:
|
|
# API routes → backend
|
|
- path: ${BASE_PATH}/api
|
|
pathType: Prefix
|
|
backend:
|
|
service:
|
|
name: switchboard-be${DEPLOY_SUFFIX}
|
|
port:
|
|
number: 8080
|
|
# Health check → backend
|
|
- path: ${BASE_PATH}/health
|
|
pathType: Prefix
|
|
backend:
|
|
service:
|
|
name: switchboard-be${DEPLOY_SUFFIX}
|
|
port:
|
|
number: 8080
|
|
# WebSocket → backend (must be Prefix, not Exact — Traefik's Exact
|
|
# doesn't reliably win over Prefix rules in the same Ingress resource)
|
|
- path: ${BASE_PATH}/ws
|
|
pathType: Prefix
|
|
backend:
|
|
service:
|
|
name: switchboard-be${DEPLOY_SUFFIX}
|
|
port:
|
|
number: 8080
|
|
# Everything else under this prefix → frontend
|
|
- path: ${BASE_PATH}/
|
|
pathType: Prefix
|
|
backend:
|
|
service:
|
|
name: switchboard-fe${DEPLOY_SUFFIX}
|
|
port:
|
|
number: 80
|