Zum Inhalt

Ingress & Edge

Edge-Pfad, NGINX und Envoy Gateway, Traefik als Workload, DNS. Komponenten: Envoy Gateway, NGINX Ingress. Produktkontext: Edge Cloud.

Traffic-Pfad (Überblick)

Client
  → ayedo Edge / Load Balancer (PoP, HAProxy o. ä.)
    → Node (ExternalTrafficPolicy Local/Cluster)
      → Ingress Controller oder Gateway Proxy
        → Service → Pod
  • Edge LB terminiert oder leitet weiter (TCP/HTTP); hält VIP und Health-Checks.
  • Cluster-Ingress macht Hostname-/Pfad-Routing und TLS (Terminate oder Passthrough).
  • Kunden-Workloads binden über Ingress, HTTPRoute/Gateway oder eigenen Proxy im Namespace.

Plattform-Edge: NGINX und Envoy Gateway

Edge API Wann
NGINX Ingress klassische Ingress + IngressClass (z. B. nginx) bestehender Standard für viele Workloads
Envoy Gateway Kubernetes Gateway API (Gateway, HTTPRoute, …) Parallelbetrieb; mittelfristiger Zielpfad für neues Routing

Envoy und NGINX teilen keine gemeinsame LoadBalancer-IP — eigene VIP und Klassen. Auswahl bewusst treffen (z. B. k3s-server ingress.type: gateway). Details: SDP Features — Envoy Gateway · Blöcke ayedo/k8s/envoy, ayedo/k8s/nginx.

VIPs kommen von Cilium LoadBalancer / BGP oder MetalLB — Network Access.

GatewayClasses (Envoy, typisch):

  • eg-shared — eine VIP, Hostname-/SNI-Multiplex
  • eg-dedicated — eigene VIP/Fleet pro Gateway

TLS:

  • Terminate am Controller/Gateway mit cert-manager, oder
  • Passthrough (z. B. k3s-server kube-apiserver hinter Gateway/TLSRoute)

Settings, die Workloads setzen

Ingress (NGINX)

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myapp
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "50m"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "60"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "60"
    cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
  ingressClassName: nginx
  rules:
    - host: myapp.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: myapp
                port:
                  number: 80
  tls:
    - hosts: [myapp.example.com]
      secretName: myapp-tls

Häufige Annotations: Body-Size, Timeouts, SSL-Redirect, Affinity. Upstream: ingress-nginx annotations.

ohMyHelm: chart.ingress.enabled, host, tls, className, annotationsohMyHelm Getting Started.

Gateway API (Envoy)

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: myapp
spec:
  parentRefs:
    - name: eg-shared
      namespace: envoy-gateway-system
  hostnames:
    - myapp.example.com
  rules:
    - matches:
        - path:
            type: PathPrefix
            value: /
      backendRefs:
        - name: myapp
          port: 80
Resource Zweck
Gateway / GatewayClass Data-Plane (eg-shared, eg-dedicated) — Plattform
HTTPRoute HTTP(S)-Routing, Header/Path-Match, Timeouts, Filter
TLSRoute TLS-Passthrough (SNI), z. B. Controlplane-API
GRPCRoute / TCPRoute je nach Envoy-Version und Freigabe

Upstream: Gateway API · Envoy Gateway.

Monitoring-Endpoints aus Ingress: Operator-Annotationen — Operator Endpoint Discovery.

Kunden-Traefik (Workload)

Traefik ist kein Ersatz für den Plattform-Ingress der SDP, kann aber als Kunden-Workload im eigenen Namespace laufen:

  1. Traefik Deployment/Helm im Tenant-Namespace
  2. Service type: ClusterIP oder LoadBalancer (nur wenn eigene VIP vereinbart)
  3. Routing von Plattform-Ingress/Gateway zum Traefik-Service (Hostname/Pfad), oder dedizierte VIP nach Abstimmung
  4. Zertifikate: cert-manager im Namespace oder Upstream-TLS am Plattform-Edge

Vermeide konkurrierende Default-IngressClasses ohne Absprache — Hostnamen und TLS-Secrets sonst doppelt gebunden.

DNS-Checkliste

Schritt Aktion
1 Hostname(s) und Zone-Owner klären (Kunde vs. ayedo-managed Zone)
2 Ziel-IP/Hostname des Edge/LB von ayedo übernehmen (A/AAAA oder CNAME)
3 TTL niedrig halten bis Cutover stabil ist
4 TLS: DNS-01/HTTP-01 Challenges mit cert-manager abstimmen
5 Nach Cutover: HTTPS, Redirects, Health-Checks prüfen

Externe DNS-Zonen: Records zeigen auf die von ayedo kommunizierte Edge-Adresse — nicht auf einzelne Node-IPs, außer ausdrücklich so vorgesehen.

Polycrate-API-Kontext Domains/DNS: Domains & DNS (falls API-seitig genutzt).

Entscheidungshilfe

Anforderung Empfehlung
Bestehende Ingress-YAML NGINX belassen
Gateway API / neues HTTP(S)-Routing Envoy Gateway (eg-shared / eg-dedicated)
Spezielle Traefik-Middleware im App-Team Traefik als Workload hinter Plattform-Edge
Nur DNS umbiegen Checkliste oben; kein Controller-Wechsel nötig

Weiterführend