--- # 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