¿Qué son ingress y egress en Kubernetes?

Vista aérea de dos personas sentadas en una mesa curva

Autores

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

¿Qué son ingress y egress en Kubernetes?

En Kubernetes, ingress y egress se refieren a cómo el tráfico de red entra y sale de un entorno de aplicaciones en contenedores nativos de la nube.

  • Ingress rige la forma en que los usuarios o sistemas externos acceden a los servicios dentro de un clúster de Kubernetes.
  • La salida define cómo los servicios internos acceden a los sistemas fuera del clúster, como API, bases de datos o herramientas de terceros.

Estos flujos de tráfico son fundamentales para ejecutar aplicaciones modernas dentro de la infraestructura de la nube. Su gestión eficaz admite una amplia gama de casos de uso, como el enrutamiento del tráfico de clientes a aplicaciones web o el acceso seguro a API de terceros.

En el mundo actual impulsado por el cloud computing, Kubernetes potencia cargas de trabajo cada vez más críticas. Como resultado, la capacidad granular de controlar el tráfico se ha convertido en esencial para mantener el rendimiento, aplicar medidas de seguridad y cumplir con los requisitos de cumplimiento.

¿Cómo funciona Kubernetes?

Kubernetes, también conocido como k8s o kube, es una plataforma de orquestación de contenedores que automatiza la implementación, el escalado y el mantenimiento de aplicaciones en un grupo de recursos informáticos. En lugar de gestionar los servidores directamente, los equipos de DevOps y TI utilizan Kubernetes para ejecutar aplicaciones en contenedores, unidades de software ligeras y autónomas que incluyen todo lo necesario para ejecutar una aplicación.

Según un informe de la CNCF, Kubernetes es el segundo proyecto de código abierto más grande del mundo (después de Linux) y la principal herramienta de orquestación de contenedores para el 71 % de las empresas Fortune 100.

Docker es la herramienta más utilizada para crear imágenes de contenedores. En Kubernetes, los contenedores se agrupan en unidades denominadas pods, que son las unidades desplegables más pequeñas y pueden contener uno o varios contenedores. Kubernetes programa estos pods en un clúster de máquinas conocidas como nodos.

Los pods y sus recursos relacionados se organizan en espacios de nombres, que proporcionan una separación lógica para gestionar diferentes equipos, proyectos o entornos dentro del mismo clúster. Kubernetes gestiona la funcionalidad clave del clúster, como el equilibrio de carga, la conmutación por error, el escalado y la autorreparación, abstrayendo gran parte de la complejidad de la infraestructura de bajo nivel.

Dentro de un clúster de Kubernetes, los servicios a menudo necesitan comunicarse entre sí y, a veces, con sistemas externos. Kubernetes gestiona y controla el tráfico de forma que aísla los componentes internos para mejorar el rendimiento y la seguridad. Como resultado, tanto el tráfico entrante como el saliente deben definirse, gestionarse y configurarse explícitamente.

Ingress vs. egress de Kubernetes

En informática básica, ingress frente a la salida se refiere al tráfico entrante frente al saliente en una red o sistema. Ingress y egress de Kubernetes proporcionan a los equipos de la plataforma un marco controlado para gobernar cómo fluye el tráfico dentro y fuera del clúster de Kubernetes. Este aspecto es esencial para operar entornos de producción seguros y escalables.

IBM Cloud

Red Hat OpenShift AI en IBM Cloud: Implemente cargas de trabajo de IA

Utilice las capacidades de IA con Red Hat OpenShift on IBM Cloud. Este vídeo explora cómo crear, implementar y gestionar cargas de trabajo de IA de manera eficiente con una plataforma escalable de operaciones de machine learning.

¿Qué es ingress en Kubernetes?

