39 lines
1.1 KiB
YAML
39 lines
1.1 KiB
YAML
# Tower IngressRoute — path-based split between API and UI on the
|
|
# same hostname.
|
|
#
|
|
# Routing rules (Traefik picks longest-match-with-priority):
|
|
# - API endpoints (/healthz, /instances, future /api/*) → backend
|
|
# - everything else → frontend (Vue SPA)
|
|
#
|
|
# Priority is set explicitly so Traefik doesn't fall back to its
|
|
# heuristic; the API rule outranks the catchall, which outranks no
|
|
# rule at all.
|
|
apiVersion: traefik.io/v1alpha1
|
|
kind: IngressRoute
|
|
metadata:
|
|
name: tower
|
|
labels:
|
|
{{- include "tower.labels" . | nindent 4 }}
|
|
spec:
|
|
entryPoints:
|
|
- {{ .Values.ingress.entryPoint }}
|
|
routes:
|
|
{{- if .Values.backend.enabled }}
|
|
- match: Host(`{{ .Values.ingress.domain }}`) && (PathPrefix(`/api`) || PathPrefix(`/healthz`))
|
|
kind: Rule
|
|
priority: 200
|
|
services:
|
|
- name: tower-backend
|
|
port: 8080
|
|
{{- end }}
|
|
{{- if .Values.frontend.enabled }}
|
|
- match: Host(`{{ .Values.ingress.domain }}`)
|
|
kind: Rule
|
|
priority: 100
|
|
services:
|
|
- name: tower-frontend
|
|
port: 80
|
|
{{- end }}
|
|
tls:
|
|
secretName: tower-tls
|