41 lines
1.6 KiB
YAML
41 lines
1.6 KiB
YAML
|
|
# Ingress for the informed-decision approver surface on decisions.coulomb.social.
|
||
|
|
#
|
||
|
|
# Requires cert-manager ClusterIssuer letsencrypt-prod and DNS
|
||
|
|
# decisions.coulomb.social -> cluster IP (A record confirmed 2026-09-10).
|
||
|
|
#
|
||
|
|
# ONE path rule on purpose. reuse-surface reported (2026-07-07) that a host
|
||
|
|
# carrying an Exact /health rule alongside a catch-all `/` Prefix rule had the
|
||
|
|
# exact match swallowed by the catch-all, so the public health URL 404'd while
|
||
|
|
# the pod was healthy. Splitting /auth, /api and / across backends here would
|
||
|
|
# reproduce that. Everything on this host stays on one backend; if the surface
|
||
|
|
# ever needs a second one, set traefik.ingress.kubernetes.io/router.priority
|
||
|
|
# explicitly rather than relying on rule order.
|
||
|
|
apiVersion: networking.k8s.io/v1
|
||
|
|
kind: Ingress
|
||
|
|
metadata:
|
||
|
|
name: informed-decision
|
||
|
|
namespace: informed-decision
|
||
|
|
annotations:
|
||
|
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||
|
|
# websecure only (forgejo/coulomb-social pattern): leave HTTP free for
|
||
|
|
# cert-manager HTTP-01 solvers. TLS app traffic stays on 443; the ACME
|
||
|
|
# challenge uses the solver ingress on 80.
|
||
|
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||
|
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||
|
|
spec:
|
||
|
|
ingressClassName: traefik
|
||
|
|
tls:
|
||
|
|
- hosts: [decisions.coulomb.social]
|
||
|
|
secretName: informed-decision-tls
|
||
|
|
rules:
|
||
|
|
- host: decisions.coulomb.social
|
||
|
|
http:
|
||
|
|
paths:
|
||
|
|
- path: /
|
||
|
|
pathType: Prefix
|
||
|
|
backend:
|
||
|
|
service:
|
||
|
|
name: informed-decision
|
||
|
|
port:
|
||
|
|
number: 80
|