Ingress se refiere al tráfico entrante de usuarios o sistemas externos a un clúster de Kubernetes, normalmente a través de HTTP o HTTPS (ambos funcionan con el protocolo TCP). En lugar de exponer todos los servicios directamente a Internet, las organizaciones definen las reglas de entrada a través de un recurso ingress. Este recurso se escribe normalmente en YAML, que indica a Kubernetes cómo enrutar el tráfico según criterios como las rutas de URL o los nombres de dominio.

Las reglas de ingress se aplican mediante un controlador de entrada, una pieza de software (a menudo basada en NGINX u otro proxy inverso) que sirve como punto de entrada real. El controlador recibe las solicitudes entrantes, descifra el tráfico si es necesario y lo reenvía al servicio correcto dentro del clúster.

Por ejemplo, las reglas de ingress pueden configurarse para hacer lo siguiente:

  • Dirigir el tráfico a api.company.com a un servicio de API de backend que gestione las solicitudes de datos
  • Dirigir el tráfico a app.company.com hacia una aplicación frontend con la que interactúen los usuarios.
  • Gestionar todas las solicitudes HTTPS a través de un único certificado TLS gestionado en la capa de ingress de Kubernetes, simplificando la seguridad y la gestión de certificados.

Beneficios de ingress en Kubernetes

  • Rentabilidad: ingress permite que varios servicios compartan un único equilibrador de carga externo, lo que reduce los costes de infraestructura de TI, especialmente en entornos de microservicio con muchas aplicaciones implementadas de forma independiente.
  • Operaciones simplificadas: el enrutamiento centralizado, la configuración de dominios y la gestión de certificados ayudan a reducir la complejidad administrativa y garantizan la coherencia entre los servicios.
  • Seguridad mejorada: la terminación SSL/TLS para el tráfico de entrada se produce en un único punto de control, y las políticas como la limitación de velocidad, la autenticación o los firewalls de aplicaciones web se pueden aplicar de manera uniforme. Esta configuración ayuda a prevenir amenazas de seguridad comunes, como el acceso no autorizado, al aplicar controles de seguridad antes de que el tráfico llegue a los servicios de backend.
  • Mejor escalabilidad: ingress admite el enrutamiento basado en rutas y nombres de host, lo que facilita la ampliación de los servicios detrás de un único punto de entrada flexible. Por ejemplo, el enrutamiento basado en rutas de API permite a los equipos escalar servicios de forma independiente sin añadir nuevos destinos externos.

Ingress en comparación con los tipos de servicio de Kubernetes

Kubernetes proporciona varios métodos integrados para exponer servicios fuera del clúster. El recurso ingress funciona con determinados tipos de servicio pero ofrece un enfoque más flexible y centralizado, especialmente para el tráfico basado en la web.

Estos son algunos de los tipos de servicio más comunes:

  • ClusterIP expone los servicios solo dentro del clúster. Es útil para la comunicación interna de servicio a servicio, pero no se puede acceder a él desde el exterior.
  • NodePort abre un puerto específico en cada nodo del clúster para exponer un servicio externamente. Aunque es simple, no es flexible y expone directamente la infraestructura a nivel de nodo, lo que plantea desafíos operativos y de seguridad.
  • LoadBalancer aprovisiona un balanceador de cargas gestionado por el proveedor de servicios en la nube para cada servicio. Esto funciona bien para el acceso externo, pero no se puede escalar de manera eficiente, ya que cada nuevo servicio requiere su propio equilibrador de carga, lo que aumenta la complejidad y el coste.
  • Gateway API actúa como una puerta de enlace API y proporciona un enrutamiento de tráfico avanzado, flexible y extensible y una gestión de políticas más allá de los recursos tradicionales de ingress.

En comparación, el recurso ingress permite acceder a varios servicios a través de una única dirección IP externa mediante el uso de reglas de enrutamiento inteligentes, basadas en nombres de dominio o rutas. Centraliza el manejo y el control del tráfico HTTP(S), lo que lo convierte en una opción sólida para las cargas de trabajo de producción.

¿Qué es egress en Kubernetes?

