Networking in k8s ist ziemlich kompliziert für alles was über HTTP-
(Web-) Server hinaus geht. In allen größeren Clustern die ich gesehen
habe saß eine Firewall außerhalb, vor dem Cluster, nicht innerhalb des
Clusters. Möglich sollte es sein.
Was normal ist ist Load Balancing und ein Ingress Controller wie nginx
oder, wenn du wahnsinnig bist, direkt istio. Den konfigurierst du so,
dass nur die Ports für deine vom Cluster öffentlich angebotenen Dienste
offen sind. Ob eine Firewall dahinter noch Sinn ergibt müsste man einen
k8s Security-Experten fragen.
Innerhalb eines k8s Clusters selber herrscht erst mal Anarchie. Jeder
Pod kann mit jedem anderen wie es beliebt. Das muss man erst mal mit
Network Policies, typischerweise mit Calico, einschränken, sonst nutzt
einem eine Firewall in einem Pod sehr wenig.
Egress kann man ebenfalls mit NetworkPolicies einschränken. Das sollte
man zumindest für Production Systeme.
Ich würde vorschlagen du siehst dir erst mal die entsprechenden k8s
Konzepte an
https://kubernetes.io/docs/concepts/services-networking/
https://kubernetes.io/docs/concepts/security/
Und wenn du richtig durchgeknallt bist istio
https://istio.io/
Um vom istio-Waschzettel zu zitieren (bitte halten Sie ihre Bingo-Karte
bereit):
>> Istio extends Kubernetes to establish a programmable, application-aware
>> network using the powerful Envoy service proxy. Working with both
>> Kubernetes and traditional workloads, Istio brings standard, universal
>> traffic management, telemetry, and security to complex deployments.
BINGO!
Aus Erfahrung kann ich sage, ja, macht istio. Aber ein Service Mesh wie
istio ist noch mal eine ganz andere Hausnummer als nur k8s. Istio nimmt
man nicht aus Spaß.