---
# HTTPS front for the k8s Gitea, served on two names:
#   git.unkin.net              — canonical/production (apex, bind-operator zone;
#                                DNS flip is the gated cutover step, see the doc)
#   git.k8s.syd1.au.unkin.net  — admin/backup route (external-dns k8s.syd1 zone),
#                                same dual-name pattern as identity.unkin.net.
# The cert-manager Certificate (vault-issuer) takes CN git.unkin.net and gets a
# DNS SAN for each TLS listener hostname automatically.
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: gitea
  namespace: gitea
  labels:
    app.kubernetes.io/name: gitea
    app.kubernetes.io/instance: gitea
    traefik.io/instance: internal
  annotations:
    cert-manager.io/cluster-issuer: vault-issuer
    cert-manager.io/common-name: git.unkin.net
    cert-manager.io/private-key-size: "4096"
    # Only the k8s admin route is published by external-dns (it owns just the
    # k8s.syd1.au.unkin.net zone). git.unkin.net lives in the apex zone and is
    # flipped at cutover — NOT managed here.
    external-dns.alpha.kubernetes.io/hostname: git.k8s.syd1.au.unkin.net
    external-dns.alpha.kubernetes.io/target: 198.18.200.4
spec:
  gatewayClassName: traefik-internal
  listeners:
    - name: http-primary
      port: 80
      protocol: HTTP
      hostname: git.unkin.net
      allowedRoutes:
        namespaces:
          from: Same
    - name: https-primary
      port: 443
      protocol: HTTPS
      hostname: git.unkin.net
      allowedRoutes:
        namespaces:
          from: Same
      tls:
        mode: Terminate
        certificateRefs:
          - group: ""
            kind: Secret
            name: gitea-tls
    - name: http-admin
      port: 80
      protocol: HTTP
      hostname: git.k8s.syd1.au.unkin.net
      allowedRoutes:
        namespaces:
          from: Same
    - name: https-admin
      port: 443
      protocol: HTTPS
      hostname: git.k8s.syd1.au.unkin.net
      allowedRoutes:
        namespaces:
          from: Same
      tls:
        mode: Terminate
        certificateRefs:
          - group: ""
            kind: Secret
            name: gitea-tls
