{"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\/pt\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes","title":{"rendered":"Revis\u00e3o e compara\u00e7\u00e3o de controladores Ingress para Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Revis\u00e3o e compara\u00e7\u00e3o de controladores Ingress para Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3e6d3882a8f5a96a257fab4daaa230f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAo iniciar um cluster Kubernetes para um aplicativo espec\u00edfico, \u00e9 necess\u00e1rio compreender quais requisitos o pr\u00f3prio aplicativo, os neg\u00f3cios e os desenvolvedores imp\u00f5em a esse recurso. Com essas informa\u00e7\u00f5es em m\u00e3os, \u00e9 poss\u00edvel come\u00e7ar a tomar decis\u00f5es arquitet\u00f4nicas e, em particular, escolher um controlador de Ingress espec\u00edfico, dos quais j\u00e1 existem muitos dispon\u00edveis hoje. Para fornecer uma vis\u00e3o b\u00e1sica das op\u00e7\u00f5es dispon\u00edveis sem a necessidade de estudar v\u00e1rios artigos\/documenta\u00e7\u00e3o, preparamos esta vis\u00e3o geral, incluindo os principais controladores de Ingress (prontos para produ\u00e7\u00e3o).<\/p>\n<p>Esperamos que isso ajude os colegas na escolha de solu\u00e7\u00f5es arquitet\u00f4nicas \u2014 pelo menos, ser\u00e1 um ponto de partida para obter mais informa\u00e7\u00f5es detalhadas e para experimentos pr\u00e1ticos. Inicialmente, estudamos outros materiais semelhantes na internet e, estranhamente, n\u00e3o encontramos uma \u00fanica vis\u00e3o geral que fosse mais ou menos completa e, principalmente \u2014 estruturada. Ent\u00e3o, vamos preencher essa lacuna!<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Crit\u00e9rios<\/h2>\n<p>\nPara, em princ\u00edpio, realizar compara\u00e7\u00f5es e obter resultados \u00fateis, \u00e9 preciso entender n\u00e3o apenas o dom\u00ednio do assunto, mas tamb\u00e9m ter uma lista concreta de crit\u00e9rios que definem a dire\u00e7\u00e3o da pesquisa. Sem pretender analisar todos os casos poss\u00edveis de uso do Ingress\/Kubernetes, procuramos destacar os requisitos mais comuns para os controladores \u2014 esteja preparado para que todas as especificidades ainda precisar\u00e3o ser estudadas separadamente.<\/p>\n<p>Mas come\u00e7arei com caracter\u00edsticas que se tornaram t\u00e3o familiares que est\u00e3o implementadas em todas as solu\u00e7\u00f5es e n\u00e3o s\u00e3o discutidas:<\/p>\n<ul>\n<li> descoberta din\u00e2mica de servi\u00e7os (service discovery);<\/li>\n<li> termina\u00e7\u00e3o SSL;<\/li>\n<li> trabalho com websockets.<\/li>\n<\/ul>\n<p>\nAgora \u2014 sobre os pontos de compara\u00e7\u00e3o:<\/p>\n<h3>Protocolos suportados<\/h3>\n<p>\nUm dos crit\u00e9rios fundamentais para a escolha. Seu software pode n\u00e3o funcionar com HTTP padr\u00e3o ou pode exigir o uso de m\u00faltiplos protocolos simultaneamente. Se esse for seu caso \u2014 n\u00e3o padr\u00e3o, considere esse fator, para n\u00e3o ter que reconfigurar o cluster depois. A lista de protocolos suportados varia entre os controladores.<\/p>\n<h3>Software na base<\/h3>\n<p>\nExistem v\u00e1rias op\u00e7\u00f5es de aplicativos nos quais o controlador \u00e9 baseado. Os mais populares s\u00e3o nginx, traefik, haproxy, envoy. De forma geral, isso pode n\u00e3o afetar muito como o tr\u00e1fego \u00e9 recebido e transmitido, mas sempre \u00e9 bom conhecer os potenciais detalhes e caracter\u00edsticas do que est\u00e1 \"sob o cap\u00f4\".<\/p>\n<h3>Roteamento de tr\u00e1fego<\/h3>\n<p>\nCom base em que se pode decidir a dire\u00e7\u00e3o do tr\u00e1fego para um ou outro servi\u00e7o? Normalmente, s\u00e3o o host e o caminho, mas podem haver tamb\u00e9m op\u00e7\u00f5es adicionais.<\/p>\n<h3>Espa\u00e7o de nomes no cluster<\/h3>\n<p>\nO espa\u00e7o de nomes (namespace) \u00e9 a possibilidade de dividir logicamente os recursos no Kubernetes (por exemplo, em stage, produ\u00e7\u00e3o, etc.). Existem controladores Ingress que precisam ser instalados separadamente em cada namespace (e ent\u00e3o podem direcionar o tr\u00e1fego <i>apenas<\/i> nos pods deste namespace). E h\u00e1 aqueles (e eles s\u00e3o a grande maioria) que operam globalmente em todo o cluster \u2014 neles, o tr\u00e1fego \u00e9 direcionado para qualquer pod do cluster, independentemente do namespace.<\/p>\n<h3>A amostra para upstreams<\/h3>\n<p>\nDe que maneira \u00e9 garantido que o tr\u00e1fego seja direcionado para inst\u00e2ncias saud\u00e1veis do aplicativo, servi\u00e7os? Existem op\u00e7\u00f5es com verifica\u00e7\u00f5es ativas e passivas, tentativas repetidas (retries), circuit breakers <i>(para mais informa\u00e7\u00f5es, veja, por exemplo, a <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">mat\u00e9ria sobre Istio<\/a><\/noindex>)<\/i>, implementa\u00e7\u00f5es personalizadas de verifica\u00e7\u00f5es de estado (custom health checks) etc. \u00c9 um par\u00e2metro bastante importante se voc\u00ea tem altas exig\u00eancias de disponibilidade e para remo\u00e7\u00e3o oportuna de servi\u00e7os que falharam da balancea\u00e7\u00e3o.<\/p>\n<h3>Algoritmos de balanceamento<\/h3>\n<p>\nAqui existem in\u00fameras op\u00e7\u00f5es: desde os tradicionais <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Round-robin_DNS\">round-robin<\/a><\/noindex> at\u00e9 op\u00e7\u00f5es 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>, al\u00e9m de oportunidades espec\u00edficas como <noindex><a rel=\"nofollow\" href=\"https:\/\/access.redhat.com\/solutions\/900933\">sess\u00f5es persistentes<\/a><\/noindex>.<\/p>\n<h3>Autentica\u00e7\u00e3o<\/h3>\n<p>\nQuais esquemas de autoriza\u00e7\u00e3o o controlador suporta? Basic, digest, oauth, external-auth \u2014 acredito que essas op\u00e7\u00f5es devem ser familiares. Este \u00e9 um crit\u00e9rio importante se muitas interfaces para desenvolvedores (e\/ou simplesmente \u00e1reas fechadas) s\u00e3o usadas, acesso ao qual \u00e9 realizado atrav\u00e9s do Ingress. <\/p>\n<h3>Distribui\u00e7\u00e3o de tr\u00e1fego<\/h3>\n<p>\nO controlador suporta mecanismos frequentemente usados para distribui\u00e7\u00e3o de tr\u00e1fego, como implementa\u00e7\u00f5es can\u00e1rias (canary), testes A\/B, espelhamento de tr\u00e1fego (mirroring\/shadowing)? Este \u00e9 um tema realmente delicado para aplica\u00e7\u00f5es que exigem um controle cuidadoso e preciso do tr\u00e1fego para testes produtivos, depura\u00e7\u00e3o de erros de produto fora do ambiente de produ\u00e7\u00e3o (ou com perdas m\u00ednimas), an\u00e1lise de tr\u00e1fego, etc.<\/p>\n<h3>Assinatura paga<\/h3>\n<p>\nH\u00e1 uma vers\u00e3o paga do controlador, com funcionalidades estendidas e\/ou suporte t\u00e9cnico?<\/p>\n<h3>Interface Gr\u00e1fica (Web UI)<\/h3>\n<p>\nExiste alguma interface gr\u00e1fica para gerenciar a configura\u00e7\u00e3o do controlador? Principalmente para facilitar o uso e\/ou para aqueles que precisam fazer altera\u00e7\u00f5es na configura\u00e7\u00e3o do Ingress, mas trabalhar com templates 'brutos' \u00e9 inconveniente. Pode ser \u00fatil caso os desenvolvedores queiram realizar experimentos com o tr\u00e1fego em tempo real.<\/p>\n<h3>Valida\u00e7\u00e3o JWT<\/h3>\n<p>\nA presen\u00e7a de verifica\u00e7\u00e3o embutida de tokens web JSON para autoriza\u00e7\u00e3o e valida\u00e7\u00e3o do usu\u00e1rio em aplicativos finais.<\/p>\n<h3>Possibilidades de customiza\u00e7\u00e3o da configura\u00e7\u00e3o<\/h3>\n<p>\nA extensibilidade dos templates no sentido de ter mecanismos que permitam adicionar diretrizes, flags, etc., pr\u00f3prias aos templates de configura\u00e7\u00e3o padr\u00e3o.<\/p>\n<h3>Mecanismos b\u00e1sicos de prote\u00e7\u00e3o contra DDoS<\/h3>\n<p>\nAlgoritmos simples de rate limit ou variantes mais complexas de filtragem de tr\u00e1fego com base em endere\u00e7os, listas brancas, pa\u00edses, etc.<\/p>\n<h3>Rastreamento de requisi\u00e7\u00f5es<\/h3>\n<p>\nRecursos de monitoramento, rastreamento e depura\u00e7\u00e3o de solicita\u00e7\u00f5es de Ingress para servi\u00e7os\/pods espec\u00edficos, e idealmente \u2014 entre servi\u00e7os\/pods tamb\u00e9m.<\/p>\n<h3>WAF<\/h3>\n<p>\nSuporte <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Web_application_firewall\">firewall de aplica\u00e7\u00e3o<\/a><\/noindex>.<\/p>\n<h2>Controladores Ingress<\/h2>\n<p>\nA lista de controladores foi compilada com base na <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/ingress-controllers\/#additional-controllers\">documenta\u00e7\u00e3o oficial do Kubernetes<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.google.com\/spreadsheets\/d\/16bxRgpO1H_Bn-5xVZ1WrR_I-0A-GOI6egmhvqqLMOmg\/edit\">esta tabela<\/a><\/noindex>. Alguns deles foram exclu\u00eddos da revis\u00e3o devido \u00e0 especificidade ou baixa dissemina\u00e7\u00e3o (fase inicial de desenvolvimento). Os restantes s\u00e3o discutidos abaixo. Come\u00e7aremos com uma descri\u00e7\u00e3o geral das solu\u00e7\u00f5es e continuaremos com uma tabela resumida.<\/p>\n<h3>Ingress do Kubernetes<\/h3>\n<p>\n<i>Site: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/ingress-nginx\">github.com\/kubernetes\/ingress-nginx<\/a><\/noindex><\/i><br \/>\n<i>Licen\u00e7a: Apache 2.0<\/i><\/p>\n<p>Este \u00e9 o controlador oficial para Kubernetes, que \u00e9 desenvolvido pela comunidade. Como o nome sugere, ele \u00e9 baseado no nginx e complementado por um conjunto de plugins Lua usados para implementar funcionalidades adicionais. Devido \u00e0 popularidade do nginx e \u00e0s modifica\u00e7\u00f5es m\u00ednimas feitas sobre ele ao ser usado como controlador, essa op\u00e7\u00e3o pode ser a mais simples e compreens\u00edvel para configura\u00e7\u00e3o para engenheiros m\u00e9dios (com experi\u00eancia em web).<\/p>\n<h3>Ingress da NGINX Inc<\/h3>\n<p>\n<i>Site: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/kubernetes-ingress\">github.com\/nginxinc\/kubernetes-ingress<\/a><\/noindex><\/i><br \/>\n<i>Licen\u00e7a: Apache 2.0<\/i><\/p>\n<p>Produto oficial dos desenvolvedores do nginx. Possui uma vers\u00e3o paga, baseada em <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/products\/nginx\/\">NGINX Plus<\/a><\/noindex>A ideia principal \u00e9 um alto n\u00edvel de estabilidade, compatibilidade cont\u00ednua, aus\u00eancia de m\u00f3dulos externos e a velocidade aumentada (em compara\u00e7\u00e3o com o controlador oficial), alcan\u00e7ada ao abrir m\u00e3o do Lua. <\/p>\n<p>A vers\u00e3o gratuita \u00e9 significativamente reduzida, mesmo em compara\u00e7\u00e3o com o controlador oficial (devido \u00e0 aus\u00eancia dos mesmos m\u00f3dulos Lua). A vers\u00e3o paga, por sua vez, possui um conjunto amplo de funcionalidades adicionais: m\u00e9tricas em tempo real, valida\u00e7\u00e3o JWT, verifica\u00e7\u00f5es de sa\u00fade ativas e mais. Uma importante vantagem sobre o NGINX Ingress \u00e9 o suporte completo ao tr\u00e1fego TCP\/UDP (incluindo na vers\u00e3o comunit\u00e1ria!). Desvantagem \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/kubernetes-ingress\/issues\/464\">a aus\u00eancia<\/a><\/noindex> de recursos de distribui\u00e7\u00e3o de tr\u00e1fego, o que, no entanto, \"tem m\u00e1xima prioridade para os desenvolvedores\", mas requer tempo para implementa\u00e7\u00e3o.<\/p>\n<h3>Kong Ingress<\/h3>\n<p>\n<i>Site: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Kong\/kubernetes-ingress-controller\">github.com\/Kong\/kubernetes-ingress-controller<\/a><\/noindex><\/i><br \/>\n<i>Licen\u00e7a: Apache 2.0<\/i><\/p>\n<p>Produto desenvolvido pela Kong Inc. em duas vers\u00f5es: comercial e gratuita. Baseado no nginx, cujas capacidades s\u00e3o ampliadas por uma grande quantidade de m\u00f3dulos em Lua.<\/p>\n<p>Originalmente focado no processamento e roteamento de solicita\u00e7\u00f5es de API, ou seja, como um API Gateway, no entanto, atualmente se tornou um controlador de Ingress completo. Principais vantagens: uma multitude de m\u00f3dulos adicionais (incluindo de desenvolvedores externos), que s\u00e3o f\u00e1ceis de instalar e configurar, atrav\u00e9s dos quais se implementa uma ampla gama de funcionalidades adicionais. No entanto, as fun\u00e7\u00f5es embutidas j\u00e1 oferecem muitas possibilidades. A configura\u00e7\u00e3o \u00e9 feita utilizando recursos CRD.<\/p>\n<p>Uma caracter\u00edstica importante do produto \u2014 a opera\u00e7\u00e3o dentro de um \u00fanico namespace (em vez de cross-namespaced) \u00e9 um tema controverso: para alguns pode parecer uma desvantagem (\u00e9 necess\u00e1rio criar entidades para cada namespace), mas para outros \u00e9 uma feature (maior n\u00edvel de isolamento, pois se um controlador falhar, o problema se limita a um \u00fanico namespace).<i>maior<\/i>github.com\/containous\/traefik<\/p>\n<h3>Traefik<\/h3>\n<p>\n<i>Site: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/containous\/traefik\">Licen\u00e7a: MIT<\/a><\/noindex><\/i><br \/>\n<i>Licen\u00e7a: MIT<\/i><\/p>\n<p>Proxy que foi originalmente criado para lidar com a rotea\u00e7\u00e3o de solicita\u00e7\u00f5es para microsservi\u00e7os e seu ambiente din\u00e2mico. Da\u00ed muitas funcionalidades \u00fateis: atualiza\u00e7\u00e3o de configura\u00e7\u00e3o sem reinicializa\u00e7\u00f5es, suporte a muitos m\u00e9todos de balanceamento, interface web, passagem de m\u00e9tricas, suporte a diversos protocolos, REST API, lan\u00e7amentos can\u00e1rios e muito mais. Uma caracter\u00edstica interessante \u00e9 tamb\u00e9m o suporte a certificados Let's Encrypt de forma nativa. A desvantagem \u00e9 que, para organizar alta disponibilidade (HA), o controlador precisar\u00e1 instalar e conectar seu pr\u00f3prio armazenamento KV.<\/p>\n<h3>HAProxy<\/h3>\n<p>\n<i>Site: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jcmoraisjr\/haproxy-ingress\">github.com\/jcmoraisjr\/haproxy-ingress<\/a><\/noindex><\/i><br \/>\n<i>Licen\u00e7a: Apache 2.0<\/i><\/p>\n<p>HAProxy \u00e9 bem conhecido como proxy e balanceador de tr\u00e1fego. No \u00e2mbito de um cluster Kubernetes, ele oferece atualiza\u00e7\u00e3o de configura\u00e7\u00e3o \"suave\" (sem perda de tr\u00e1fego), descoberta de servi\u00e7os baseada em DNS, configura\u00e7\u00e3o din\u00e2mica via API. A completa personaliza\u00e7\u00e3o do template de configura\u00e7\u00e3o, com a possibilidade de substituir CM, e o uso de fun\u00e7\u00f5es da biblioteca Sprig pode ser atraente. No geral, a principal \u00eanfase da solu\u00e7\u00e3o \u00e9 alta velocidade de opera\u00e7\u00e3o, otimiza\u00e7\u00e3o e efici\u00eancia no uso de recursos. A vantagem do controlador \u00e9 o suporte a um n\u00famero recorde de diferentes m\u00e9todos de balanceamento.<\/p>\n<h3>Voyager<\/h3>\n<p>\n<i>Site: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/appscode\/voyager\">github.com\/appscode\/voyager<\/a><\/noindex><\/i><br \/>\n<i>Licen\u00e7a: Apache 2.0<\/i><\/p>\n<p>Um controlador baseado no HAproxy, que se posiciona como uma solu\u00e7\u00e3o universal, suportando amplas funcionalidades em muitos provedores. Oferece a capacidade de balancear o tr\u00e1fego em L7 e L4, e o balanceamento de tr\u00e1fego TCP L4 pode ser considerado uma das principais caracter\u00edsticas da solu\u00e7\u00e3o.<\/p>\n<h3>Contour<\/h3>\n<p>\n<i>Site: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/heptio\/contour\">github.com\/heptio\/contour<\/a><\/noindex><\/i><br \/>\n<i>Licen\u00e7a: Apache 2.0<\/i><\/p>\n<p>Esta solu\u00e7\u00e3o \u00e9 baseada n\u00e3o apenas no Envoy: ela foi desenvolvida <i>em conjunto<\/i> com os criadores deste popular proxy. Uma caracter\u00edstica importante \u00e9 a capacidade de dividir o gerenciamento dos recursos Ingress usando recursos CRD IngressRoute. Para organiza\u00e7\u00f5es com v\u00e1rias equipes de desenvolvimento utilizando um \u00fanico cluster, isso ajuda a manter a seguran\u00e7a do tr\u00e1fego em contornos adjacentes e a proteg\u00ea-los contra erros ao modificar recursos Ingress.<\/p>\n<p>Tamb\u00e9m \u00e9 oferecido um conjunto expandido de m\u00e9todos de balanceamento (incluindo espelhamento de solicita\u00e7\u00f5es, auto-retries, limita\u00e7\u00e3o por taxa de solicita\u00e7\u00f5es e muito mais), monitoramento detalhado do fluxo de tr\u00e1fego e falhas. Para alguns, pode ser uma desvantagem significativa a falta de suporte a sess\u00f5es sticky (embora a opera\u00e7\u00e3o) <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/heptio\/contour\/issues\/361\">j\u00e1 estar em andamento<\/a><\/noindex>).<\/p>\n<h3>Istio Ingress<\/h3>\n<p>\n<i>Site: <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>Licen\u00e7a: Apache 2.0<\/i><\/p>\n<p>Uma solu\u00e7\u00e3o completa de service mesh que funciona n\u00e3o apenas como um controlador de Ingress, gerenciando o tr\u00e1fego de entrada externo, mas tamb\u00e9m controla todo o tr\u00e1fego dentro do cluster. Por tr\u00e1s das cenas, utiliza o Envoy como um proxy sidecar para cada servi\u00e7o. Essencialmente, \u00e9 uma grande ferramenta que \"pode fazer tudo\", com a ideia principal de m\u00e1xima gerenciabilidade, escalabilidade, seguran\u00e7a e transpar\u00eancia. Com ela, voc\u00ea pode configurar em detalhes a rotea\u00e7\u00e3o de tr\u00e1fego, a autoriza\u00e7\u00e3o de acesso entre servi\u00e7os, balanceamento, monitoramento, lan\u00e7amentos can\u00e1rios e muito mais. Saiba mais sobre o Istio em uma s\u00e9rie de artigos sobre<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">De volta aos microservi\u00e7os com Istio<\/a><\/noindex>\u00bb.<\/p>\n<h3>Ambassador<\/h3>\n<p>\n<i>Site: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/datawire\/ambassador\">github.com\/datawire\/ambassador<\/a><\/noindex><\/i><br \/>\n<i>Licen\u00e7a: Apache 2.0<\/i><\/p>\n<p>Mais uma solu\u00e7\u00e3o baseada no Envoy. Possui vers\u00f5es gratuitas e comerciais. \u00c9 posicionada como \"totalmente nativa do Kubernetes\", oferecendo as respectivas vantagens (integra\u00e7\u00e3o estreita com os m\u00e9todos e entidades do cluster K8s).<\/p>\n<h2>Tabela comparativa<\/h2>\n<p>\nAssim, o cl\u00edmax do artigo \u00e9 esta enorme tabela:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ss\/wh\/lj\/sswhljo-rjkms7nadtyewqkxrdi.png\"><img decoding=\"async\" alt=\"Revis\u00e3o e compara\u00e7\u00e3o de controladores Ingress para Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3a6c552df6b8b7b6a88517046fa7a275.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Ela \u00e9 clic\u00e1vel para visualiza\u00e7\u00e3o mais detalhada e tamb\u00e9m est\u00e1 dispon\u00edvel no formato <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1xjff2AMS6QXSdh8E8ay_uNMoUa2OLIanCallvkDvAy0\/edit#gid=0\">Google Sheets<\/a><\/noindex>.<\/p>\n<h2>Vamos resumir<\/h2>\n<p>\nO objetivo deste artigo \u00e9 fornecer uma compreens\u00e3o mais completa (embora n\u00e3o abrangente!) sobre qual escolha fazer em seu caso espec\u00edfico. Como costuma acontecer, cada controlador tem suas vantagens e desvantagens...<\/p>\n<p>O Ingress cl\u00e1ssico do Kubernetes se destaca por sua acessibilidade e confiabilidade, contando com uma gama generosa de recursos \u2014 geralmente, \u00e9 mais do que suficiente. No entanto, se h\u00e1 exig\u00eancias elevadas quanto \u00e0 estabilidade, n\u00edvel de recursos e desenvolvimento, vale a pena considerar o Ingress com NGINX Plus e uma assinatura paga. O Kong possui um extenso conjunto de plugins (e, consequentemente, das capacidades que eles oferecem), ali\u00e1s, na vers\u00e3o paga h\u00e1 at\u00e9 mais funcionalidades. Ele tem amplas possibilidades para atuar como API Gateway, configura\u00e7\u00e3o din\u00e2mica baseada em recursos CRD, al\u00e9m dos servi\u00e7os b\u00e1sicos do Kubernetes.<\/p>\n<p>Para demandas elevadas em balanceamento e m\u00e9todos de autoriza\u00e7\u00e3o, atente-se ao Traefik e ao HAProxy. Estes s\u00e3o projetos de c\u00f3digo aberto, testados ao longo dos anos, extremamente est\u00e1veis e em desenvolvimento ativo. O Contour surgiu h\u00e1 poucos anos, mas ainda parece muito imaturo e possui apenas recursos b\u00e1sicos adicionados sobre o Envoy. Se houver demandas para a inclus\u00e3o de um WAF antes da aplica\u00e7\u00e3o, o Ingress do Kubernetes ou o HAProxy podem ser boas op\u00e7\u00f5es.<\/p>\n<p>Os produtos mais ricos em funcionalidades s\u00e3o aqueles baseados no Envoy, especialmente o Istio. Ele se apresenta como uma solu\u00e7\u00e3o abrangente, que \"pode tudo\", o que, por sua vez, implica em um limiar de complexidade significativamente mais alto em configura\u00e7\u00e3o\/implementa\u00e7\u00e3o\/administra\u00e7\u00e3o do que outras solu\u00e7\u00f5es.<\/p>\n<p>N\u00f3s escolhemos o Ingress do Kubernetes como controlador padr\u00e3o, e ele continua a ser usado, cobrindo de 80 a 90% das necessidades. Ele \u00e9 bastante confi\u00e1vel, f\u00e1cil de configurar e expandir. Em geral, na aus\u00eancia de requisitos espec\u00edficos, ele deve atender \u00e0 maioria dos clusters\/aplica\u00e7\u00f5es. Produtos igualmente vers\u00e1teis e relativamente simples que podem ser recomendados s\u00e3o o Traefik e o HAProxy.<\/p>\n<h2>P.S.<\/h2>\n<p>\nConfira tamb\u00e9m em nosso blog:<\/p>\n<ul>\n<li> \u00abDe Volta aos Microservi\u00e7os com Istio\u00bb: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">parte 1 (introdu\u00e7\u00e3o aos principais recursos)<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/440378\/\">parte 2 (roteamento, gerenciamento de tr\u00e1fego)<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/443668\/\">parte 3 (autentica\u00e7\u00e3o e autoriza\u00e7\u00e3o)<\/a><\/noindex>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/445596\/\">Dicas e truques Kubernetes: p\u00e1ginas de erro personalizadas no NGINX Ingress<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/427745\/\">Dicas e truques Kubernetes: acesso a ambientes de desenvolvimento<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Fonte: <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\/pt\/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=\"pt_PT\" \/>\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\/pt\/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\udd47Vis\u00e3o geral e compara\u00e7\u00e3o de controladores Ingress para Kubernetes | ProHoster","description":"Ao iniciar um cluster Kubernetes.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/31173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=31173"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/31173\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/23140"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=31173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=31173"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=31173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}