{"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\/nl\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes","title":{"rendered":"Overzicht en vergelijking van Ingress-controllers voor Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Overzicht en vergelijking van Ingress-controllers voor Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3e6d3882a8f5a96a257fab4daaa230f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBij het opzetten van een Kubernetes-cluster voor een specifieke applicatie is het belangrijk om te begrijpen welke vereisten de applicatie, het bedrijf en de ontwikkelaars aan deze resource stellen. Met deze informatie kan worden begonnen met het nemen van architecturale beslissingen, en in het bijzonder met de keuze van een specifieke Ingress-controller, waarvan er tegenwoordig al veel zijn. Om een basisbegrip te krijgen van de beschikbare opties zonder talloze artikelen\/documentatie te hoeven doornemen, hebben we deze samenvatting opgesteld, waarin we de belangrijkste (production ready) Ingress-controllers hebben opgenomen.<\/p>\n<p>We hopen dat het onze collega's helpt bij het maken van architecturale keuzes \u2014 in ieder geval als een startpunt voor het verkrijgen van meer gedetailleerde informatie en praktische experimenten. We hebben voorafgaand andere vergelijkbare materialen op het web bestudeerd en, tot onze verbazing, geen enkele redelijk volledige, en vooral gestructureerde, overzichten gevonden. Laten we dus deze leemte vullen!<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Criteria<\/h2>\n<p>\nOm \u00fcberhaupt een vergelijking te kunnen maken en een bruikbaar resultaat te behalen, moet men niet alleen de subjectieve\u9886\u57df begrijpen, maar ook over een concrete lijst van criteria beschikken die de onderzoeksrichting bepalen. Zonder pretenties te hebben voor het analyseren van alle mogelijke gevallen van gebruik van Ingress\/Kubernetes, hebben we geprobeerd de meest algemene eisen aan controllers te benadrukken \u2014 wees voorbereid dat al hun specifieke details in ieder geval apart bestudeerd moeten worden.<\/p>\n<p>Ik begin echter met de kenmerken die zo gebruikelijk zijn dat ze in alle oplossingen zijn ge\u00efmplementeerd en niet worden overwogen:<\/p>\n<ul>\n<li> dynamische service ontdekking (service discovery);<\/li>\n<li> SSL-terminatie;<\/li>\n<li> werken met websockets.<\/li>\n<\/ul>\n<p>\nLaten we nu over de vergelijkingspunten spreken:<\/p>\n<h3>ondersteunde protocollen<\/h3>\n<p>\nEen van de fundamenten criteria voor uw keuze. Uw software kan niet volgens de standaard HTTP werken of vereist misschien ondersteuning voor meerdere protocollen tegelijkertijd. Als uw situatie niet standaard is, houd dan rekening met deze factor om te voorkomen dat het cluster later opnieuw moet worden geconfigureerd. Bij alle controllers varieert de lijst van ondersteunde protocollen.<\/p>\n<h3>Basissoftware<\/h3>\n<p>\nEr zijn verschillende soorten applicaties waarop de controller is gebaseerd. Populaire keuzes zijn nginx, traefik, haproxy, envoy. Over het algemeen be\u00efnvloedt dit misschien niet te veel hoe het verkeer wordt ontvangen en verzonden, maar het is altijd nuttig om potenti\u00eble nuances en kenmerken te kennen van wat er 'achter de schermen' gebeurt.<\/p>\n<h3>Verkeersroutering<\/h3>\n<p>\nOp basis waarvan kan een beslissing worden genomen over de richting van verkeer naar een bepaalde service? Meestal is dit host en pad, maar er kunnen ook aanvullende mogelijkheden zijn.<\/p>\n<h3>Naamruimte binnen het cluster<\/h3>\n<p>\nEen namespace is een mogelijkheid om middelen logisch te splitsen in Kubernetes (bijvoorbeeld op stage, productie, enz.). Er zijn Ingress-controllers die apart in elke namespace moeten worden ge\u00efnstalleerd (en dan kan hij verkeer richting pods in deze namespace sturen). Er zijn echter ook controllers (en dat zijn er duidelijk de meeste) die globaal werken in het hele cluster \u2014 in deze gevallen wordt verkeer gestuurd naar elke pod in het cluster, ongeacht de namespace. <i>van<\/i> in de pods van deze ruimte). En er zijn er veel (en dat is de duidelijke meerderheid), die globaal in het hele cluster werken \u2014 daarin wordt het verkeer naar elke pod in het cluster geleid, ongeacht de namespaces.<\/p>\n<h3>Monster voor upstreams<\/h3>\n<p>\nOp welke manier wordt ervoor gezorgd dat verkeer naar gezonde instanties van applicaties en services wordt geleid? Er zijn opties met actieve en passieve controles, herhaalgpogingen (retries), circuit breakers <i>(zie bijvoorbeeld meer over hen in de <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">artikel over Istio<\/a><\/noindex>)<\/i>, eigen implementaties van statuscontroles (custom health checks) enzovoort. Dit is een zeer belangrijke parameter als u hoge eisen stelt aan beschikbaarheid en tijdige uitschakeling van falende services.<\/p>\n<h3>Load-balancing algoritmes<\/h3>\n<p>\nEr zijn veel opties: van traditionele <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Round-robin_DNS\">ronddraaien<\/a><\/noindex> tot exotische zoals <noindex><a rel=\"nofollow\" href=\"http:\/\/www.loadbalancer.org\/blog\/load-balancing-windows-terminal-server-haproxy-and-rdp-cookies\/\">rdp-cookie<\/a><\/noindex>, evenals aparte mogelijkheden zoals <noindex><a rel=\"nofollow\" href=\"https:\/\/access.redhat.com\/solutions\/900933\">sticky sessions<\/a><\/noindex>.<\/p>\n<h3>Authenticatie<\/h3>\n<p>\nWelke autorisatieschema's ondersteunt de controller? Basic, digest, oauth, external-auth \u2014 ik denk dat deze opties bekend moeten zijn. Dit is een belangrijk criterium als er veel omgevingen voor ontwikkelaars (en\/of gewoon gesloten omgevingen) worden gebruikt, waarvoor toegang via Ingress wordt verkregen. <\/p>\n<h3>Verkeersverdeling<\/h3>\n<p>\nOndersteunt de controller vaak gebruikte mechanismen voor verkeersverdeling, zoals canary releases, A\/B-testen, en verkeersspiegeling (mirroring\/shadowing)? Dit is een echt pijnlijk onderwerp voor applicaties die nauwkeurige en zorgvuldige verkeersbeheersing vereisen voor producttests, foutopsporing zonder impact (of met minimale verliezen), verkeersanalyse enzovoort.<\/p>\n<h3>Betaald abonnement<\/h3>\n<p>\nIs there a paid version of the controller with extended functionalities and\/or technical support?<\/p>\n<h3>Graphical Interface (Web UI)<\/h3>\n<p>\nIs there any graphical interface for managing the controller's configuration? Mainly for convenience and\/or for those who need to make changes to the Ingress configuration but find working with raw templates inconvenient. It might be useful if developers want to conduct experiments with traffic on the fly.<\/p>\n<h3>JWT Validation<\/h3>\n<p>\nThe presence of built-in checks for JSON web tokens for authorizing and validating users for the end application.<\/p>\n<h3>Customization Options for Configuration<\/h3>\n<p>\nExtensibility of templates in terms of having mechanisms that allow adding custom directives, flags, etc., to standard configuration templates.<\/p>\n<h3>Basic DDOS Protection Mechanisms<\/h3>\n<p>\nSimple rate-limiting algorithms or more complex variants for filtering traffic based on addresses, whitelists, countries, etc.<\/p>\n<h3>Request Tracing<\/h3>\n<p>\nBewakings-, tracing- en debuggingmogelijkheden van aanvragen van Ingress naar specifieke services\/pods, idealiter ook tussen services\/pods.<\/p>\n<h3>WAF<\/h3>\n<p>\nOndersteuning <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Web_application_firewall\">toepasselijke firewall<\/a><\/noindex>.<\/p>\n<h2>Ingress Controllers<\/h2>\n<p>\nThe list of controllers was compiled based on <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/ingress-controllers\/#additional-controllers\">de offici\u00eble Kubernetes documentatie<\/a><\/noindex> en <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.google.com\/spreadsheets\/d\/16bxRgpO1H_Bn-5xVZ1WrR_I-0A-GOI6egmhvqqLMOmg\/edit\">this table<\/a><\/noindex>. Some of them were excluded from the review due to their specificity or low prevalence (early development stage). The remaining ones are discussed below. We'll start with a general description of the solutions and continue with a summary table.<\/p>\n<h3>Ingress from Kubernetes<\/h3>\n<p>\n<i>Website: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/ingress-nginx\">github.com\/kubernetes\/ingress-nginx<\/a><\/noindex><\/i><br \/>\n<i>Licentie: Apache 2.0<\/i><\/p>\n<p>This is the official controller for Kubernetes, developed by the community. As the name suggests, it is based on nginx and supplemented with various Lua plugins used to implement additional functionalities. Due to the popularity of nginx itself and minimal modifications made when used as a controller, this option may be the simplest and most understandable in terms of configuration for an average engineer (with web experience).<\/p>\n<h3>Ingress from NGINX Inc<\/h3>\n<p>\n<i>Website: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/kubernetes-ingress\">github.com\/nginxinc\/kubernetes-ingress<\/a><\/noindex><\/i><br \/>\n<i>Licentie: Apache 2.0<\/i><\/p>\n<p>The official product from the developers of nginx. It has a paid version based on <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/products\/nginx\/\">NGINX Plus<\/a><\/noindex>. Het belangrijkste idee is een hoog niveau van stabiliteit, constante achterwaartse compatibiliteit, het ontbreken van externe modules en een geclaimde verhoogde snelheid (in vergelijking met de offici\u00eble controller), bereikt door het afzien van Lua. <\/p>\n<p>De gratis versie is sterk beperkt, zelfs in vergelijking met de offici\u00eble controller (door het gebrek aan dezelfde Lua-modules). De betaalde versie biedt daarentegen een vrij brede extra functionaliteit: realtime metrics, JWT-validatie, actieve health checks en meer. Een belangrijk voordeel ten opzichte van NGINX Ingress is de volledige ondersteuning voor TCP\/UDP-verkeer (ook in de community-versie!). Nadelen zijn <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/kubernetes-ingress\/issues\/464\">het ontbreken van<\/a><\/noindex> functies voor verkeersverspreiding, wat echter 'maximale prioriteit heeft voor ontwikkelaars', maar tijd kost om te implementeren.<\/p>\n<h3>Kong Ingress<\/h3>\n<p>\n<i>Website: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Kong\/kubernetes-ingress-controller\">github.com\/Kong\/kubernetes-ingress-controller<\/a><\/noindex><\/i><br \/>\n<i>Licentie: Apache 2.0<\/i><\/p>\n<p>Een product ontwikkeld door Kong Inc. in twee varianten: commercieel en gratis. Gebaseerd op nginx, wiens mogelijkheden zijn uitgebreid met een groot aantal Lua-modules.<\/p>\n<p>Oorspronkelijk gericht op het verwerken en routeren van API-aanvragen, dus als API Gateway, is het inmiddels uitgegroeid tot een volwaardige Ingress-controller. Belangrijkste voordelen: vele extra modules (ook van externe ontwikkelaars), die gemakkelijk te installeren en configureren zijn en waarmee een breed scala aan extra mogelijkheden kan worden gerealiseerd. Echter, ingebouwde functies bieden al veel mogelijkheden. De configuratie gebeurt via CRD-resources.<\/p>\n<p>Een belangrijke eigenschap van het product is dat werken binnen \u00e9\u00e9n contour (in plaats van cross-namespaced) een omstreden onderwerp is: sommigen beschouwen het als een tekortkoming (je moet entiteiten cre\u00ebren voor elke contour), terwijl anderen het als een functie beschouwen (een groter niveau van isolatie, aangezien als \u00e9\u00e9n controller defect is, het probleem beperkt blijft tot slechts \u00e9\u00e9n contour).<i>groter publiek.<\/i>hogere mate van isolatie, omdat als \u00e9\u00e9n controller faalt, het probleem beperkt is tot slechts \u00e9\u00e9n contour).<\/p>\n<h3>Traefik<\/h3>\n<p>\n<i>Website: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/containous\/traefik\">github.com\/containous\/traefik<\/a><\/noindex><\/i><br \/>\n<i>Licentie: MIT<\/i><\/p>\n<p>Een proxy die oorspronkelijk is ontworpen om aanvragen te routeren voor microservices en hun dynamische omgeving. Vandaar de vele nuttige functies: configuratie-updates zonder herstarten, ondersteuning voor een breed scala aan balanceermethoden, webinterface, doorvervoer van statistieken, ondersteuning voor verschillende protocollen, REST API, canary releases en nog veel meer. Een leuk kenmerk is ook de native ondersteuning voor Let's Encrypt certificaten. Nadeel is dat, voor het organiseren van hoge beschikbaarheid (HA), de controller een eigen KV-opslag moet installeren en aansluiten.<\/p>\n<h3>HAProxy<\/h3>\n<p>\n<i>Website: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jcmoraisjr\/haproxy-ingress\">github.com\/jcmoraisjr\/haproxy-ingress<\/a><\/noindex><\/i><br \/>\n<i>Licentie: Apache 2.0<\/i><\/p>\n<p>HAProxy is al lang bekend als proxy en traffic balancer. Binnen een Kubernetes-cluster biedt het 'zachte' configuratie-updates (zonder verkeersverlies), service discovery op basis van DNS, dynamische configuratie via API. Aantrekkelijk kan de volledige maatwerk van de configuratiesjablonen zijn door het vervangen van CM, evenals de mogelijkheid om functies van de Sprig-bibliotheek daarin te gebruiken. Over het geheel genomen ligt de focus van de oplossing op hoge snelheid, optimalisatie en effici\u00ebntie in hulpbronnen. Een voordeel van de controller is de ondersteuning voor een record aantal verschillende manieren van balanceren.<\/p>\n<h3>Voyager<\/h3>\n<p>\n<i>Website: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/appscode\/voyager\">github.com\/appscode\/voyager<\/a><\/noindex><\/i><br \/>\n<i>Licentie: Apache 2.0<\/i><\/p>\n<p>Een op HAproxy gebaseerde controller die wordt gepositioneerd als een universele oplossing, die brede mogelijkheden ondersteunt op een groot aantal providers. Er is de mogelijkheid voor traffic balancing op L7 en L4, waarbij de load balancing van TCP L4-verkeer over het algemeen kan worden beschouwd als een van de belangrijkste functies van de oplossing.<\/p>\n<h3>Contour<\/h3>\n<p>\n<i>Website: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/heptio\/contour\">github.com\/heptio\/contour<\/a><\/noindex><\/i><br \/>\n<i>Licentie: Apache 2.0<\/i><\/p>\n<p>Deze oplossing is niet alleen gebaseerd op Envoy: het is ontwikkeld <i>in samenwerking<\/i> met de auteurs van deze populaire proxy. Een belangrijk kenmerk is de mogelijkheid om het beheer van Ingress-resources te scheiden met behulp van CRD-resources IngressRoute. Voor organisaties met meerdere ontwikkelteams die \u00e9\u00e9n cluster gebruiken, helpt dit om de werking met verkeer in aangrenzende omgevingen tot een minimum te beperken en te beschermen tegen fouten bij het wijzigen van Ingress-resources.<\/p>\n<p>Er wordt ook een uitgebreide set balanceermethoden aangeboden (er is request mirroring, automatische herhalingen, rate limiting van verzoeken en nog veel meer), gedetailleerde monitoring van het verkeersstroom en storingen. Voor sommigen kan het significante nadeel zijn dat er geen ondersteuning is voor sticky sessions (hoewel het werkt. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/heptio\/contour\/issues\/361\">zijn al aan de gang<\/a><\/noindex>).<\/p>\n<h3>Istio Ingress<\/h3>\n<p>\n<i>Website: <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>Licentie: Apache 2.0<\/i><\/p>\n<p>Een allesomvattende service mesh-oplossing die niet alleen dienstdoet als Ingress-controller om binnenkomend extern verkeer te regelen, maar ook al het verkeer binnen het cluster beheert. \u2018Onder de motorkap\u2019 wordt Envoy gebruikt als sidecar-proxy voor elke service. Eigenlijk is het een grote combinatie die \u2018alles kan\u2019, en het belangrijkste idee is maximale beheersbaarheid, uitbreidbaarheid, veiligheid en transparantie. Hiermee kunt u verkeerrouting, toegangsautorisatie tussen diensten, load balancing, monitoring, canary-releases en nog veel meer gedetailleerd instellen. Meer over Istio leest u in de serie artikelen \u2018<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">Terug naar microservices met Istio<\/a><\/noindex>\u00bb.<\/p>\n<h3>Ambassador<\/h3>\n<p>\n<i>Website: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/datawire\/ambassador\">github.com\/datawire\/ambassador<\/a><\/noindex><\/i><br \/>\n<i>Licentie: Apache 2.0<\/i><\/p>\n<p>Een andere oplossing gebaseerd op Envoy. Heeft gratis en commerci\u00eble versies. Wordt gepositioneerd als \u2018volledig native voor Kubernetes\u2019, wat de bijbehorende voordelen met zich meebrengt (nauwkeurige integratie met de methoden en entiteiten van het K8s-cluster).<\/p>\n<h2>Vergelijkende tabel<\/h2>\n<p>\nDus, de climax van het artikel \u2014 deze enorme tabel:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ss\/wh\/lj\/sswhljo-rjkms7nadtyewqkxrdi.png\"><img decoding=\"async\" alt=\"Overzicht en vergelijking van Ingress-controllers voor Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3a6c552df6b8b7b6a88517046fa7a275.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Deze is klikbaar voor een gedetailleerdere weergave en ook beschikbaar in het formaat <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1xjff2AMS6QXSdh8E8ay_uNMoUa2OLIanCallvkDvAy0\/edit#gid=0\">Google Sheets<\/a><\/noindex>.<\/p>\n<h2>Laten we de conclusies samenvatten<\/h2>\n<p>\nHet doel van het artikel is om een completer begrip te bieden (hoewel absoluut niet uitputtend!) van welke keuze u moet maken in uw specifieke geval. Zoals gewoonlijk heeft elke controller zijn eigen voor- en nadelen...<\/p>\n<p>De klassieke Ingress van Kubernetes is goed vanwege zijn beschikbaarheid en betrouwbaarheid, met relatief rijke mogelijkheden \u2014 in het algemeen zou het 'voldoende moeten zijn'. Echter, als er hogere eisen zijn aan stabiliteit, niveau van functies en ontwikkeling, is het de moeite waard om naar Ingress met NGINX Plus en een betaald abonnement te kijken. Kong heeft een rijke set aan plugins (en de bijbehorende mogelijkheden), en in de betaalde versie zijn er zelfs meer. Het biedt uitgebreide mogelijkheden als API Gateway, dynamische configuratie op basis van CRD-resources en basisservices van Kubernetes.<\/p>\n<p>Als er hogere eisen zijn aan load balancing en autorisatiemethoden, overweeg dan Traefik en HAProxy. Dit zijn Open Source-projecten, die door de jaren heen zijn getest, zeer stabiel en actief in ontwikkeling. Contour bestaat al een paar jaar, maar ziet er nog steeds te jong uit en heeft slechts basisfunctionaliteiten die bovenop Envoy zijn toegevoegd. Als er eisen zijn voor de aanwezigheid\/integratie van WAF v\u00f3\u00f3r de toepassing, is het de moeite waard om dezelfde Ingress van Kubernetes of HAProxy te overwegen.<\/p>\n<p>De producten die de meeste functies bieden, zijn die gebaseerd op Envoy, vooral Istio. Het wordt gepresenteerd als een uitgebreide oplossing die 'alles kan', wat echter ook betekent dat er een aanzienlijk hogere leercurve is voor configuratie\/opstarten\/beheer dan bij andere oplossingen.<\/p>\n<p>Wij hebben gekozen voor en gebruiken nog steeds Ingress van Kubernetes als standaardcontroller, die 80-90% van de behoeften dekt. Het is behoorlijk betrouwbaar, gemakkelijk te configureren en uitbreidbaar. In het algemeen, bij gebrek aan specifieke eisen, zou het geschikt moeten zijn voor de meeste clusters\/toepassingen. Van dergelijke universele en relatief eenvoudige producten kunnen Traefik en HAProxy worden aanbevolen.<\/p>\n<h2>P.S.<\/h2>\n<p>\nLees ook op onze blog:<\/p>\n<ul>\n<li> \u00abTerug naar microservices met Istio\u00bb: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">deel 1 (kennis maken met de belangrijkste mogelijkheden)<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/440378\/\">deel 2 (routering, verkeersbeheer)<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/443668\/\">deel 3 (authenticatie en autorisatie)<\/a><\/noindex>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/445596\/\">Kubernetes tips &amp; tricks: gepersonaliseerde foutpagina's in 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: toegang tot dev-omgevingen<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Bron: <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\/nl\/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=\"nl_NL\" \/>\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\/nl\/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\udd47Overzicht en vergelijking van Ingress-controllers voor Kubernetes | ProHoster","description":"Bij het opstarten van een Kubernetes-cluster voor.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/31173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=31173"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/31173\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/23140"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=31173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=31173"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=31173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}