64 lines
1.7 KiB
YAML
64 lines
1.7 KiB
YAML
# k8s/ingress.yaml
|
|
# ============================================
|
|
# Chat Switchboard - Ingress
|
|
# ============================================
|
|
# Routes for a single subdomain:
|
|
# /api/* → backend service (Go API on :8080)
|
|
# /health → backend service (health check)
|
|
# /ws → backend service (WebSocket, upgraded)
|
|
# /* → frontend service (nginx SPA on :80)
|
|
# ============================================
|
|
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${DEPLOY_SUFFIX}-tls
|
|
rules:
|
|
- host: "${DEPLOY_HOST}"
|
|
http:
|
|
paths:
|
|
# API routes → backend
|
|
- path: /api
|
|
pathType: Prefix
|
|
backend:
|
|
service:
|
|
name: switchboard-be${DEPLOY_SUFFIX}
|
|
port:
|
|
number: 8080
|
|
# Health check → backend
|
|
- path: /health
|
|
pathType: Exact
|
|
backend:
|
|
service:
|
|
name: switchboard-be${DEPLOY_SUFFIX}
|
|
port:
|
|
number: 8080
|
|
# WebSocket → backend (traefik handles upgrade automatically)
|
|
- path: /ws
|
|
pathType: Exact
|
|
backend:
|
|
service:
|
|
name: switchboard-be${DEPLOY_SUFFIX}
|
|
port:
|
|
number: 8080
|
|
# Everything else → frontend
|
|
- path: /
|
|
pathType: Prefix
|
|
backend:
|
|
service:
|
|
name: switchboard-fe${DEPLOY_SUFFIX}
|
|
port:
|
|
number: 80
|