{"id":31173,"date":"2019-10-31T21:39:53","date_gmt":"2019-10-31T18:39:53","guid":{"rendered":"https:\/\/prohoster.info\/blog\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes\/"},"modified":"2019-10-31T21:39:53","modified_gmt":"2019-10-31T18:39:53","slug":"obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes","title":{"rendered":"Revisi\u00f3n y comparaci\u00f3n de controladores Ingress para Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Revisi\u00f3n y comparaci\u00f3n de controladores Ingress para Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3e6d3882a8f5a96a257fab4daaa230f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAl implementar un cl\u00faster de Kubernetes para una aplicaci\u00f3n espec\u00edfica, es fundamental comprender los requisitos que presenta la propia aplicaci\u00f3n, as\u00ed como los del negocio y los desarrolladores. Con esta informaci\u00f3n, se puede proceder a tomar decisiones arquitect\u00f3nicas y, en particular, elegir un controlador de Ingress espec\u00edfico, de los cuales hoy en d\u00eda hay una gran cantidad. Para proporcionar una visi\u00f3n b\u00e1sica de las opciones disponibles sin necesidad de estudiar numerosos art\u00edculos\/documentaci\u00f3n, hemos preparado este resumen, incluyendo los principales controladores de Ingress (listos para producci\u00f3n).<\/p>\n<p>Esperamos que esto ayude a nuestros colegas en la elecci\u00f3n de la soluci\u00f3n arquitect\u00f3nica; al menos ser\u00e1 un punto de partida para obtener m\u00e1s informaci\u00f3n y realizar experimentos pr\u00e1cticos. Previamente, hemos examinado otros materiales similares en la red y, curiosamente, no encontramos ninguno que sea m\u00e1s o menos completo y, sobre todo, estructurado. \u00a1As\u00ed que llenemos este vac\u00edo!<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Criterios<\/h2>\n<p>\nPara poder realizar comparaciones y obtener resultados \u00fatiles, es necesario entender no solo el \u00e1rea tem\u00e1tica, sino tambi\u00e9n tener una lista concreta de criterios que definir\u00e1n la direcci\u00f3n de la investigaci\u00f3n. Sin pretender analizar todos los posibles casos de uso de Ingress\/Kubernetes, hemos intentado destacar los requisitos m\u00e1s comunes para los controladores: est\u00e9n preparados para que toda su especificidad y particularidades deber\u00e1n estudiarse por separado.<\/p>\n<p>Pero comenzar\u00e9 con caracter\u00edsticas que se han vuelto tan habituales que est\u00e1n implementadas en todas las soluciones y no se consideran:<\/p>\n<ul>\n<li> descubrimiento de servicios din\u00e1mico;<\/li>\n<li> terminaci\u00f3n de SSL;<\/li>\n<li> trabajo con websockets.<\/li>\n<\/ul>\n<p>\nAhora, sobre los puntos de comparaci\u00f3n:<\/p>\n<h3>Protocolos soportados<\/h3>\n<p>\nUno de los criterios fundamentales para la elecci\u00f3n. Su software puede no operar con el est\u00e1ndar HTTP o requerir funcionar con m\u00faltiples protocolos a la vez. Si su caso es no est\u00e1ndar, aseg\u00farese de tener en cuenta este factor para evitar tener que reconfigurar el cl\u00faster m\u00e1s adelante. La lista de protocolos soportados var\u00eda entre todos los controladores.<\/p>\n<h3>Software en la base<\/h3>\n<p>\nHay varias aplicaciones en las que se basa el controlador. Las m\u00e1s populares son nginx, traefik, haproxy, envoy. En general, puede que no influya demasiado en c\u00f3mo se recibe y se transmite el tr\u00e1fico, pero siempre es \u00fatil conocer los matices y caracter\u00edsticas de lo que hay \"bajo el cap\u00f3\".<\/p>\n<h3>Enrutamiento de tr\u00e1fico<\/h3>\n<p>\n\u00bfEn qu\u00e9 se basa la decisi\u00f3n sobre la direcci\u00f3n del tr\u00e1fico hacia un servicio determinado? Por lo general, son el host y el path, pero tambi\u00e9n hay posibilidades adicionales.<\/p>\n<h3>Espacio de nombres dentro del cl\u00faster<\/h3>\n<p>\nEl espacio de nombres (namespace) es la capacidad de dividir l\u00f3gicamente los recursos en Kubernetes (por ejemplo, en stage, producci\u00f3n, etc.). Hay controladores Ingress que deben instalarse por separado en cada namespace (y entonces pueden dirigir el tr\u00e1fico <i>solo<\/i> en los pods de este espacio). Y hay algunos (y son la mayor\u00eda evidente) que operan globalmente en todo el cl\u00faster: en ellos, el tr\u00e1fico se dirige a cualquier pod del cl\u00faster, independientemente del espacio de nombres.<\/p>\n<h3>Muestras para upstreams<\/h3>\n<p>\n\u00bfC\u00f3mo se asegura la direcci\u00f3n del tr\u00e1fico hacia instancias saludables de la aplicaci\u00f3n o de los servicios? Hay opciones con chequeos activos y pasivos, reintentos (retries), interruptores de circuito <i>(para m\u00e1s detalles cons\u00faltese, por ejemplo, en <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">el art\u00edculo sobre Istio<\/a><\/noindex>)<\/i>, implementaciones propias de chequeos de salud (custom health checks), etc. Es un par\u00e1metro muy importante si tiene altos requisitos de disponibilidad y para sacar oportunamente a los servicios que hayan fallado de la balanceo.<\/p>\n<h3>Algoritmos de balanceo<\/h3>\n<p>\nAqu\u00ed hay muchas opciones: desde las tradicionales <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Round-robin_DNS\">round-robin<\/a><\/noindex> hasta ex\u00f3ticas como <noindex><a rel=\"nofollow\" href=\"http:\/\/www.loadbalancer.org\/blog\/load-balancing-windows-terminal-server-haproxy-and-rdp-cookies\/\">rdp-cookie<\/a><\/noindex>, as\u00ed como funcionalidades espec\u00edficas como <noindex><a rel=\"nofollow\" href=\"https:\/\/access.redhat.com\/solutions\/900933\">sesiones persistentes<\/a><\/noindex>.<\/p>\n<h3>Autenticaci\u00f3n<\/h3>\n<p>\n\u00bfQu\u00e9 esquemas de autorizaci\u00f3n soporta el controlador? Basic, digest, oauth, external-auth; creo que estas opciones deber\u00edan ser familiares. Este es un criterio importante si se utilizan muchos entornos para desarrolladores (y\/o simplemente cerrados), cuyo acceso se realiza a trav\u00e9s de Ingress. <\/p>\n<h3>Distribuci\u00f3n de tr\u00e1fico<\/h3>\n<p>\n\u00bfEl controlador soporta mecanismos comunes para la distribuci\u00f3n de tr\u00e1fico, como despliegues canarios (canary), pruebas A\/B, y espejeo de tr\u00e1fico (mirroring\/shadowing)? Este es un tema realmente delicado para las aplicaciones que requieren una gesti\u00f3n cuidadosa y precisa del tr\u00e1fico para las pruebas productivas, la depuraci\u00f3n de errores de productos sin estar en producci\u00f3n (o con p\u00e9rdidas m\u00ednimas), el an\u00e1lisis de tr\u00e1fico, etc.<\/p>\n<h3>Suscripci\u00f3n paga<\/h3>\n<p>\n\u00bfHay una opci\u00f3n de pago para el controlador, con funciones avanzadas y\/o soporte t\u00e9cnico?<\/p>\n<h3>Interfaz Gr\u00e1fica (Web UI)<\/h3>\n<p>\n\u00bfExisten interfaces gr\u00e1ficas para gestionar la configuraci\u00f3n del controlador? Principalmente para la 'comodidad' y\/o para aquellos que necesitan realizar cambios en la configuraci\u00f3n de Ingress, pero trabajar con plantillas 'crudas' es inc\u00f3modo. Puede ser \u00fatil en caso de que los desarrolladores deseen experimentar con el tr\u00e1fico sobre la marcha.<\/p>\n<h3>Validaci\u00f3n JWT<\/h3>\n<p>\nDisponibilidad de una verificaci\u00f3n integrada de tokens web JSON para autorizar y validar al usuario en la aplicaci\u00f3n final.<\/p>\n<h3>Opciones de personalizaci\u00f3n de la configuraci\u00f3n<\/h3>\n<p>\nExtensibilidad de las plantillas en el sentido de contar con mecanismos que permitan agregar directivas, banderas, etc., propias a las plantillas de configuraci\u00f3n est\u00e1ndar.<\/p>\n<h3>Mecanismos b\u00e1sicos de protecci\u00f3n contra DDOS<\/h3>\n<p>\nAlgoritmos sencillos de limitaci\u00f3n de tasa o versiones m\u00e1s complejas para filtrar tr\u00e1fico basado en direcciones, listas blancas, pa\u00edses, etc.<\/p>\n<h3>Seguimiento de solicitudes<\/h3>\n<p>\nCapacidades de observaci\u00f3n, seguimiento y depuraci\u00f3n de solicitudes desde los Ingress a servicios\/pods espec\u00edficos, y en ideal \u2014 tambi\u00e9n entre servicios\/pods.<\/p>\n<h3>WAF<\/h3>\n<p>\nSoporte <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Web_application_firewall\">firewall de aplicaci\u00f3n<\/a><\/noindex>.<\/p>\n<h2>Controladores Ingress<\/h2>\n<p>\nLa lista de controladores fue formulada basada en <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/ingress-controllers\/#additional-controllers\">la documentaci\u00f3n oficial de Kubernetes<\/a><\/noindex> y <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.google.com\/spreadsheets\/d\/16bxRgpO1H_Bn-5xVZ1WrR_I-0A-GOI6egmhvqqLMOmg\/edit\">esta tabla<\/a><\/noindex>. Algunos de ellos los hemos excluido de la revisi\u00f3n debido a su especificidad o baja difusi\u00f3n (etapa temprana de desarrollo). Los restantes se describen a continuaci\u00f3n. Comenzaremos con una descripci\u00f3n general de las soluciones y continuaremos con una tabla resumen.<\/p>\n<h3>Ingress de Kubernetes<\/h3>\n<p>\n<i>Sitio web: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/ingress-nginx\">github.com\/kubernetes\/ingress-nginx<\/a><\/noindex><\/i><br \/>\n<i>Licencia: Apache 2.0<\/i><\/p>\n<p>Este es el controlador oficial para Kubernetes, que es desarrollado por la comunidad. Como es evidente por el nombre, se basa en nginx y se complementa con un conjunto de plugins de Lua que se utilizan para implementar funcionalidades adicionales. Gracias a la popularidad de nginx y a las modificaciones m\u00ednimas que se realizan sobre \u00e9l al utilizarlo como controlador, esta opci\u00f3n puede ser la m\u00e1s sencilla y comprensible de configurar para un ingeniero promedio (con experiencia en web).<\/p>\n<h3>Ingress de NGINX Inc<\/h3>\n<p>\n<i>Sitio web: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/kubernetes-ingress\">github.com\/nginxinc\/kubernetes-ingress<\/a><\/noindex><\/i><br \/>\n<i>Licencia: Apache 2.0<\/i><\/p>\n<p>Producto oficial de los desarrolladores de nginx. Tiene una versi\u00f3n de pago basada en <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/products\/nginx\/\">NGINX Plus<\/a><\/noindex>. La idea principal es un alto nivel de estabilidad, compatibilidad hacia atr\u00e1s constante, ausencia de m\u00f3dulos externos y la velocidad mejorada declarada (en comparaci\u00f3n con el controlador oficial), lograda al prescindir de Lua. <\/p>\n<p>La versi\u00f3n gratuita est\u00e1 significativamente reducida, incluso en comparaci\u00f3n con el controlador oficial (debido a la falta de los mismos m\u00f3dulos de Lua). La versi\u00f3n de pago, sin embargo, tiene una funcionalidad adicional bastante amplia: m\u00e9tricas en tiempo real, validaci\u00f3n JWT, verificaciones de salud activas y m\u00e1s. Una ventaja importante sobre NGINX Ingress es el soporte completo para tr\u00e1fico TCP\/UDP (\u00a1y tambi\u00e9n en la versi\u00f3n comunitaria!). Desventaja \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/kubernetes-ingress\/issues\/464\">la falta de<\/a><\/noindex> funciones para la distribuci\u00f3n de tr\u00e1fico, lo cual, sin embargo, 'tiene la m\u00e1xima prioridad para los desarrolladores', pero requiere tiempo para su implementaci\u00f3n.<\/p>\n<h3>Kong Ingress<\/h3>\n<p>\n<i>Sitio web: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Kong\/kubernetes-ingress-controller\">github.com\/Kong\/kubernetes-ingress-controller<\/a><\/noindex><\/i><br \/>\n<i>Licencia: Apache 2.0<\/i><\/p>\n<p>Producto desarrollado por Kong Inc. en dos versiones: comercial y gratuita. Se basa en nginx, cuyas capacidades se han ampliado con un gran n\u00famero de m\u00f3dulos en Lua.<\/p>\n<p>Originalmente estaba dise\u00f1ado para procesar y enrutar solicitudes de API, es decir, como un API Gateway, sin embargo, actualmente se ha convertido en un controlador Ingress completo. Principales ventajas: muchos m\u00f3dulos adicionales (incluidos de desarrolladores externos), que son f\u00e1ciles de instalar y configurar y que permiten implementar una amplia gama de funcionalidades adicionales. Sin embargo, las funciones integradas ya ofrecen muchas posibilidades. La configuraci\u00f3n se realiza mediante recursos CRD.<\/p>\n<p>Una caracter\u00edstica importante del producto \u2014 trabajar dentro de un solo entorno (en lugar de cross-namespaced) es un tema controvertido: a algunos les parecer\u00e1 una desventaja (hay que crear entidades para cada entorno), mientras que para otros es una caracter\u00edstica (un<i>mayor audiencia.<\/i>mayor nivel de aislamiento, ya que si un controlador falla, el problema se limita a un solo entorno).<\/p>\n<h3>Traefik<\/h3>\n<p>\n<i>Sitio web: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/containous\/traefik\">github.com\/containous\/traefik<\/a><\/noindex><\/i><br \/>\n<i>Licencia: MIT<\/i><\/p>\n<p>Un proxy que fue dise\u00f1ado originalmente para manejar la enrutaci\u00f3n de solicitudes para microservicios y su entorno din\u00e1mico. De ah\u00ed muchas caracter\u00edsticas \u00fatiles: actualizaci\u00f3n de la configuraci\u00f3n sin reinicios, soporte para numerosos m\u00e9todos de balanceo, interfaz web, transmisi\u00f3n de m\u00e9tricas, soporte para varios protocolos, REST API, lanzamientos canary y mucho m\u00e1s. Un rasgo agradable tambi\u00e9n es el soporte de certificados de Let's Encrypt de forma nativa. El inconveniente es que para organizar alta disponibilidad (HA) el controlador necesitar\u00e1 establecer y conectar su propio almacenamiento KV.<\/p>\n<h3>HAProxy<\/h3>\n<p>\n<i>Sitio web: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jcmoraisjr\/haproxy-ingress\">github.com\/jcmoraisjr\/haproxy-ingress<\/a><\/noindex><\/i><br \/>\n<i>Licencia: Apache 2.0<\/i><\/p>\n<p>HAProxy es bien conocido como un proxy y balanceador de tr\u00e1fico. Dentro del cl\u00faster de Kubernetes, se ofrece una actualizaci\u00f3n 'suave' de la configuraci\u00f3n (sin p\u00e9rdida de tr\u00e1fico), descubrimiento de servicios basado en DNS, configuraci\u00f3n din\u00e1mica mediante API. La posibilidad de personalizaci\u00f3n completa de la plantilla de configuraciones mediante la sustituci\u00f3n de CM, as\u00ed como las funciones de la biblioteca Sprig, pueden resultar atractivas. En general, la soluci\u00f3n se centra en la alta velocidad de trabajo, su optimizaci\u00f3n y eficiencia en el uso de recursos. La ventaja del controlador es el soporte de un n\u00famero r\u00e9cord de diferentes m\u00e9todos de balanceo.<\/p>\n<h3>Voyager<\/h3>\n<p>\n<i>Sitio web: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/appscode\/voyager\">github.com\/appscode\/voyager<\/a><\/noindex><\/i><br \/>\n<i>Licencia: Apache 2.0<\/i><\/p>\n<p>Un controlador basado en HAproxy que se posiciona como una soluci\u00f3n universal, con amplias funcionalidades en numerosos proveedores. Ofrece la posibilidad de balancear tr\u00e1fico en L7 y L4, siendo el balanceo de tr\u00e1fico TCP L4 una de las caracter\u00edsticas clave de la soluci\u00f3n.<\/p>\n<h3>Contour<\/h3>\n<p>\n<i>Sitio web: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/heptio\/contour\">github.com\/heptio\/contour<\/a><\/noindex><\/i><br \/>\n<i>Licencia: Apache 2.0<\/i><\/p>\n<p>Esta soluci\u00f3n no solo se basa en Envoy: fue desarrollada <i>junto<\/i> con los autores de este popular proxy. Una caracter\u00edstica importante es la capacidad de dividir el control de recursos Ingress mediante recursos IngressRoute CRD. Para organizaciones con m\u00faltiples equipos de desarrollo que utilizan un solo cl\u00faster, esto ayuda a maximizar la seguridad en el manejo del tr\u00e1fico en contornos adyacentes y protegerlos de errores al modificar recursos Ingress.<\/p>\n<p>Tambi\u00e9n se ofrece un conjunto ampliado de m\u00e9todos de balanceo (incluye el espejeo de solicitudes, reintentos autom\u00e1ticos, limitaci\u00f3n por tasa de solicitudes y mucho m\u00e1s), monitoreo detallado del flujo de tr\u00e1fico y fallos. Para algunos, puede ser un inconveniente significativo la falta de soporte para sesiones persistentes (aunque trabaja... <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/heptio\/contour\/issues\/361\">ya se est\u00e1n llevando a cabo<\/a><\/noindex>).<\/p>\n<h3>Istio Ingress<\/h3>\n<p>\n<i>Sitio web: <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/docs\/tasks\/traffic-management\/ingress\/\">istio.io\/docs\/tasks\/traffic-management\/ingress<\/a><\/noindex><\/i><br \/>\n<i>Licencia: Apache 2.0<\/i><\/p>\n<p>Una soluci\u00f3n integral de service mesh que no solo act\u00faa como controlador Ingress, gestionando el tr\u00e1fico entrante desde el exterior, sino que tambi\u00e9n controla todo el tr\u00e1fico dentro del cl\u00faster. \"Detr\u00e1s de las c\u00e1maras\", como proxy sidecar para cada servicio, se utiliza Envoy. Es, en esencia, una gran herramienta que \"puede hacer de todo\", y su idea principal es la m\u00e1xima gestionabilidad, escalabilidad, seguridad y transparencia. Con ello, puedes ajustar la ruta de tr\u00e1fico, la autorizaci\u00f3n de acceso entre servicios, el balanceo, el monitoreo, lanzamientos canarios y mucho m\u00e1s. Lee m\u00e1s sobre Istio en la serie de art\u00edculos \"<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">Regreso a los microservicios con Istio<\/a><\/noindex>\u00bb.<\/p>\n<h3>Ambassador<\/h3>\n<p>\n<i>Sitio web: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/datawire\/ambassador\">github.com\/datawire\/ambassador<\/a><\/noindex><\/i><br \/>\n<i>Licencia: Apache 2.0<\/i><\/p>\n<p>Otra soluci\u00f3n basada en Envoy. Tiene versiones gratuitas y comerciales. Se posiciona como \"totalmente nativa de Kubernetes\", lo que ofrece ventajas correspondientes (integraci\u00f3n estrecha con los m\u00e9todos y entidades del cl\u00faster K8s).<\/p>\n<h2>Tabla comparativa<\/h2>\n<p>\nEntonces, la culminaci\u00f3n del art\u00edculo es esta enorme tabla:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ss\/wh\/lj\/sswhljo-rjkms7nadtyewqkxrdi.png\"><img decoding=\"async\" alt=\"Revisi\u00f3n y comparaci\u00f3n de controladores Ingress para Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3a6c552df6b8b7b6a88517046fa7a275.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Es clicable para permitir una visualizaci\u00f3n m\u00e1s detallada, as\u00ed como disponible en formato <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1xjff2AMS6QXSdh8E8ay_uNMoUa2OLIanCallvkDvAy0\/edit#gid=0\">Google Sheets<\/a><\/noindex>.<\/p>\n<h2>Resumiendo<\/h2>\n<p>\nEl objetivo del art\u00edculo es proporcionar una comprensi\u00f3n m\u00e1s completa (aunque no exhaustiva) de qu\u00e9 opci\u00f3n elegir en su caso particular. Como suele ser, cada controlador tiene sus ventajas y desventajas\u2026<\/p>\n<p>El Ingress cl\u00e1sico de Kubernetes es valorado por su accesibilidad y confiabilidad, ofreciendo suficientes caracter\u00edsticas en general. Sin embargo, si hay requisitos m\u00e1s altos en t\u00e9rminos de estabilidad, funciones y desarrollo, deber\u00edas considerar el Ingress con NGINX Plus y una suscripci\u00f3n paga. Kong tiene un extenso conjunto de complementos (y, por ende, las capacidades que ofrecen), aumentando incluso m\u00e1s en su versi\u00f3n paga. Ofrece amplias posibilidades como API Gateway, y configuraci\u00f3n din\u00e1mica basada en recursos CRD, adem\u00e1s de los servicios b\u00e1sicos de Kubernetes.<\/p>\n<p>Si tienes requisitos m\u00e1s altos en balanceo y m\u00e9todos de autorizaci\u00f3n, considera Traefik y HAProxy. Estos son proyectos de c\u00f3digo abierto, probados a lo largo de los a\u00f1os, muy estables y en activo desarrollo. Contour apareci\u00f3 hace un par de a\u00f1os, pero todav\u00eda luce demasiado joven y solo tiene funcionalidades b\u00e1sicas a\u00f1adidas sobre Envoy. Si hay requisitos de tener\/usar un WAF antes de la aplicaci\u00f3n, deber\u00edas considerar el mismo Ingress de Kubernetes o HAProxy.<\/p>\n<p>Los productos m\u00e1s ricos en funcionalidades son aquellos construidos sobre la base de Envoy, especialmente Istio. Se presenta como una soluci\u00f3n integral que \"puede hacerlo todo\", lo que, sin embargo, implica un umbral de entrada significativamente m\u00e1s alto en t\u00e9rminos de configuraci\u00f3n\/lanzamiento\/administraci\u00f3n, en comparaci\u00f3n con otras soluciones.<\/p>\n<p>Hemos elegido y seguimos utilizando como controlador est\u00e1ndar el Ingress de Kubernetes, que cubre el 80-90% de nuestras necesidades. Es bastante confiable, f\u00e1cil de configurar y expandir. En general, en ausencia de requisitos espec\u00edficos, deber\u00eda ser adecuado para la mayor\u00eda de cl\u00fasteres\/aplicaciones. De productos igualmente vers\u00e1tiles y relativamente simples, se pueden recomendar Traefik y HAProxy.<\/p>\n<h2>P.D.<\/h2>\n<p>\nTambi\u00e9n puedes leer en nuestro blog:<\/p>\n<ul>\n<li> \u00abRegreso a los microservicios junto con Istio\u00bb: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">parte 1 (introducci\u00f3n a las capacidades principales)<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/440378\/\">parte 2 (ruteo, gesti\u00f3n del tr\u00e1fico)<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/443668\/\">parte 3 (autenticaci\u00f3n y autorizaci\u00f3n)<\/a><\/noindex>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/445596\/\">Consejos y trucos de Kubernetes: p\u00e1ginas de error personalizadas en NGINX Ingress<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/427745\/\">Consejos y trucos de Kubernetes: acceso a entornos de desarrollo<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447180\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kubernetes \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a \u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0441\u0443\u0440\u0441\u0443 \u0441\u0430\u043c\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0431\u0438\u0437\u043d\u0435\u0441 \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438. \u041f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u044d\u0442\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043a \u0432\u044b\u0431\u043e\u0440\u0443 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e Ingress-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u043a\u043e\u0438\u0445 \u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u0445 \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23140,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31173","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kubernetes \u0434\u043b\u044f.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041e\u0431\u0437\u043e\u0440 \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 Ingress \u0434\u043b\u044f Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kubernetes \u0434\u043b\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:39:53+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:39:53+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Resumen y comparaci\u00f3n de controladores Ingress para Kubernetes | ProHoster","description":"Al iniciar un cl\u00faster de Kubernetes para.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041e\u0431\u0437\u043e\u0440 \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 Ingress \u0434\u043b\u044f Kubernetes | ProHoster","og:description":"\u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kubernetes \u0434\u043b\u044f.","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:39:53+00:00","article:modified_time":"2019-10-31T18:39:53+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31173","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 04:53:04","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:21:32","updated":"2026-01-21 04:53:04","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/31173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=31173"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/31173\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/23140"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=31173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=31173"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=31173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}