Introducción
Las políticas de red en Kubernetes permiten controlar el tráfico de red entre los pods dentro de un clúster. Estas políticas son esenciales para asegurar que solo el tráfico autorizado pueda fluir entre los diferentes componentes de una aplicación, mejorando así la seguridad y el aislamiento.
Conceptos Clave
Antes de profundizar en las políticas de red, es importante entender algunos conceptos clave:
- Pod Selector: Define a qué pods se aplica la política.
- Ingress: Controla el tráfico entrante a los pods seleccionados.
- Egress: Controla el tráfico saliente desde los pods seleccionados.
- Namespace: Las políticas de red son específicas de un namespace.
Creación de una Política de Red
Ejemplo Básico
A continuación, se muestra un ejemplo básico de una política de red que permite el tráfico entrante solo desde pods en el mismo namespace con una etiqueta específica.
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-same-namespace namespace: default spec: podSelector: matchLabels: role: db policyTypes: - Ingress ingress: - from: - podSelector: matchLabels: role: frontend
Explicación del Ejemplo
- apiVersion: La versión de la API de Kubernetes utilizada.
- kind: Tipo de recurso, en este caso,
NetworkPolicy
. - metadata: Información sobre la política, incluyendo el nombre y el namespace.
- spec: Especificaciones de la política.
- podSelector: Selecciona los pods a los que se aplica la política. En este caso, los pods con la etiqueta
role: db
. - policyTypes: Define los tipos de tráfico que la política controla. Aquí, solo
Ingress
. - ingress: Define las reglas para el tráfico entrante.
- from: Especifica las fuentes permitidas del tráfico entrante. En este caso, solo los pods con la etiqueta
role: frontend
.
- from: Especifica las fuentes permitidas del tráfico entrante. En este caso, solo los pods con la etiqueta
- podSelector: Selecciona los pods a los que se aplica la política. En este caso, los pods con la etiqueta
Ejercicio Práctico
Ejercicio 1: Crear una Política de Red para Egress
Crea una política de red que permita el tráfico saliente solo a un servicio específico en otro namespace.
Solución
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-egress-to-service namespace: default spec: podSelector: matchLabels: role: backend policyTypes: - Egress egress: - to: - namespaceSelector: matchLabels: name: other-namespace podSelector: matchLabels: role: api
Explicación de la Solución
- podSelector: Selecciona los pods con la etiqueta
role: backend
. - policyTypes: Define que la política controla el tráfico
Egress
. - egress: Define las reglas para el tráfico saliente.
- to: Especifica los destinos permitidos del tráfico saliente. En este caso, los pods con la etiqueta
role: api
en el namespaceother-namespace
.
- to: Especifica los destinos permitidos del tráfico saliente. En este caso, los pods con la etiqueta
Errores Comunes y Consejos
Errores Comunes
- No especificar
policyTypes
: Si no se especificapolicyTypes
, la política no tendrá efecto. - Selector de Pods Incorrecto: Asegúrate de que los selectores de pods coincidan con las etiquetas correctas.
- Namespace Incorrecto: Las políticas de red son específicas de un namespace. Asegúrate de que la política esté en el namespace correcto.
Consejos
- Prueba tus políticas: Utiliza herramientas como
kubectl
para verificar que las políticas de red están funcionando como se espera. - Documenta tus políticas: Mantén una buena documentación de tus políticas de red para facilitar el mantenimiento y la comprensión.
Conclusión
Las políticas de red en Kubernetes son una herramienta poderosa para controlar el tráfico de red entre los pods. Al entender y aplicar correctamente estas políticas, puedes mejorar significativamente la seguridad y el aislamiento de tus aplicaciones. En el próximo módulo, exploraremos el almacenamiento en Kubernetes, comenzando con los volúmenes.
Curso de Kubernetes
Módulo 1: Introducción a Kubernetes
- ¿Qué es Kubernetes?
- Arquitectura de Kubernetes
- Conceptos y Terminología Clave
- Configuración de un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
Módulo 2: Componentes Principales de Kubernetes
Módulo 3: Gestión de Configuración y Secretos
Módulo 4: Redes en Kubernetes
Módulo 5: Almacenamiento en Kubernetes
Módulo 6: Conceptos Avanzados de Kubernetes
Módulo 7: Monitoreo y Registro
- Monitoreo con Prometheus
- Registro con Elasticsearch, Fluentd y Kibana (EFK)
- Verificaciones de Salud y Sondas
- Servidor de Métricas
Módulo 8: Seguridad en Kubernetes
- Control de Acceso Basado en Roles (RBAC)
- Políticas de Seguridad de Pods
- Seguridad de Red
- Seguridad de Imágenes
Módulo 9: Escalado y Rendimiento
- Autoescalado Horizontal de Pods
- Autoescalado Vertical de Pods
- Autoescalado de Clúster
- Ajuste de Rendimiento
Módulo 10: Ecosistema y Herramientas de Kubernetes
Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real
- Despliegue de una Aplicación Web
- CI/CD con Kubernetes
- Ejecución de Aplicaciones con Estado
- Gestión Multi-Clúster