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/Gatewayoder 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-Multiplexeg-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, annotations — ohMyHelm 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:
- Traefik Deployment/Helm im Tenant-Namespace
- Service
type: ClusterIPoderLoadBalancer(nur wenn eigene VIP vereinbart) - Routing von Plattform-Ingress/Gateway zum Traefik-Service (Hostname/Pfad), oder dedizierte VIP nach Abstimmung
- 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 |