NetworkPolicy es un recurso de API en Kubernetes que permite definir reglas de seguridad de red a nivel de capa 3/4 para el tráfico entre Pods. Actúa como un firewall distribuido, controlando el tráfico de entrada (ingress) y salida (egress) de los Pods basándose en etiquetas de Pods, namespaces y rangos de IP. Cuando no hay NetworkPolicies definidas para un Pod, este acepta todo el tráfico. Una vez que al menos una NetworkPolicy selecciona un Pod, este rechaza cualquier tráfico no permitido explícitamente por esa o cualquier otra NetworkPolicy que lo seleccione.
La implementación de NetworkPolicy depende del CNI (Container Network Interface) utilizado en el clúster de Kubernetes. CNIs populares como Calico, Cilium, y OVN (Open Virtual Network) proporcionan implementaciones robustas de NetworkPolicy. Por ejemplo, Calico traduce las NetworkPolicies en reglas de iptables o eBPF en los nodos, mientras que Cilium utiliza eBPF para una aplicación de políticas de red de alto rendimiento y programabilidad avanzada. Estas herramientas no solo aplican las políticas dentro del clúster, sino que también pueden extenderse para controlar el tráfico hacia y desde servicios externos o redes on-premise.
Para un arquitecto de sistemas, NetworkPolicy es fundamental para establecer una postura de seguridad de 'least privilege' y lograr una microsegmentación efectiva dentro de un clúster de Kubernetes. Permite aislar cargas de trabajo críticas, prevenir movimientos laterales no autorizados en caso de compromiso y cumplir con requisitos regulatorios como PCI DSS o GDPR. La decisión de diseño clave radica en cómo estructurar las políticas: si usar un enfoque de 'deny by default' con excepciones explícitas o un modelo más permisivo. También es crucial considerar el impacto en la observabilidad y la depuración, ya que políticas mal configuradas pueden causar interrupciones de servicio difíciles de diagnosticar. La elección del CNI también es un trade-off importante, ya que algunos ofrecen capacidades más avanzadas (ej. políticas de capa 7 con Cilium) a cambio de mayor complejidad.