# ============================================================================= # AI Software Factory — Ingress (nginx ingress controller) # # Host: factory.example.com → web (3000) for "/" # /api → api (4000) # /ws → realtime (4001, WebSocket upgrade) # # Assumes cert-manager is installed; the certificate is issued for the host # below. Swap the host + TLS secret name for your environment. # ============================================================================= apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: factory annotations: # --- TLS: cert-manager issues the certificate into the tls secret --- cert-manager.io/cluster-issuer: "letsencrypt-prod" # --- WebSocket support for /ws --- nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" nginx.ingress.kubernetes.io/proxy-send-timeout: "3600" nginx.ingress.kubernetes.io/proxy-buffering: "off" # --- Large file uploads via the API (multipart / presigned passthrough) --- nginx.ingress.kubernetes.io/proxy-body-size: "512m" # --- Generic hardening --- nginx.ingress.kubernetes.io/force-ssl-redirect: "true" # CORS handled by the API (strict allow-list); no annotation here. spec: ingressClassName: nginx tls: - hosts: - factory.example.com secretName: factory-tls rules: - host: factory.example.com http: paths: # REST API - path: /api pathType: Prefix backend: service: name: api port: number: 4000 # WebSocket realtime endpoint - path: /ws pathType: Prefix backend: service: name: realtime port: number: 4001 # Everything else → Next.js web app - path: / pathType: Prefix backend: service: name: web port: number: 3000