From cddc36bee8a51a092f69ee74d99513559ed5fb93 Mon Sep 17 00:00:00 2001 From: Nick Szaunig Date: Mon, 28 Sep 2026 06:33:22 +0200 Subject: [PATCH] feat(k8s): Ingress, Zertifikat und Netzwerk nach Muster Wabenhain/ApiCore - Ingress: HTTP->HTTPS-Middleware redirect-to-https wieder am Ingress (wie Wabenhain), Service-Port als Nummer, cert-manager letsencrypt-prod. - NetworkPolicy: Traefik ueber das Pod-Label (traefik/rke2-traefik) in jedem Namespace erkannt statt fester Namespace "traefik" - verhindert, dass die Seite unerreichbar wird, wenn Traefik z. B. in kube-system laeuft. - README: Voraussetzungen pruefen und Deployment Schritt fuer Schritt (kubectl wait auf Postgres) wie bei Wabenhain. Co-Authored-By: Claude Opus 5.5 (1M context) --- k8s/05-ingress.yaml | 17 +++++++++++++++-- k8s/07-networkpolicy.yaml | 13 +++++++++---- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/k8s/05-ingress.yaml b/k8s/05-ingress.yaml index 53ba72b..c0cacc1 100644 --- a/k8s/05-ingress.yaml +++ b/k8s/05-ingress.yaml @@ -1,4 +1,5 @@ -# ANPASSEN: Domain (2x, auch APP_URL in 01-config.yaml), ClusterIssuer. +# Ingress fuer Traefik + cert-manager (gleiches Muster wie Wabenhain). +# ANPASSEN: Domain (2x, auch APP_URL in 01-config.yaml). apiVersion: networking.k8s.io/v1 kind: Ingress metadata: @@ -6,6 +7,8 @@ metadata: namespace: artista annotations: cert-manager.io/cluster-issuer: letsencrypt-prod + # HTTP -> HTTPS ueber die Middleware unten (Praefix = Namespace). + traefik.ingress.kubernetes.io/router.middlewares: artista-redirect-to-https@kubernetescrd spec: ingressClassName: traefik tls: @@ -21,4 +24,14 @@ spec: service: name: artista-modelcamp-app port: - name: http + number: 80 +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: redirect-to-https + namespace: artista +spec: + redirectScheme: + scheme: https + permanent: true diff --git a/k8s/07-networkpolicy.yaml b/k8s/07-networkpolicy.yaml index 62667ff..f60181a 100644 --- a/k8s/07-networkpolicy.yaml +++ b/k8s/07-networkpolicy.yaml @@ -1,5 +1,7 @@ # Datenbank nur fuer App und Worker erreichbar; App nur ueber Traefik. -# ANPASSEN: Namespace deines Traefik ("kubectl get pods -A | grep traefik"). +# Traefik wird am Pod-Label erkannt, egal in welchem Namespace es laeuft +# (eigene Installation "traefik" oder RKE2-Paket "rke2-traefik"). +# Pruefen: kubectl get pods -A -l 'app.kubernetes.io/name in (traefik,rke2-traefik)' apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: @@ -28,8 +30,11 @@ spec: app: artista-modelcamp-app ingress: - from: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: traefik + - namespaceSelector: {} + podSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: [traefik, rke2-traefik] ports: - port: 3000