{"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\/de\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes","title":{"rendered":"\u00dcberblick und Vergleich von Ingress-Controllern f\u00fcr Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"\u00dcberblick und Vergleich von Ingress-Controllern f\u00fcr Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3e6d3882a8f5a96a257fab4daaa230f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBeim Start eines Kubernetes-Clusters f\u00fcr eine bestimmte Anwendung sollte man verstehen, welche Anforderungen die Anwendung, das Unternehmen und die Entwickler an diese Ressource stellen. Mit diesen Informationen kann man mit der architektonischen Entscheidungsfindung beginnen, insbesondere mit der Auswahl eines spezifischen Ingress-Controllers, von denen es heutzutage bereits viele gibt. Um eine grundlegende Vorstellung von den verf\u00fcgbaren Optionen zu erhalten, ohne eine Vielzahl von Artikeln\/Dokumentationen usw. durchlesen zu m\u00fcssen, haben wir diesen \u00dcberblick vorbereitet und dabei die wichtigsten (produktionsbereiten) Ingress-Controller aufgenommen.<\/p>\n<p>Wir hoffen, dass er den Kollegen bei der Auswahl der architektonischen L\u00f6sung hilft \u2014 zumindest als Ausgangspunkt f\u00fcr detailliertere Informationen und praktische Experimente dient. Vorab haben wir andere \u00e4hnliche Materialien im Netz untersucht und, merkw\u00fcrdigerweise, kein einziges umfassendes, vor allem aber strukturiertes, Review gefunden. Lassen Sie uns also diese L\u00fccke f\u00fcllen!<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Kriterien<\/h2>\n<p>\nUm \u00fcberhaupt einen Vergleich anzustellen und ein einigerma\u00dfen n\u00fctzliches Ergebnis zu erzielen, muss man nicht nur das Fachgebiet verstehen, sondern auch eine konkrete Liste von Kriterien haben, die den Forschungsschwerpunkt bestimmen. Ohne den Anspruch, alle m\u00f6glichen Anwendungsf\u00e4lle von Ingress\/Kubernetes zu analysieren, haben wir versucht, die allgemeinsten Anforderungen an Controllers herauszuarbeiten \u2014 seien Sie darauf vorbereitet, dass Sie alle spezifischen Details und Besonderheiten dennoch separat studieren m\u00fcssen.<\/p>\n<p>Ich werde jedoch mit den Merkmalen beginnen, die so vertraut geworden sind, dass sie in allen L\u00f6sungen implementiert sind und nicht weiter betrachtet werden:<\/p>\n<ul>\n<li> dynamische Service-Erkennung (service discovery);<\/li>\n<li> SSL-Terminierung;<\/li>\n<li> Arbeiten mit Websockets.<\/li>\n<\/ul>\n<p>\nJetzt zu den Vergleichspunkten:<\/p>\n<h3>Unterst\u00fctzte Protokolle<\/h3>\n<p>\nEines der grundlegenden Kriterien f\u00fcr die Auswahl. Ihre Software arbeitet m\u00f6glicherweise nicht mit dem Standard-HTTP oder erfordert die gleichzeitige Nutzung mehrerer Protokolle. Wenn Ihr Fall nicht standardisiert ist, sollten Sie diesen Faktor unbedingt ber\u00fccksichtigen, um sp\u00e4teren Aufwand bei der Neukonfiguration des Clusters zu vermeiden. Bei allen Controllern variiert die Liste der unterst\u00fctzten Protokolle.<\/p>\n<h3>Software im Kern<\/h3>\n<p>\nEs gibt mehrere Varianten von Anwendungen, auf denen der Controller basiert. Beliebte sind nginx, traefik, haproxy, envoy. Im Allgemeinen hat dies m\u00f6glicherweise keinen wesentlichen Einfluss darauf, wie der Datenverkehr empfangen und \u00fcbertragen wird, jedoch ist es immer n\u00fctzlich, die potenziellen Nuancen und Besonderheiten zu kennen, die \u201eunter der Haube\u201c verborgen sind.<\/p>\n<h3>Datenverkehrsweiterleitung<\/h3>\n<p>\nAuf welcher Basis kann man entscheiden, in welchen Dienst der Datenverkehr geleitet wird? Normalerweise sind dies host und path, aber es gibt auch zus\u00e4tzliche M\u00f6glichkeiten.<\/p>\n<h3>Namensraum innerhalb des Clusters<\/h3>\n<p>\nEin Namensraum (namespace) ist die M\u00f6glichkeit, Ressourcen in Kubernetes logisch zu organisieren (zum Beispiel in stage, production usw.). Es gibt Ingress-Controller, die separat in jeden Namensraum installiert werden m\u00fcssen (und dann kann er den Datenverkehr <i>nur<\/i> In den Pods dieses Raums). Es gibt jedoch solche (und deren \u00fcberwiegende Mehrheit), die global f\u00fcr den gesamten Cluster arbeiten \u2013 der Verkehr wird an jeden Pod des Clusters weitergeleitet, unabh\u00e4ngig vom Namespace.<\/p>\n<h3>Testf\u00e4lle f\u00fcr Upstreams<\/h3>\n<p>\nWie wird sichergestellt, dass der Datenverkehr an gesunde Instanzen von Anwendungen und Diensten geleitet wird? Es gibt Optionen mit aktiven und passiven \u00dcberpr\u00fcfungen, Wiederholungen (retries), circuit breakers <i>(mehr dazu siehe zum Beispiel in <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">dem Artikel \u00fcber Istio<\/a><\/noindex>)<\/i>, eigenen Implementierungen von Statuspr\u00fcfungen (custom health checks) usw. Ein \u00e4u\u00dferst wichtiger Parameter, wenn Sie hohe Anforderungen an die Verf\u00fcgbarkeit und zum rechtzeitigen Ausschluss ausgefallener Dienste haben.<\/p>\n<h3>Lastenausgleichsalgorithmen<\/h3>\n<p>\nHier gibt es viele Optionen: von traditionellen <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Round-robin_DNS\">round-robin<\/a><\/noindex> bis hin zu exotischen wie <noindex><a rel=\"nofollow\" href=\"http:\/\/www.loadbalancer.org\/blog\/load-balancing-windows-terminal-server-haproxy-and-rdp-cookies\/\">rdp-cookie<\/a><\/noindex>, sowie separate M\u00f6glichkeiten wie <noindex><a rel=\"nofollow\" href=\"https:\/\/access.redhat.com\/solutions\/900933\">Sticky Sessions<\/a><\/noindex>.<\/p>\n<h3>Authentifizierung<\/h3>\n<p>\nWelche Autorisierungsschemata unterst\u00fctzt der Controller? Basic, Digest, OAuth, External-Auth \u2014 ich denke, diese Optionen sollten bekannt sein. Dies ist ein wichtiges Kriterium, wenn mehrere Konturen f\u00fcr Entwickler (und\/oder einfach geschlossene) verwendet werden, auf die \u00fcber Ingress zugegriffen wird. <\/p>\n<h3>Verteilung des Datenverkehrs<\/h3>\n<p>\nUnterst\u00fctzt der Controller g\u00e4ngige Mechanismen zur Verteilung des Datenverkehrs wie Canary-Deployments, A\/B-Tests, Datenverkehrs-Mirroring (mirroring\/shadowing)? Dies ist ein wirklich schwieriges Thema f\u00fcr Anwendungen, die pr\u00e4zise und sorgf\u00e4ltige Datenverkehrssteuerung f\u00fcr produktive Tests, Produktfehlerdebugging ohne Produktionsausf\u00e4lle (oder mit minimalen Verlusten), Datenverkehrsanalyse usw. erfordern.<\/p>\n<h3>Bezahltes Abonnement<\/h3>\n<p>\nGibt es eine kostenpflichtige Variante des Controllers mit erweiterten Funktionalit\u00e4ten und\/oder technischem Support?<\/p>\n<h3>Grafische Benutzeroberfl\u00e4che (Web-UI)<\/h3>\n<p>\nGibt es eine grafische Benutzeroberfl\u00e4che zur Verwaltung der Controller-Konfiguration? Vor allem f\u00fcr die \u201eBenutzerfreundlichkeit\u201c und\/oder f\u00fcr diejenigen, die \u00c4nderungen an der Ingress-Konfiguration vornehmen m\u00fcssen, w\u00e4hrend die Arbeit mit \u201erohen\u201c Vorlagen unangenehm ist. K\u00f6nnte n\u00fctzlich sein, wenn Entwickler in Echtzeit mit dem Verkehr experimentieren wollen.<\/p>\n<h3>JWT-Validierung<\/h3>\n<p>\nVorhandensein einer integrierten Pr\u00fcfung von JSON-Web-Token zur Autorisierung und Validierung von Benutzern im Endanwendung.<\/p>\n<h3>Anpassungsm\u00f6glichkeiten der Konfiguration<\/h3>\n<p>\nErweiterbarkeit der Vorlagen hinsichtlich des Vorhandenseins von Mechanismen, die das Hinzuf\u00fcgen eigener Direktiven, Flags usw. zu den Standardkonfigurationsvorlagen erm\u00f6glichen.<\/p>\n<h3>Grundlegende DDoS-Schutzmechanismen<\/h3>\n<p>\nEinfache Rate-Limitierungsalgorithmen oder komplexere Varianten zur Filterung des Verkehrs basierend auf Adressen, White-Listen, L\u00e4ndern usw.<\/p>\n<h3>Anforderungsverfolgung<\/h3>\n<p>\n\u00dcberwachungs-, Tracking- und Debuggingm\u00f6glichkeiten von Anfragen von Ingress zu bestimmten Diensten\/Pods und idealerweise auch zwischen Diensten\/Pods.<\/p>\n<h3>WAF<\/h3>\n<p>\nBestellen <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Web_application_firewall\">Anwendungsfirewall<\/a><\/noindex>.<\/p>\n<h2>Ingress-Controller<\/h2>\n<p>\nDie Liste der Controller wurde auf Basis von <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/ingress-controllers\/#additional-controllers\">offiziellen Kubernetes-Dokumentation<\/a><\/noindex> und <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.google.com\/spreadsheets\/d\/16bxRgpO1H_Bn-5xVZ1WrR_I-0A-GOI6egmhvqqLMOmg\/edit\">dieser Tabelle<\/a><\/noindex>. Einige von ihnen haben wir aus der \u00dcbersicht ausgeschlossen aufgrund ihrer Spezifit\u00e4t oder geringen Verbreitung (fr\u00fche Entwicklungsphase). Die verbleibenden werden nachfolgend behandelt. Wir beginnen mit einer allgemeinen Beschreibung der L\u00f6sungen und setzen die Zusammenfassung in einer Tabelle fort.<\/p>\n<h3>Ingress von 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>Lizenz: Apache 2.0<\/i><\/p>\n<p>Dies ist der offizielle Controller f\u00fcr Kubernetes, der von der Community entwickelt wird. Offensichtlich aus dem Namen, basiert er auf Nginx und wird durch eine Vielzahl von Lua-Plugins erg\u00e4nzt, die zur Implementierung zus\u00e4tzlicher Funktionen verwendet werden. Aufgrund der Popularit\u00e4t von Nginx und der minimalen Modifikationen, die bei der Verwendung als Controller vorgenommen werden, kann diese Variante die einfachste und verst\u00e4ndlichste Konfiguration f\u00fcr einen durchschnittlichen Ingenieur (mit Web-Erfahrung) sein.<\/p>\n<h3>Ingress von 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>Lizenz: Apache 2.0<\/i><\/p>\n<p>Offizielles Produkt der Nginx-Entwickler. Hat eine kostenpflichtige Version, die auf <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/products\/nginx\/\">NGINX Plus<\/a><\/noindex>. Die Hauptidee ist ein hohes Ma\u00df an Stabilit\u00e4t, st\u00e4ndige Abw\u00e4rtskompatibilit\u00e4t, das Fehlen von Fremdmodulen und die angek\u00fcndigte erh\u00f6hte Geschwindigkeit (im Vergleich zum offiziellen Controller), die durch den Verzicht auf Lua erreicht wurde. <\/p>\n<p>Die kostenlose Version ist erheblich eingeschr\u00e4nkt, selbst im Vergleich zum offiziellen Controller (aufgrund des Fehlens der gleichen Lua-Module). Die kostenpflichtige Version bietet hingegen eine ziemlich breite zus\u00e4tzliche Funktionalit\u00e4t: Echtzeit-Metriken, JWT-Validierung, aktive Health Checks und mehr. Ein wichtiges Vorteil gegen\u00fcber NGINX Ingress ist die vollst\u00e4ndige Unterst\u00fctzung von TCP\/UDP-Verkehr (auch in der Community-Version!). Nachteil \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/kubernetes-ingress\/issues\/464\">das Fehlen<\/a><\/noindex> von Funktionen zur Verkehrsverteilung, was jedoch \u201eh\u00f6chste Priorit\u00e4t f\u00fcr die Entwickler hat\u201c, aber Zeit zur Umsetzung erfordert.<\/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>Lizenz: Apache 2.0<\/i><\/p>\n<p>Ein Produkt, das von der Firma Kong Inc. in zwei Varianten entwickelt wird: kommerziell und kostenlos. Es basiert auf NGINX, dessen M\u00f6glichkeiten durch eine gro\u00dfe Anzahl an Lua-Modulen erweitert werden.<\/p>\n<p>Urspr\u00fcnglich war es auf die Verarbeitung und das Routing von API-Anfragen, d.h. als API Gateway, ausgelegt, hat sich jedoch inzwischen zu einem vollwertigen Ingress-Controller entwickelt. Zu den Hauptvorteilen geh\u00f6ren zahlreiche zus\u00e4tzliche Module (auch von Drittanbietern), die leicht installiert und konfiguriert werden k\u00f6nnen und mit denen ein breites Spektrum zus\u00e4tzlicher Funktionen realisiert werden kann. Dennoch bieten die eingebauten Funktionen bereits viele M\u00f6glichkeiten. Die Konfiguration erfolgt \u00fcber CRD-Ressourcen.<\/p>\n<p>Ein wichtiges Merkmal des Produkts ist die Arbeit innerhalb eines einzelnen Kontexts (anstatt cross-namespaced), was ein strittiges Thema ist: Manche werden es als Nachteil empfinden (man muss Entit\u00e4ten f\u00fcr jeden Kontext erstellen), w\u00e4hrend es f\u00fcr andere ein Feature ist (gr\u00f6\u00dfere Isolation, da, wenn ein Controller ausf\u00e4llt, das Problem nur auf einen einzigen Kontext beschr\u00e4nkt ist).<i>o<\/i>github.com\/containous\/traefik<\/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>Lizenz: MIT<\/i><\/p>\n<p>Ein Proxy, der urspr\u00fcnglich f\u00fcr die Verarbeitung von Anfrage-Routing f\u00fcr Mikrodienste und ihre dynamische Umgebung konzipiert wurde. Daher viele n\u00fctzliche Funktionen: Konfigurationsaktualisierungen komplett ohne Neustarts, Unterst\u00fctzung vieler Lastverteilungsmechanismen, Weboberfl\u00e4che, Metrik-Weiterleitung, Unterst\u00fctzung verschiedener Protokolle, REST API, Canary-Releases und vieles mehr. Eine angenehme Eigenschaft ist auch die Unterst\u00fctzung von Let\u2019s Encrypt-Zertifikaten bereits out-of-the-box. Nachteil \u2013 zur Gew\u00e4hrleistung einer hohen Verf\u00fcgbarkeit (HA) muss f\u00fcr den Controller eine eigene KV-Speicherl\u00f6sung installiert und angeschlossen werden.<\/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>Lizenz: Apache 2.0<\/i><\/p>\n<p>HAProxy ist seit langem als Proxy und Lastverteiler bekannt. Im Rahmen eines Kubernetes-Clusters wird ein \u201esanftes\u201c Konfigurationsupdate (ohne Traffic-Verlust), DNS-basiertes Service Discovery und dynamische Konfiguration \u00fcber die API angeboten. Besonders attraktiv ist die vollst\u00e4ndige Anpassung des Konfigurationsvorlagen durch das Ersetzen von CM sowie die M\u00f6glichkeit, Funktionen der Sprig-Bibliothek zu nutzen. Insgesamt liegt der Schwerpunkt der L\u00f6sung auf hoher Bearbeitungsgeschwindigkeit, Optimierung und Effizienz im Ressourcenverbrauch. Ein Vorteil des Controllers ist die Unterst\u00fctzung einer rekordverd\u00e4chtigen Anzahl verschiedener Lastverteilungsmethoden.<\/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>Lizenz: Apache 2.0<\/i><\/p>\n<p>Ein auf HAProxy basierender Controller, der als universelle L\u00f6sung positioniert ist und umfangreiche Funktionen auf einer Vielzahl von Anbietern unterst\u00fctzt. Er bietet die M\u00f6glichkeit, den Traffic auf L7 und L4 zu balancieren, wobei die Balance von TCP L4-Traffic insgesamt als eines der Hauptmerkmale der L\u00f6sung bezeichnet werden kann.<\/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>Lizenz: Apache 2.0<\/i><\/p>\n<p>Dieses Konzept basiert nicht nur auf Envoy: es wurde entwickelt <i>gemeinsam<\/i> von den Autoren dieses beliebten Proxys. Ein wichtiges Merkmal ist die M\u00f6glichkeit, die Verwaltung der Ingress-Ressourcen mithilfe von CRD-Ressourcen IngressRoute zu trennen. F\u00fcr Organisationen mit zahlreichen Entwicklungsteams, die einen Cluster nutzen, hilft dies, den Umgang mit Traffic in benachbarten Containern maximal abzusichern und sie vor Fehlern bei der \u00c4nderung von Ingress-Ressourcen zu sch\u00fctzen.<\/p>\n<p>Es wird auch ein erweitertes Set an Lastverteilungsmethoden angeboten (es gibt Anfrage-Spiegelung, automatische Wiederholungen, Begrenzung der Anfragen und vieles mehr), detaillierte \u00dcberwachung des Datenverkehrsflusses und von Fehlern. F\u00fcr einige k\u00f6nnte das Fehlen von Sticky Sessions ein erhebliches Manko darstellen (obwohl Arbeiten <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/heptio\/contour\/issues\/361\">Es werden bereits Arbeiten durchgef\u00fchrt.<\/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>Lizenz: Apache 2.0<\/i><\/p>\n<p>Eine umfassende Service-Mesh-L\u00f6sung, die nicht nur als Ingress-Controller fungiert, der den eingehenden Verkehr von au\u00dfen verwaltet, sondern auch den gesamten Verkehr innerhalb des Clusters kontrolliert. 'Unter der Haube' wird Envoy als Sidecar-Proxy f\u00fcr jeden Dienst verwendet. Essenziell ist dies ein gro\u00dfes Kraftpaket, das 'alles kann', und seine Hauptidee besteht darin, maximalen Einfluss, Erweiterbarkeit, Sicherheit und Transparenz zu bieten. Mit seiner Hilfe k\u00f6nnen Sie die Datenverkehrsroute, den Zugriff zwischen den Diensten, die Lastverteilung, das Monitoring, Canary-Releases und vieles mehr bis ins kleinste Detail konfigurieren. Weitere Informationen zu Istio finden Sie in der Artikelreihe \u201e<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">Zur\u00fcck zu Mikrodiensten mit 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>Lizenz: Apache 2.0<\/i><\/p>\n<p>Eine weitere L\u00f6sung auf Basis von Envoy. Verf\u00fcgbar in kostenlosen und kommerziellen Versionen. Positioniert sich als 'vollst\u00e4ndig nativ f\u00fcr Kubernetes', was entsprechende Vorteile mit sich bringt (enge Integration mit den Methoden und Entit\u00e4ten des K8s-Clusters).<\/p>\n<h2>Vergleichstabelle<\/h2>\n<p>\nDie H\u00f6hepunkt des Artikels ist diese riesige Tabelle:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ss\/wh\/lj\/sswhljo-rjkms7nadtyewqkxrdi.png\"><img decoding=\"async\" alt=\"\u00dcberblick und Vergleich von Ingress-Controllern f\u00fcr Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3a6c552df6b8b7b6a88517046fa7a275.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Sie ist klickbar, um eine detailliertere Ansicht zu erm\u00f6glichen, und steht auch im Format <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1xjff2AMS6QXSdh8E8ay_uNMoUa2OLIanCallvkDvAy0\/edit#gid=0\">Google Sheets<\/a><\/noindex>.<\/p>\n<h2>Lassen Sie uns zusammenfassen<\/h2>\n<p>\nZiel des Artikels ist es, ein umfassenderes Verst\u00e4ndnis zu vermitteln (wenn auch nicht vollst\u00e4ndig!), welche Wahl Sie in Ihrem speziellen Fall treffen sollten. Wie \u00fcblich hat jeder Controller seine Vor- und Nachteile...<\/p>\n<p>Der klassische Ingress von Kubernetes \u00fcberzeugt durch seine Verf\u00fcgbarkeit und Verl\u00e4sslichkeit sowie durch recht umfangreiche Funktionen \u2013 in den meisten F\u00e4llen sollte er \u201eausreichend sein\u201c. Wenn jedoch h\u00f6here Anforderungen an Stabilit\u00e4t, Feature-Stufen und Entwicklung bestehen, ist es ratsam, sich Ingress mit NGINX Plus und einem kostenpflichtigen Abonnement anzusehen. Kong bietet eine sehr umfangreiche Sammlung von Plugins (und damit verbundenen M\u00f6glichkeiten), wobei in der kostenpflichtigen Version sogar noch mehr vorhanden sind. Er hat weitreichende Funktionen als API-Gateway, dynamische Konfiguration basierend auf CRD-Ressourcen sowie grundlegende Kubernetes-Dienste.<\/p>\n<p>Bei h\u00f6heren Anforderungen an das Lastenausgleich und die Autorisierungsmethoden sollten Sie sich Traefik und HAProxy genauer ansehen. Diese Open-Source-Projekte sind seit Jahren erprobt, sehr stabil und werden aktiv weiterentwickelt. Contour existiert seit einigen Jahren, wirkt aber immer noch zu jung und hat nur grundlegende Funktionen, die auf Envoy aufgebaut sind. Wenn es Anforderungen an das Vorhandensein\/Integration eines WAF vor der Anwendung gibt, sollte man ebenfalls auf Ingress von Kubernetes oder HAProxy achten.<\/p>\n<p>Die funktional reichhaltigsten Produkte basieren auf Envoy, insbesondere Istio. Es pr\u00e4sentiert sich als umfassende L\u00f6sung, die \u201ealles kann\u201c, was allerdings auch einen bedeutend h\u00f6heren Konfigurations- und Administrationsaufwand im Vergleich zu anderen L\u00f6sungen bedeutet.<\/p>\n<p>Wir haben als Standard-Controller den Ingress von Kubernetes ausgew\u00e4hlt, der weiterhin verwendet wird und 80\u201390 % der Anforderungen abdeckt. Er ist zuverl\u00e4ssig, einfach zu konfigurieren und zu erweitern. In den meisten F\u00e4llen sollte er ohne spezifische Anforderungen f\u00fcr die meisten Cluster\/Anwendungen geeignet sein. Aus \u00e4hnlichen universellen und relativ einfachen Produkten k\u00f6nnen Traefik und HAProxy empfohlen werden.<\/p>\n<h2>P.S.<\/h2>\n<p>\nLesen Sie auch in unserem Blog:<\/p>\n<ul>\n<li> Teil 1 (Eintreffen auf die grundlegenden M\u00f6glichkeiten) <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">Teil 3 (Authentifizierung und Autorisierung)<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/440378\/\">Teil 2 (Routing, Verkehrsmanagement)<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/443668\/\">Conduit - ein leichtgewichtiger Service Mesh f\u00fcr Kubernetes<\/a><\/noindex>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/445596\/\">Kubernetes Tipps &amp; Tricks: personalisierte Fehlerseiten in NGINX Ingress<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/427745\/\">Kubernetes Tipps &amp; Tricks: Zugang zu Entwicklungsplattformen<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Quelle: <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.1.1 - 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\/de\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\/de\/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\u00dcberblick und Vergleich von Ingress-Controllern f\u00fcr Kubernetes | ProHoster","description":"Beim Start eines Kubernetes-Clusters f\u00fcr.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/31173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=31173"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/31173\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/23140"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=31173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=31173"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=31173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}