{"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\/da\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes","title":{"rendered":"Oversigt og sammenligning af Ingress controllere til Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Oversigt og sammenligning af Ingress controllere til Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3e6d3882a8f5a96a257fab4daaa230f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e5r man opstarter et Kubernetes-kluster for en specifik applikation, er det vigtigt at forst\u00e5, hvilke krav applikationen, virksomheden og udviklerne stiller til denne ressource. Med disse oplysninger kan man begynde at tr\u00e6ffe arkitektoniske beslutninger, herunder valg af specifik Ingress-controller, da der i dag allerede er mange tilg\u00e6ngelige. For at give en grundl\u00e6ggende forst\u00e5else af de tilg\u00e6ngelige muligheder uden at skulle gennemg\u00e5 adskillige artikler\/dokumentation mv., har vi udarbejdet denne oversigt, hvor vi inkluderer de vigtigste (production ready) Ingress-controllere.<\/p>\n<p>Vi h\u00e5ber, at den vil hj\u00e6lpe kollegerne i deres valg af arkitektonisk l\u00f8sning \u2014 i det mindste vil den fungere som et udgangspunkt for at f\u00e5 mere detaljeret information og praktiske eksperimenter. Forud har vi unders\u00f8gt andre lignende materialer online og, underligt nok, fandt vi ikke \u00e9t eneste mere eller mindre fyldestg\u00f8rende, og vigtigst af alt \u2014 struktureret \u2014 overblik. S\u00e5 lad os udfylde denne mangel!<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Kriterier<\/h2>\n<p>\nFor overhovedet at kunne foretage sammenligninger og opn\u00e5 et nyttigt resultat, skal man ikke blot forst\u00e5 emneomr\u00e5det, men ogs\u00e5 have en konkret liste over kriterier, der vil styre forskningen. Uden at p\u00e5tage os at analysere alle mulige anvendelsessager for Ingress\/Kubernetes, har vi str\u00e6bt efter at fremh\u00e6ve de mest generelle krav til controllere \u2014 v\u00e6r forberedt p\u00e5, at enhver specifik detalje og nuance i alle tilf\u00e6lde skal unders\u00f8ges separat.<\/p>\n<p>Men lad mig starte med de karakteristika, som er blevet s\u00e5 velkendte, at de er implementeret i alle l\u00f8sninger og derfor ikke diskuteres:<\/p>\n<ul>\n<li> dynamisk serviceopdagelse (service discovery);<\/li>\n<li> SSL-terminering;<\/li>\n<li> arbejde med websocket<\/li>\n<\/ul>\n<p>\nNu \u2014 til sammenligningspunkterne:<\/p>\n<h3>Underst\u00f8ttede protokoller<\/h3>\n<p>\nEn af de grundl\u00e6ggende kriterier for valg. Din software kan muligvis ikke k\u00f8re p\u00e5 standard HTTP eller kr\u00e6ve drift p\u00e5 flere protokoller samtidigt. Hvis dit tilf\u00e6lde er ikke-standard, s\u00e5 husk at tage denne faktor i betragtning, s\u00e5 du ikke senere skal omkonfigurere klustret. Listen over underst\u00f8ttede protokoller varierer blandt alle controllere.<\/p>\n<h3>Software i bunden<\/h3>\n<p>\nDer er flere applikationstyper, som controlleren er baseret p\u00e5. De mest popul\u00e6re er nginx, traefik, haproxy, envoy. Generelt set p\u00e5virker det muligvis ikke s\u00e5 meget, hvordan trafikken modtages og overf\u00f8res, men det er altid nyttigt at kende de potentielle nuancer og egenskaber ved det, der er \"under motorhjelmen\".<\/p>\n<h3>Trafikrouting<\/h3>\n<p>\nHvad kan man basere beslutningen om at dirigere trafikken til en bestemt service p\u00e5? Normalt er det host og path, men der kan ogs\u00e5 v\u00e6re yderligere muligheder.<\/p>\n<h3>Navnerum i klyngen<\/h3>\n<p>\nEt navnerum (namespace) giver mulighed for logisk at opdele ressourcer i Kubernetes (f.eks. i stage, production osv.). Der er Ingress-controllere, der skal installeres separat i hvert navnerum (og s\u00e5 kan de dirigere trafik <i>kun<\/i> i pods i dette rum). Der er dem (og de udg\u00f8r en klar majoritet), der arbejder globalt p\u00e5 hele klusteret \u2014 i dem dirigeres trafikken til enhver pod i klusteret, uanset namespaces.<\/p>\n<h3>Pr\u00f8ver til upstreams<\/h3>\n<p>\nHvordan sikres det, at trafikken dirigeres til sunde instanser af applikationer og services? Der er muligheder med aktive og passive tjek, genfors\u00f8g (retries), circuit breakers <i>(l\u00e6s mere om dem f.eks. i <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">artiklen om Istio<\/a><\/noindex>)<\/i>, egne implementationer af tilstandstjek (custom health checks) osv. Det er en meget vigtig parameter, hvis du har h\u00f8je krav til tilg\u00e6ngelighed og rettidig ekskludering af fejlfungerende services fra balanceringen.<\/p>\n<h3>Balanceringsalgoritmer<\/h3>\n<p>\nHer er der mange muligheder: fra traditionelle <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Round-robin_DNS\">rundt-rundt<\/a><\/noindex> til eksotiske som <noindex><a rel=\"nofollow\" href=\"http:\/\/www.loadbalancer.org\/blog\/load-balancing-windows-terminal-server-haproxy-and-rdp-cookies\/\">rdp-cookie<\/a><\/noindex>, samt unikke muligheder som <noindex><a rel=\"nofollow\" href=\"https:\/\/access.redhat.com\/solutions\/900933\">sticky sessions<\/a><\/noindex>.<\/p>\n<h3>Godkendelse<\/h3>\n<p>\nHvilke autorisationsskemaer underst\u00f8tter controlleren? Basic, digest, oauth, external-auth \u2014 jeg mener, at disse muligheder burde v\u00e6re velkendte. Det er et vigtigt kriterium, hvis der anvendes mange milj\u00f8er til udviklere (og\/eller bare lukkede), som tilg\u00e5s via Ingress. <\/p>\n<h3>Trafikfordeling<\/h3>\n<p>\nUnderst\u00f8tter controlleren s\u00e5danne ofte brugte mekanismer til trafikfordeling som kanariefors\u00f8g (canary), A\/B-testning, trafikspejling (mirroring\/shadowing)? Dette er et reelt problem for applikationer, der kr\u00e6ver omhyggelig og pr\u00e6cis trafikstyring til produktionsafpr\u00f8vning, fejlfinding af produktfejl uden at p\u00e5virke driften (eller med minimale tab), trafik-analyse osv.<\/p>\n<h3>Betalt abonnement<\/h3>\n<p>\nEr der en betalt version af controlleren med udvidede funktioner og\/eller teknisk support?<\/p>\n<h3>Grafisk brugergr\u00e6nseflade (Web UI)<\/h3>\n<p>\nEr der nogen grafisk brugergr\u00e6nseflade til at h\u00e5ndtere konfigurationen af controlleren? Prim\u00e6rt for bekvemmelighed og\/eller for dem, der har brug for at foretage \u00e6ndringer i Ingress' konfiguration, da det er besv\u00e6rligt at arbejde med 'r\u00e5' skabeloner. Det kan v\u00e6re nyttigt, hvis udviklerne \u00f8nsker at eksperimentere med trafik i realtid.<\/p>\n<h3>JWT-validering<\/h3>\n<p>\nInklusion af indbygget kontrol af JSON web-tokens til autentificering og validering af brugeren p\u00e5 den endelige applikation.<\/p>\n<h3>Muligheder for tilpasning af konfiguration<\/h3>\n<p>\nUdvidelighed af skabeloner i form af mekanismer, der g\u00f8r det muligt at tilf\u00f8je egne direktiver, flags osv. til de standard konfigurationsskabeloner.<\/p>\n<h3>Basisbeskyttelsesmekanismer mod DDoS<\/h3>\n<p>\nSimple rate limit-algoritmer eller mere komplekse varianter til at filtrere trafik baseret p\u00e5 adresser, whitelist, lande osv.<\/p>\n<h3>Anmodning tracing<\/h3>\n<p>\nMuligheder for overv\u00e5gning, sporbarhed og fejlfinding af foresp\u00f8rgsler fra Ingress til specifikke tjenester\/pods, og ideelt set ogs\u00e5 mellem tjenester\/pods.<\/p>\n<h3>WAF<\/h3>\n<p>\nSupport <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Web_application_firewall\">applikationsfirewall<\/a><\/noindex>.<\/p>\n<h2>Ingress-controllers<\/h2>\n<p>\nListen over controllere er baseret p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/ingress-controllers\/#additional-controllers\">den officielle dokumentation fra Kubernetes<\/a><\/noindex> og <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.google.com\/spreadsheets\/d\/16bxRgpO1H_Bn-5xVZ1WrR_I-0A-GOI6egmhvqqLMOmg\/edit\">denne tabel<\/a><\/noindex>. Nogle af dem har vi udelukket fra oversigten p\u00e5 grund af deres specifikhed eller lave udbredelse (tidlig udviklingsfase). De resterende er gennemg\u00e5et nedenfor. Vi starter med en generel beskrivelse af l\u00f8sningerne og forts\u00e6tter med den opsummerende tabel.<\/p>\n<h3>Ingress fra Kubernetes<\/h3>\n<p>\n<i>Websted: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/ingress-nginx\">github.com\/kubernetes\/ingress-nginx<\/a><\/noindex><\/i><br \/>\n<i>License: Apache 2.0<\/i><\/p>\n<p>Dette er den officielle controller til Kubernetes, som udvikles af f\u00e6llesskabet. Som navnet antyder, er den baseret p\u00e5 nginx og suppleres med et forskelligt s\u00e6t Lua-plugins, der anvendes til at implementere yderligere funktioner. Takket v\u00e6re populariteten af nginx og de minimale modifikationer, der er lavet ved brug som controller, kan denne version v\u00e6re den enkleste og mest forst\u00e5elige at konfigurere for en gennemsnitlig ingeni\u00f8r (med erfaring i web).<\/p>\n<h3>Ingress fra NGINX Inc<\/h3>\n<p>\n<i>Websted: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/kubernetes-ingress\">github.com\/nginxinc\/kubernetes-ingress<\/a><\/noindex><\/i><br \/>\n<i>License: Apache 2.0<\/i><\/p>\n<p>Det officielle produkt fra udviklerne af nginx. Har en betalt version baseret p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/products\/nginx\/\">NGINX Plus<\/a><\/noindex>Hovedideen er et h\u00f8jt niveau af stabilitet, konstant bagudkompatibilitet, frav\u00e6ret af eksterne moduler og en p\u00e5st\u00e5et \u00f8get hastighed (sammenlignet med den officielle controller), opn\u00e5et ved at undg\u00e5 Lua. <\/p>\n<p>Den gratis version er betydeligt begr\u00e6nset, selv ved sammenligning med den officielle controller (p\u00e5 grund af frav\u00e6ret af de samme Lua-moduler). Den betalte version har til geng\u00e6ld en bred vifte af ekstra funktionalitet: realtidsm\u00e5linger, JWT-validering, aktive health checks og mere. En vigtig fordel i forhold til NGINX Ingress er den fulde underst\u00f8ttelse af TCP\/UDP-trafik (ogs\u00e5 i community-versionen!). Ulempen er <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/kubernetes-ingress\/issues\/464\">manglende<\/a><\/noindex> funktioner til trafikfordeling, som dog \"har h\u00f8jeste prioritet for udviklerne\", men som kr\u00e6ver tid til implementering.<\/p>\n<h3>Kong Ingress<\/h3>\n<p>\n<i>Websted: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Kong\/kubernetes-ingress-controller\">github.com\/Kong\/kubernetes-ingress-controller<\/a><\/noindex><\/i><br \/>\n<i>License: Apache 2.0<\/i><\/p>\n<p>Produktet udvikles af Kong Inc. i to varianter: kommerciel og gratis. Det er baseret p\u00e5 NGINX, hvis muligheder er udvidet med et stort antal Lua-moduler.<\/p>\n<p>Oprindeligt blev det designet til behandling og ruteanmodninger til API'er, dvs. som en API Gateway, men er i dag blevet en fuldgyldig Ingress-controller. De prim\u00e6re fordele: mange ekstra moduler (ogs\u00e5 fra tredjepartsudviklere), som nemt kan installeres og konfigureres og som muligg\u00f8r et bredt spektrum af ekstra muligheder. Dog tilbyder de indbyggede funktioner allerede mange muligheder. Konfigurationen udf\u00f8res ved hj\u00e6lp af CRD-ressourcer.<\/p>\n<p>En vigtig egenskab ved produktet er arbejdet inden for en enkelt kontur (i stedet for cross-namespaced), hvilket er et omdiskuteret emne: nogle vil finde det en mangel (da man skal oprette entiteter for hver kontur), mens andre vil se det som en funktion (h\u00f8jt niveau af isolation, da hvis \u00e9n controller er defekt, er problemet begr\u00e6nset til kun \u00e9n kontur).<i>fleste af<\/i>Traefik<\/p>\n<h3>github.com\/containous\/traefik<\/h3>\n<p>\n<i>Websted: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/containous\/traefik\">Licens: MIT<\/a><\/noindex><\/i><br \/>\n<i>Licens: MIT<\/i><\/p>\n<p>Proxy, der oprindeligt blev oprettet til at h\u00e5ndtere anmodningsrouting til mikrotjenester og deres dynamiske milj\u00f8. Heraf mange nyttige funktioner: opdatering af konfigurationen helt uden genstart, underst\u00f8ttelse af en r\u00e6kke balanceringsmetoder, webgr\u00e6nseflade, metrics-forwarding, underst\u00f8ttelse af forskellige protokoller, REST API, kanariefugle-udgivelser og meget mere. En behagelig funktion er ogs\u00e5 underst\u00f8ttelsen af Let\u2019s Encrypt-certifikater ud af boksen. Ulempen er, at controlleren kr\u00e6ver installation og tilslutning af et eget KV-lager for at organisere h\u00f8j tilg\u00e6ngelighed (HA).<\/p>\n<h3>HAProxy<\/h3>\n<p>\n<i>Websted: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jcmoraisjr\/haproxy-ingress\">github.com\/jcmoraisjr\/haproxy-ingress<\/a><\/noindex><\/i><br \/>\n<i>License: Apache 2.0<\/i><\/p>\n<p>HAProxy er l\u00e6nge blevet kendt som proxy og trafikbalancer. I rammerne af Kubernetes-klusteret tilbydes \u00abbl\u00f8d\u00bb opdatering af konfigurationen (uden tab af trafik), service discovery baseret p\u00e5 DNS, dynamisk konfiguration via API. Den fulde tilpasning af konfigurationsskabeloner ved hj\u00e6lp af erstatning af CM samt muligheden for at bruge funktioner fra Sprig-biblioteket kan v\u00e6re attraktivt. Generelt er fokus for l\u00f8sningen p\u00e5 h\u00f8j hastighed, optimering og effektivitet i ressourceforbruget. Fordelen ved controlleren er underst\u00f8ttelse af et rekordstort antal forskellige balanceringsmetoder.<\/p>\n<h3>Voyager<\/h3>\n<p>\n<i>Websted: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/appscode\/voyager\">github.com\/appscode\/voyager<\/a><\/noindex><\/i><br \/>\n<i>License: Apache 2.0<\/i><\/p>\n<p>En controller baseret p\u00e5 HAproxy, der positioneres som en universel l\u00f8sning, der underst\u00f8tter brede muligheder hos mange udbydere. Muligheden for at balancere trafik p\u00e5 L7 og L4 tilbydes, og L4-balancering af TCP-trafik kan generelt betragtes som en af de vigtigste funktioner i l\u00f8sningen.<\/p>\n<h3>Contour<\/h3>\n<p>\n<i>Websted: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/heptio\/contour\">github.com\/heptio\/contour<\/a><\/noindex><\/i><br \/>\n<i>License: Apache 2.0<\/i><\/p>\n<p>Denne l\u00f8sning er ikke kun baseret p\u00e5 Envoy: den er udviklet <i>sammen<\/i> med skaberne af denne popul\u00e6re proxy. En vigtig funktion er muligheden for at adskille styringen af Ingress-ressourcer ved hj\u00e6lp af CRD-ressourcer IngressRoute. For organisationer med mange udviklingsteams, der bruger et enkelt kluster, hj\u00e6lper dette med at maksimere sikkerheden i arbejdet med trafikken i nabokonturer og beskytte dem mod fejl ved \u00e6ndringer af Ingress-ressourcer.<\/p>\n<p>Der tilbydes ogs\u00e5 et udvidet s\u00e6t balanceringsmetoder (inklusive spejling af anmodninger, automatisk genfors\u00f8g, hastighedsbegr\u00e6nsninger og meget mere), detaljeret overv\u00e5gning af trafikstr\u00f8mmen og fejl. For nogle kan det v\u00e6re en v\u00e6sentlig ulempe, at der ikke er st\u00f8tte til sticky sessions (selvom det arbejdes p\u00e5). <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/heptio\/contour\/issues\/361\">Der arbejdes allerede<\/a><\/noindex>).<\/p>\n<h3>Istio Ingress<\/h3>\n<p>\n<i>Websted: <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>License: Apache 2.0<\/i><\/p>\n<p>En helhedsorienteret service mesh-l\u00f8sning, der ikke blot fungerer som en Ingress-controller til at styre den indkommende trafik udefra, men ogs\u00e5 kontrollerer al trafik inden for klyngen. \u2018Under motorhjelmen\u2019 bruges Envoy som sidecar-proxy for hver tjeneste. I bund og grund er det en stor kombination, der \u2018kan alt\u2019, og dens hovedid\u00e9 er maksimal styring, skalerbarhed, sikkerhed og gennemsigtighed. Ved hj\u00e6lp af dette kan du detaljejustere trafikrouting, adgangsautorisering mellem tjenester, belastningsfordeling, overv\u00e5gning, kanariefugleudgivelser og meget mere. L\u00e6s mere om Istio i en serie artikler \u2018<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">Tilbage til mikrotjenester med Istio<\/a><\/noindex>\u00bb.<\/p>\n<h3>Ambassador<\/h3>\n<p>\n<i>Websted: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/datawire\/ambassador\">github.com\/datawire\/ambassador<\/a><\/noindex><\/i><br \/>\n<i>License: Apache 2.0<\/i><\/p>\n<p>Endnu en l\u00f8sning baseret p\u00e5 Envoy. Den har b\u00e5de gratis og kommercielle versioner. Den pr\u00e6senteres som \u2018fuldst\u00e6ndig native til Kubernetes\u2019, hvilket giver tilsvarende fordele (t\u00e6t integration med metoder og entiteter fra K8s-klusteret).<\/p>\n<h2>Sammenligningstabel<\/h2>\n<p>\nS\u00e5, artikelens h\u00f8jdepunkt \u2014 denne enorme tabel:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ss\/wh\/lj\/sswhljo-rjkms7nadtyewqkxrdi.png\"><img decoding=\"async\" alt=\"Oversigt og sammenligning af Ingress controllere til Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3a6c552df6b8b7b6a88517046fa7a275.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Den er klikbar for mulighed for en mere detaljeret visning og kan ogs\u00e5 f\u00e5s i formatet <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1xjff2AMS6QXSdh8E8ay_uNMoUa2OLIanCallvkDvAy0\/edit#gid=0\">Google Sheets<\/a><\/noindex>.<\/p>\n<h2>Lad os opsummere<\/h2>\n<p>\nForm\u00e5let med artiklen er at give en mere komplet forst\u00e5else (selv om det helt klart ikke er udt\u00f8mmende!) af, hvilket valg der skal tr\u00e6ffes i din specifikke situation. Som det ofte er tilf\u00e6ldet, har hver controller sine fordele og ulemper\u2026<\/p>\n<p>Klassisk Ingress fra Kubernetes er godt kendt for sin tilg\u00e6ngelighed og p\u00e5lidelighed og tilbyder rigelige muligheder - generelt set burde det v\u00e6re \"nok\". Men hvis der er forh\u00f8jede krav til stabilitet, funktionsniveau og udvikling, er det v\u00e6rd at overveje Ingress med NGINX Plus og et betalt abonnement. Kong har et meget rigt udvalg af plug-ins (og dermed de muligheder, de tilbyder), og i den betalte version er der endda flere. Den har store muligheder som API Gateway, dynamisk konfiguration baseret p\u00e5 CRD-ressourcer samt grundl\u00e6ggende Kubernetes-tjenester.<\/p>\n<p>Ved forh\u00f8jede krav til load balancing og autorisationsmetoder b\u00f8r du kigge p\u00e5 Traefik og HAProxy. Disse er Open Source-projekter, der er blevet testet gennem \u00e5rene, meget stabile og aktivt udviklende. Contour har v\u00e6ret p\u00e5 markedet i et par \u00e5r, men ser stadig for ung ud og har kun de grundl\u00e6ggende funktioner tilf\u00f8jet oven p\u00e5 Envoy. Hvis der er krav om at have\/implementere WAF foran applikationen, er det v\u00e6rd at se n\u00e6rmere p\u00e5 Ingress fra Kubernetes eller HAProxy.<\/p>\n<p>De mest funktionsrige produkter er dem, der er bygget p\u00e5 Envoy, is\u00e6r Istio. Det fremst\u00e5r som en omfattende l\u00f8sning, der \"kan det hele\", hvilket dog ogs\u00e5 betyder en betydeligt h\u00f8jere indl\u00e6ringskurve for konfiguration, ops\u00e6tning og administration end andre l\u00f8sninger.<\/p>\n<p>Vi har valgt Ingress fra Kubernetes som standardcontroller, som fortsat anvendes, og som d\u00e6kker 80\u201490% af behovene. Det er p\u00e5lideligt, let at konfigurere og udvide. Generelt set, ved manglende specifikke krav, b\u00f8r det v\u00e6re passende for de fleste klynger\/applikationer. Blandt andre alsidige og relativt simple produkter kan Traefik og HAProxy anbefales.<\/p>\n<h2>P.S.<\/h2>\n<p>\nL\u00e6s ogs\u00e5 p\u00e5 vores blog:<\/p>\n<ul>\n<li> \u00abTilbage til mikrotjenester sammen med Istio\u00bb: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">del 1 (introduktion til de grundl\u00e6ggende funktioner)<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/440378\/\">del 2 (routing, trafikstyring)<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/443668\/\">del 3 (autentifikation og autorisation)<\/a><\/noindex>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/445596\/\">Kubernetes tips &amp; tricks: personaliserede fejl-sider i 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: adgang til dev-milj\u00f8er<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Kilde: <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\/da\/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=\"da_DK\" \/>\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\/da\/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\udd47Oversigt og sammenligning af Ingress-controllere for Kubernetes | ProHoster","description":"Ved opstart af et Kubernetes-klynge for.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/31173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=31173"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/31173\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/23140"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=31173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=31173"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=31173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}