{"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\/fr\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes","title":{"rendered":"Aper\u00e7u et comparaison des contr\u00f4leurs Ingress pour Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Aper\u00e7u et comparaison des contr\u00f4leurs Ingress pour Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3e6d3882a8f5a96a257fab4daaa230f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLors du d\u00e9ploiement d'un cluster Kubernetes pour une application sp\u00e9cifique, il est essentiel de comprendre les exigences que cette application, le business et les d\u00e9veloppeurs ont vis-\u00e0-vis de cette ressource. Avec cette information, on peut commencer \u00e0 prendre des d\u00e9cisions architecturales, et en particulier, choisir un contr\u00f4leur Ingress pr\u00e9cis, car il en existe aujourd'hui un grand nombre. Pour donner une id\u00e9e de base des options disponibles sans avoir \u00e0 \u00e9tudier une multitude d'articles\/documentations, nous avons pr\u00e9par\u00e9 cet aper\u00e7u, incluant les principaux contr\u00f4leurs Ingress (pr\u00eats pour la production).<\/p>\n<p>Nous esp\u00e9rons qu'il aidera nos coll\u00e8gues dans le choix de solutions architecturales \u2014 du moins, qu'il servira de point de d\u00e9part pour obtenir des informations plus d\u00e9taill\u00e9es et pour des exp\u00e9rimentations pratiques. Au pr\u00e9alable, nous avons \u00e9tudi\u00e9 d'autres documents similaires en ligne et, contre toute attente, nous n'avons trouv\u00e9 aucun aper\u00e7u complet, et surtout, structur\u00e9. Comblons donc cette lacune !<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Crit\u00e8res<\/h2>\n<p>\nPour effectuer une comparaison et obtenir un r\u00e9sultat utile, il est n\u00e9cessaire de comprendre non seulement le domaine th\u00e9matique, mais aussi de disposer d'une liste concr\u00e8te de crit\u00e8res qui orienteront l'\u00e9tude. Sans pr\u00e9tendre \u00e0 une analyse de tous les cas d'utilisation possibles d'Ingress\/Kubernetes, nous avons essay\u00e9 de mettre en avant les exigences les plus g\u00e9n\u00e9rales pour les contr\u00f4leurs \u2014 soyez pr\u00eats \u00e0 ce que toutes vos sp\u00e9cificit\u00e9s et d\u00e9tails devront tout de m\u00eame \u00eatre examin\u00e9s s\u00e9par\u00e9ment.<\/p>\n<p>Mais je commencerai par les caract\u00e9ristiques qui sont devenues si famili\u00e8res qu'elles sont int\u00e9gr\u00e9es dans toutes les solutions et ne sont pas consid\u00e9r\u00e9es :<\/p>\n<ul>\n<li> d\u00e9couverte dynamique des services (service discovery);<\/li>\n<li> terminaison SSL;<\/li>\n<li> travail avec les websockets.<\/li>\n<\/ul>\n<p>\nMaintenant \u2014 sur les points de comparaison :<\/p>\n<h3>Protocoles support\u00e9s<\/h3>\n<p>\nUn des crit\u00e8res fondamentaux lors du choix. Votre logiciel peut ne pas fonctionner selon le standard HTTP ou n\u00e9cessiter l'utilisation simultan\u00e9e de plusieurs protocoles. Si votre cas est atypique, tenez compte de ce facteur pour \u00e9viter de devoir reconfigurer le cluster par la suite. La liste des protocoles pris en charge varie d'un contr\u00f4leur \u00e0 l'autre.<\/p>\n<h3>Logiciel sous-jacent<\/h3>\n<p>\nIl existe plusieurs options d'applications sur lesquelles est bas\u00e9e le contr\u00f4leur. Les plus populaires sont nginx, traefik, haproxy, envoy. En g\u00e9n\u00e9ral, cela peut ne pas trop influencer la fa\u00e7on dont le trafic est re\u00e7u et transmis, mais il est toujours utile de conna\u00eetre les nuances et les caract\u00e9ristiques de ce qui est \u00ab sous le capot \u00bb.<\/p>\n<h3>Routage du trafic<\/h3>\n<p>\nSur quoi peut-on se baser pour d\u00e9cider de la direction du trafic vers un service donn\u00e9 ? En g\u00e9n\u00e9ral, ce sont l'h\u00f4te et le chemin, mais il existe aussi des possibilit\u00e9s suppl\u00e9mentaires.<\/p>\n<h3>Espace de noms au sein du cluster<\/h3>\n<p>\nL'espace de noms (namespace) est une possibilit\u00e9 de diviser logiquement les ressources dans Kubernetes (par exemple, en stage, production, etc.). Certains Ingress-contr\u00f4leurs doivent \u00eatre install\u00e9s s\u00e9par\u00e9ment dans chaque namespace (et pouvoir diriger le trafic vers les pods de cet espace). D'autres (et c'est clairement la majorit\u00e9) fonctionnent de mani\u00e8re globale sur l'ensemble du cluster \u2014 le trafic y est dirig\u00e9 vers n'importe quel pod du cluster, ind\u00e9pendamment de l'espace de noms. <i>uniquement<\/i> dans les pods de cet espace). Il y en a ceux (et leur nombre est clairement majoritaire) qui fonctionnent globalement sur l'ensemble du cluster - le trafic y est dirig\u00e9 vers n'importe quel pod du cluster, ind\u00e9pendamment de l'espace de noms.<\/p>\n<h3>\u00c9chantillons pour les upstreams<\/h3>\n<p>\nComment s'assure-t-on que le trafic est dirig\u00e9 vers des instances saines de l'application ou des services ? Il existe des options avec des v\u00e9rifications actives et passives, des r\u00e9essais (retries), des disjoncteurs <i>(pour en savoir plus, voir par exemple, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">l'article sur Istio<\/a><\/noindex>)<\/i>, des mises en \u0153uvre personnalis\u00e9es de v\u00e9rifications d'\u00e9tat (custom health checks), etc. C'est un param\u00e8tre tr\u00e8s important si vous avez des exigences \u00e9lev\u00e9es en mati\u00e8re de disponibilit\u00e9 et de sortie rapide des services d\u00e9faillants de l'\u00e9quilibrage.<\/p>\n<h3>Algorithmes d'\u00e9quilibrage<\/h3>\n<p>\nIl existe de nombreuses options : des plus traditionnelles <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Round-robin_DNS\">round-robin<\/a><\/noindex> aux plus exotiques comme <noindex><a rel=\"nofollow\" href=\"http:\/\/www.loadbalancer.org\/blog\/load-balancing-windows-terminal-server-haproxy-and-rdp-cookies\/\">rdp-cookie<\/a><\/noindex>, ainsi que des possibilit\u00e9s individuelles comme <noindex><a rel=\"nofollow\" href=\"https:\/\/access.redhat.com\/solutions\/900933\">les sessions persistantes<\/a><\/noindex>.<\/p>\n<h3>Authentification<\/h3>\n<p>\nQuelles sch\u00e9mas d'autorisation le contr\u00f4leur prend-il en charge ? Basic, digest, oauth, external-auth \u2014 je pense que ces options devraient vous \u00eatre famili\u00e8res. C'est un crit\u00e8re important si plusieurs environnements sont utilis\u00e9s pour les d\u00e9veloppeurs (et\/ou simplement ferm\u00e9s), accessibles via Ingress. <\/p>\n<h3>R\u00e9partition du trafic<\/h3>\n<p>\nLe contr\u00f4leur prend-il en charge des m\u00e9canismes souvent utilis\u00e9s pour la r\u00e9partition du trafic, tels que les d\u00e9ploiements canari (canary), les tests A\/B, le mirroring du trafic (mirroring\/shadowing) ? C'est un v\u00e9ritable sujet probl\u00e9matique pour les applications qui n\u00e9cessitent une gestion pr\u00e9cise et soigneuse du trafic pour des tests en production, un d\u00e9bogage d'erreurs produit sans impact (ou avec des pertes minimales), une analyse du trafic, etc.<\/p>\n<h3>Abonnement payant<\/h3>\n<p>\nExiste-t-il une version payante du contr\u00f4leur, avec des fonctionnalit\u00e9s avanc\u00e9es et\/ou un support technique ?<\/p>\n<h3>Interface graphique (Web UI)<\/h3>\n<p>\nY a-t-il une interface graphique pour g\u00e9rer la configuration du contr\u00f4leur ? Principalement pour \u00ab praticit\u00e9 \u00bb et\/ou pour ceux qui doivent apporter des modifications \u00e0 la configuration de l'Ingress, mais il est peu pratique de travailler avec des \u00ab mod\u00e8les bruts \u00bb. Cela peut \u00eatre utile si les d\u00e9veloppeurs souhaitent exp\u00e9rimenter en temps r\u00e9el avec le trafic.<\/p>\n<h3>Validation JWT<\/h3>\n<p>\nPr\u00e9sence d'une v\u00e9rification int\u00e9gr\u00e9e des JSON web tokens pour l'autorisation et la validation des utilisateurs d'applications finales.<\/p>\n<h3>Options de personnalisation de la configuration<\/h3>\n<p>\nExtensibilit\u00e9 des mod\u00e8les en termes de m\u00e9canismes permettant d'ajouter des directives, des flags, etc. aux mod\u00e8les de configuration standard.<\/p>\n<h3>M\u00e9canismes de protection de base contre les DDOS<\/h3>\n<p>\nAlgorithmes simples de limitation de d\u00e9bit ou des variantes plus complexes de filtrage de trafic bas\u00e9es sur des adresses, des listes blanches, des pays, etc.<\/p>\n<h3>Tra\u00e7age des requ\u00eates<\/h3>\n<p>\nFonctionnalit\u00e9s de surveillance, de suivi et de d\u00e9bogage des requ\u00eates allant des Ingress vers des services\/pods sp\u00e9cifiques, et id\u00e9alement - aussi entre services\/pods.<\/p>\n<h3>WAF<\/h3>\n<p>\nSupport <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Web_application_firewall\">firewall applicatif<\/a><\/noindex>.<\/p>\n<h2>Contr\u00f4leurs Ingress<\/h2>\n<p>\nLa liste des contr\u00f4leurs a \u00e9t\u00e9 \u00e9tablie sur la base de <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/ingress-controllers\/#additional-controllers\">la documentation officielle de Kubernetes<\/a><\/noindex> et <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.google.com\/spreadsheets\/d\/16bxRgpO1H_Bn-5xVZ1WrR_I-0A-GOI6egmhvqqLMOmg\/edit\">ce tableau<\/a><\/noindex>. Certains d'entre eux ont \u00e9t\u00e9 exclus de l'examen en raison de leur sp\u00e9cificit\u00e9 ou de leur faible diffusion (stade pr\u00e9coce de d\u00e9veloppement). Les restants sont examin\u00e9s ci-dessous. Commen\u00e7ons par une description g\u00e9n\u00e9rale des solutions et poursuivons avec un tableau r\u00e9capitulatif.<\/p>\n<h3>Ingress de 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>Licence : Apache 2.0<\/i><\/p>\n<p>C'est le contr\u00f4leur officiel pour Kubernetes, d\u00e9velopp\u00e9 par la communaut\u00e9. Comme le nom l'indique, il est bas\u00e9 sur nginx et enrichi d'un ensemble vari\u00e9 de plugins Lua utilis\u00e9s pour mettre en \u0153uvre des fonctionnalit\u00e9s suppl\u00e9mentaires. Gr\u00e2ce \u00e0 la popularit\u00e9 de nginx lui-m\u00eame et \u00e0 des modifications minimales lors de son utilisation comme contr\u00f4leur, cette option peut \u00eatre la plus simple et la plus compr\u00e9hensible \u00e0 configurer pour un ing\u00e9nieur moyen (avec une exp\u00e9rience en web).<\/p>\n<h3>Ingress de 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>Licence : Apache 2.0<\/i><\/p>\n<p>Produit officiel des d\u00e9veloppeurs de nginx. Il existe une version payante bas\u00e9e sur <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/products\/nginx\/\">NGINX Plus<\/a><\/noindex>. L'id\u00e9e principale est un niveau \u00e9lev\u00e9 de stabilit\u00e9, une compatibilit\u00e9 descendante constante, l'absence de modules tiers et une vitesse accrue revendiqu\u00e9e (par rapport au contr\u00f4leur officiel), obtenue gr\u00e2ce \u00e0 l'abandon de Lua. <\/p>\n<p>La version gratuite est consid\u00e9rablement limit\u00e9e, m\u00eame par rapport au contr\u00f4leur officiel (en raison de l'absence des modules Lua). La version payante dispose d'une fonctionnalit\u00e9 additionnelle assez large : m\u00e9triques en temps r\u00e9el, validation JWT, v\u00e9rifications de sant\u00e9 actives, et plus encore. Un avantage important par rapport \u00e0 NGINX Ingress est le support complet du trafic TCP\/UDP (m\u00eame dans la version communautaire !). Inconv\u00e9nient - <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/kubernetes-ingress\/issues\/464\">absence de<\/a><\/noindex> fonctionnalit\u00e9s de distribution du trafic, ce qui, cependant, \u00ab a la priorit\u00e9 maximale pour les d\u00e9veloppeurs \u00bb, mais n\u00e9cessite du temps pour la mise en \u0153uvre.<\/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>Licence : Apache 2.0<\/i><\/p>\n<p>Produit d\u00e9velopp\u00e9 par Kong Inc. en deux versions : commerciale et gratuite. Bas\u00e9 sur nginx, ses capacit\u00e9s sont \u00e9tendues par un grand nombre de modules Lua.<\/p>\n<p>Initialement destin\u00e9 \u00e0 traiter et router les requ\u00eates API, c'est-\u00e0-dire en tant que passerelle API, il est devenu un contr\u00f4leur Ingress \u00e0 part enti\u00e8re. Les principaux avantages : de nombreux modules additionnels (y compris ceux de d\u00e9veloppeurs tiers) qui sont faciles \u00e0 installer et \u00e0 configurer, offrant ainsi un large \u00e9ventail de fonctionnalit\u00e9s suppl\u00e9mentaires. Cependant, les fonctions int\u00e9gr\u00e9es proposent d\u00e9j\u00e0 de nombreuses possibilit\u00e9s. La configuration se fait \u00e0 l'aide des ressources CRD.<\/p>\n<p>Une caract\u00e9ristique importante du produit est que le fonctionnement dans un seul contour (au lieu d'une approche inter-namespace) est un sujet discut\u00e9 : certains le consid\u00e8rent comme un inconv\u00e9nient (il faut cr\u00e9er des entit\u00e9s pour chaque contour), tandis que pour d'autres, c'est une fonctionnalit\u00e9 (un)<i>de<\/i>niveau d'isolation sup\u00e9rieur, car si un contr\u00f4leur est d\u00e9faillant, le probl\u00e8me est limit\u00e9 \u00e0 un seul contour).<\/p>\n<h3>Traefik<\/h3>\n<p>\n<i>Site : <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/containous\/traefik\">github.com\/containous\/traefik<\/a><\/noindex><\/i><br \/>\n<i>Licence : MIT<\/i><\/p>\n<p>Un proxy initialement con\u00e7u pour g\u00e9rer le routage des requ\u00eates pour les microservices et leur environnement dynamique. D'o\u00f9 de nombreuses fonctionnalit\u00e9s utiles : mise \u00e0 jour de la configuration sans red\u00e9marrages, support d'une grande vari\u00e9t\u00e9 de m\u00e9thodes de r\u00e9partition de charge, interface web, passage de m\u00e9triques, support de divers protocoles, API REST, d\u00e9ploiements canari et bien plus encore. Une caract\u00e9ristique agr\u00e9able est \u00e9galement le support des certificats Let's Encrypt de mani\u00e8re int\u00e9gr\u00e9e. Inconv\u00e9nient - pour organiser une haute disponibilit\u00e9 (HA), le contr\u00f4leur devra installer et connecter son propre magasin 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>Licence : Apache 2.0<\/i><\/p>\n<p>HAProxy est bien connu comme proxy et r\u00e9partiteur de trafic. Dans le cadre d'un cluster Kubernetes, il propose une mise \u00e0 jour \u00ab douce \u00bb de la configuration (sans perte de trafic), une d\u00e9couverte de service bas\u00e9e sur DNS, une configuration dynamique via API. La personnalisation compl\u00e8te du mod\u00e8le de configurations gr\u00e2ce au remplacement de CM ainsi que l'utilisation de fonctions de la biblioth\u00e8que Sprig peuvent \u00eatre attrayantes. Dans l'ensemble, la solution met l'accent sur la haute rapidit\u00e9 d'ex\u00e9cution, son optimisation et son efficacit\u00e9 en ressources. Avantage du contr\u00f4leur - prise en charge d'un nombre record de diff\u00e9rentes m\u00e9thodes de r\u00e9partition de charge.<\/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>Licence : Apache 2.0<\/i><\/p>\n<p>Un contr\u00f4leur bas\u00e9 sur HAProxy, positionn\u00e9 comme une solution polyvalente, offrant de larges possibilit\u00e9s avec un grand nombre de fournisseurs. Il propose la r\u00e9partition de trafic au niveau L7 et L4, et la r\u00e9partition de trafic TCP L4 peut \u00eatre consid\u00e9r\u00e9e comme l'une des fonctionnalit\u00e9s cl\u00e9s de la solution.<\/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>Licence : Apache 2.0<\/i><\/p>\n<p>Cette solution ne repose pas seulement sur Envoy : elle a \u00e9t\u00e9 d\u00e9velopp\u00e9e <i>en collaboration<\/i> avec les auteurs de ce proxy populaire. Une caract\u00e9ristique importante est la possibilit\u00e9 de s\u00e9parer la gestion des ressources Ingress \u00e0 travers des ressources CRD IngressRoute. Pour les organisations avec de nombreuses \u00e9quipes de d\u00e9veloppement utilisant un m\u00eame cluster, cela aide \u00e0 s\u00e9curiser au maximum le travail avec le trafic dans des contours voisins et \u00e0 les prot\u00e9ger des erreurs lors des modifications des ressources Ingress.<\/p>\n<p>Un ensemble \u00e9largi de m\u00e9thodes de r\u00e9partition est \u00e9galement propos\u00e9 (incluant le mirroring des requ\u00eates, des retries automatiques, des limitations par taux de requ\u00eates et bien plus), un suivi d\u00e9taill\u00e9 du flux de trafic et des pannes. Il est possible que pour certaines personnes, le manque de support des sessions persistantes (bien que le travail <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/heptio\/contour\/issues\/361\">des travaux sont d\u00e9j\u00e0 en cours.<\/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>Licence : Apache 2.0<\/i><\/p>\n<p>Une solution de service mesh compl\u00e8te, qui n'est pas seulement un contr\u00f4leur d'ingress g\u00e9rant le trafic entrant, mais contr\u00f4le \u00e9galement tout le trafic au sein du cluster. \u00ab Sous le capot \u00bb, Envoy est utilis\u00e9 comme proxy sidecar pour chaque service. Essentiellement, c'est un grand outil polyvalent qui \u00ab peut tout faire \u00bb, et son id\u00e9e principale est une gestion maximale, une \u00e9volutivit\u00e9, une s\u00e9curit\u00e9 et une transparence accrues. Avec Istio, vous pouvez affiner la configuration de la routage du trafic, l'autorisation d'acc\u00e8s entre services, l'\u00e9quilibrage, la surveillance, les d\u00e9ploiements canari, et bien plus encore. Pour en savoir plus sur Istio, consultez la s\u00e9rie d'articles \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">Retour aux microservices avec 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>Licence : Apache 2.0<\/i><\/p>\n<p>Une autre solution bas\u00e9e sur Envoy. Elle dispose de versions gratuites et commerciales. Elle se positionne comme \u00ab enti\u00e8rement native de Kubernetes \u00bb, ce qui apporte des avantages correspondants (int\u00e9gration \u00e9troite avec les m\u00e9thodes et entit\u00e9s du cluster K8s).<\/p>\n<h2>Tableau comparatif<\/h2>\n<p>\nAinsi, le point culminant de l'article est ce grand tableau :<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ss\/wh\/lj\/sswhljo-rjkms7nadtyewqkxrdi.png\"><img decoding=\"async\" alt=\"Aper\u00e7u et comparaison des contr\u00f4leurs Ingress pour Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3a6c552df6b8b7b6a88517046fa7a275.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Il est cliquable pour un examen plus d\u00e9taill\u00e9, et est \u00e9galement disponible au format <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1xjff2AMS6QXSdh8E8ay_uNMoUa2OLIanCallvkDvAy0\/edit#gid=0\">Google Sheets<\/a><\/noindex>.<\/p>\n<h2>Faisons le point<\/h2>\n<p>\nL'objectif de cet article est de fournir une compr\u00e9hension plus compl\u00e8te (mais pas exhaustive !) du choix \u00e0 faire dans votre cas particulier. Comme souvent, chaque contr\u00f4leur a ses avantages et ses inconv\u00e9nients...<\/p>\n<p>L'Ingress classique de Kubernetes se distingue par sa disponibilit\u00e9 et sa fiabilit\u00e9, avec des fonctionnalit\u00e9s assez riches \u2014 en g\u00e9n\u00e9ral, il devrait \u00ab suffire largement \u00bb. Cependant, pour des exigences accrues en mati\u00e8re de stabilit\u00e9, de fonctionnalit\u00e9s et de d\u00e9veloppement, il est conseill\u00e9 de se tourner vers l'Ingress avec NGINX Plus et un abonnement payant. Kong dispose d'un ensemble tr\u00e8s riche de plugins (et, par cons\u00e9quent, des capacit\u00e9s qu'ils offrent), en particulier dans la version payante o\u00f9 il y en a m\u00eame plus. Il offre de vastes possibilit\u00e9s en tant que passerelle API, avec une configuration dynamique bas\u00e9e sur des ressources CRD, ainsi que des services de base de Kubernetes.<\/p>\n<p>Pour des exigences accrues en mati\u00e8re de r\u00e9partition de charge et de m\u00e9thodes d'autorisation, jetez un \u0153il \u00e0 Traefik et HAProxy. Ce sont des projets Open Source, \u00e9prouv\u00e9s au fil des ans, tr\u00e8s stables et en d\u00e9veloppement actif. Contour existe depuis quelques ann\u00e9es, mais semble toujours trop jeune et ne dispose que de fonctionnalit\u00e9s de base, ajout\u00e9es par-dessus Envoy. En cas d'exigences concernant la pr\u00e9sence\/int\u00e9gration d'un WAF devant l'application, il convient de se tourner vers l'Ingress de Kubernetes ou HAProxy.<\/p>\n<p>Les produits les plus riches en fonctionnalit\u00e9s sont ceux bas\u00e9s sur Envoy, en particulier Istio. Il repr\u00e9sente une solution compl\u00e8te capable de \u00ab tout faire \u00bb, ce qui signifie cependant un seuil d'entr\u00e9e consid\u00e9rablement plus \u00e9lev\u00e9 en mati\u00e8re de configuration\/lancement\/administration que d'autres solutions.<\/p>\n<p>Nous avons choisi comme contr\u00f4leur standard l'Ingress de Kubernetes, qui couvre 80 \u00e0 90 % des besoins. Il est tout \u00e0 fait fiable, facilement configurable et extensible. En g\u00e9n\u00e9ral, en l'absence de besoins sp\u00e9cifiques, il devrait convenir \u00e0 la plupart des clusters\/applications. Parmi d'autres produits similaires universels et relativement simples, on peut recommander Traefik et HAProxy.<\/p>\n<h2>P.S.<\/h2>\n<p>\nLisez aussi dans notre blog :<\/p>\n<ul>\n<li> \u00ab Retour aux microservices avec Istio \u00bb : <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">partie 1 (introduction aux principales fonctionnalit\u00e9s)<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/440378\/\">partie 2 (routage, gestion du trafic)<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/443668\/\">partie 3 (authentification et autorisation)<\/a><\/noindex>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/445596\/\">Kubernetes tips &amp; tricks : pages d'erreur personnalis\u00e9es dans NGINX Ingress<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/427745\/\">Kubernetes tips &amp; tricks : acc\u00e8s aux environnements de d\u00e9veloppement<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Source : <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.2 - 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\/fr\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/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\udd47 Aper\u00e7u et comparaison des contr\u00f4leurs Ingress pour Kubernetes | ProHoster","description":"Lors du lancement d'un cluster Kubernetes pour.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/31173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=31173"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/31173\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/23140"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=31173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=31173"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=31173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}