Egress se refiere al tráfico saliente, cuando los servicios dentro del clúster de Kubernetes necesitan comunicarse con destinos o sistemas de tráfico externos (por ejemplo, API, servicios cloud, bases de datos, etc.). Aunque Kubernetes permite el tráfico saliente sin restricciones de forma predeterminada, esta política abierta rara vez es adecuada para entornos de producción.

Las organizaciones suelen querer controlar y supervisar qué servicios pueden conectarse a endpoints externos, tanto por motivos de seguridad como de cumplimiento. Por ejemplo, una empresa de venta minorista puede querer que su servicio de pago llegue solo a las pasarelas de pago aprobadas y bloquee todos los demás destinos.

Cómo gestionar egress en Kubernetes

Kubernetes proporciona varios métodos para gestionar la salida de forma eficaz y segura. Al implementar estos controles, las organizaciones pueden garantizar que solo el tráfico autorizado fluya a redes externas, lo que mejora la seguridad y el cumplimiento.

Políticas de red

Las políticas de red de Kubernetes pueden restringir qué pods están permitidos para hacer conexiones de salida y especificar las direcciones o dominios que pueden alcanzar, a menudo utilizando la notación CIDR para los rangos de IP. Estas políticas admiten modelos zero trust al permitir solo la comunicación explícitamente autorizada. Las reglas de egress dentro de estas políticas de red definen las restricciones del tráfico saliente, controlando a qué destinos externos pueden acceder los pods.

Pasarelas de egress

Las puertas de enlace de egress, a menudo implementadas como parte de una malla de servicios, pueden enrutar todo el tráfico saliente a través de un punto de control monitorizado, lo que permite un control avanzado del tráfico, elcifrado y la observabilidad.

Nodos de egress dedicados

También se pueden utilizar nodos de egress dedicados o puertas de enlace NAT para centralizar y registrar las conexiones salientes, proporcionando trazabilidad y un mejor aislamiento del rendimiento.

Beneficios de egress en Kubernetes

  • Protección de datos sólida: las políticas de red de egress ayudan a restringir el tráfico saliente y reducen el riesgo de que se filtren datos o comprometan los servicios que se conectan a endpoints malintencionados.
  • Cumplimiento: el control del tráfico de salida de Kubernetes garantiza que las cargas de trabajo confidenciales cumplan con los requisitos normativos al limitar las conexiones a los endpoints aprobados y proporcionar visibilidad en las auditorías.
  • Mejor control de costes: la gestión del tráfico de salida ayuda a evitar cargos inesperados en la nube por llamadas salientes incontroladas o grandes transferencias de datos.
  • Observabilidad mejorada: la gestión del tráfico de salida ofrece visibilidad de los sistemas externos en los que se basan las aplicaciones, lo que permite la gestión de los proveedores, la depuración y la identificación de las dependencias de los servicios externos.
Soluciones relacionadas
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud es una plataforma de contenedores OpenShift (OCP) totalmente gestionada.

Descubra Red Hat OpenShift
Soluciones de contenedores

Las soluciones de contenedores ejecutan y amplían cargas de trabajo en contenedores con seguridad, innovación de código abierto e implementación rápida.

Explore los contenedores
Servicios de consultoría en la nube 

Desbloquee nuevas capacidades e impulse la agilidad empresarial con los servicios de consultoría de nube de IBM. Descubra cómo cocrear soluciones, acelerar la transformación digital y optimizar el rendimiento mediante estrategias de nube híbrida y colaboraciones con expertos.

Servicio en la nube
Dé el siguiente paso

Comience con una plataforma Red Hat OpenShift totalmente gestionada o explore la flexibilidad del ecosistema IBM Cloud Kubernetes. Acelere su proceso de desarrollo e implementación con soluciones escalables y seguras adaptadas a sus necesidades.

  1. Descubra Red Hat OpenShift
  2. Explore Kubernetes