Gloo Edge verleimt heterogene Backends zu einheitlichen APIs

Von: Valentin Brückel
Datum: 10. Februar 2021

Gloo Edge ist ein Open Source API-Gateway auf Basis des reverse Proxy Envoy. Das API Gateway kann Microservices, Serverless Functions und Legacy Anwendungen über ein einheitliches HTTP basiertes API zur Verfügung stellen. Die Kommunikation mit den Backend-Systemen kann mit beliebigen Protokollen auf Basis von HTTP oder HTTP/2 erfolgen. Für Kubernetes kann Gloo als Ingress-Controller dienen und Service-Mesh-Lösungen wie Istio und Linkerd ergänzen.

Stats

  • 2.800 Github-Sterne (Februar 2021)
  • Hersteller: solo.io
  • In Go geschrieben

1. Features

Gloo kann Microservice APIs und Cloud-Dienste in einem API nahtlos vereinen. HTTP-Anfragen können unverändert an Backends durchgereicht oder:

  • in Aufrufe anderer Dienste z.B. nach GraphQL transformiert werden
  • Funktionsaufrufe in Cloud-Diensten triggern
  • direkt von Gloo beantwortet werden (z.B. Cache oder Mock)

Gängige Microservice-Patterns wie Load Balancing, Shadowing und Canary Deployments werden von Gloo unterstützt. Ferner integriert es Service- und Function Discovery für Swagger, gRPC, GraphQL und FaaS-Dienste wie AWS Lambda, Google Cloud Functions und Azure Functions.

1. Architektur

Gloo Edge ist aus Anwendersicht ein Kommandozeilen-Programm, das Kubernetes oder Hashicorp Nomad mit einem passend konfigurierten Envoy-Proxy versieht. Aus der Cluster-Konfiguration definiert Gloo Filter, die ankommenden Datenverkehr dynamisch an Dienste im Cluster oder externe (Cloud-)Dienste weiterleiten.

GlooEdge API Architektur

Abbildung : Gloo vereint interne und externe Funktionen zu einem einheitlichen API

1. Lizenz

Neben der Open-Source-Software Gloo Edge existiert eine kommerzielle Version Gloo Edge Enterprise.

Die wichtigste Einschränkung der quelloffenen Version ist das Fehlen von Authentifizierungs-Mechanimen mit Ausnahme einer Schnittstelle für eigene Authentifizierungs-Server. Basic Auth, OAuth, JWT, API-Keys, OPA und LDAP sind der Enterprise-Version vorbehalten.

1. Installation

Gloo wird über das Kommandozeilen-Tool glooctl oder ein Helm-Chart installiert.

Das Tool glooctl kann z.B. über brew installiert werden. Danach kann mit einem einzigen Befehl ein Kubernetes-Cluster für die Nutzung von Gloo umkonfiguriert werden.

1. Konfiguration

Konfigurationsänderungen werden mit den Kommandozeilen-Werkzeugen kubectl und glooctl durchgeführt. Eine vollständige Konfiguration kann als YAML oder über eine Änderung mit glooctl durchgeführt werden.

Läuft beispielsweise in einem Kubernetes-Cluster ein Service petstore, dann genügt ein einzeiliger Aufruf von glooctl, um einen REST-Endpunkt des Service nach außen zugänglich zu machen:

			glooctl add route \
			--path-exact /all-pets \
			--dest-name default-petstore-8080 \
			--prefix-rewrite /api/pets
				
Listing 1: Definition einer Route mit glooctl

Aufrufe nach http://$PUBLIC_IP/all-pets werden nun an den Endpunkt /api/pets des petstore-Service weitergeleitet.

1. Benutzeroberfläche

Gloo Edge beinhaltet ein Dashboard, das die Konfiguration übersichtlich darstellt und mit Erläuterungen versieht. In der Open-Source-Version bietet die Oberfläche ausschließlich Lesezugriff.

Übersichtsseite im Gloo-Dashboard

Abbildung : Übersichtsseite des Gloo-Dashboards

Auf einer Administrationsseite sind Konfiguration und Status von Gloo dargestellt:

Admin-Ansicht im Gloo-Dashboard

Abbildung : Administrationsseite des Gloo-Dashboards. In der Open-Source-Version sind keine Änderungen möglich

Für jeden konfigurierten Service existiert eine eigene Informationsseite:

Service-Ansicht im Gloo-Dashboard

Abbildung : Ansicht eines Services mit definierten Routen

Definierte Endpunkte kann Gloo nach Funktionen durchsuchen. Die gefundenen Funktionen werden mitsamt ihren Parametern auf einer weiteren Seite dargestellt:

Upstream-Ansicht im Gloo-Dashboard

Abbildung : Upstream-Ansicht mit den von Gloo selbständig aus der Swagger-Definition erkannten Funktionen eines Service

Für eigene Dashboards stehen die Metriken des in Gloo verwendeten Envoy-Proxys zur Verfügung.

1. Fazit

Gloo ist ein flexibles Werkzeug, das den Proxy-Server Envoy für API-Gateway-Aufgaben konfiguriert. Dabei bedient es sich einer für Kubernetes-Anwender vertrauten, klaren Syntax. Dadurch lassen sich viele Standard-Aufgaben auf wenige, klare Befehle reduzieren.

Im Vergleich zu anderen Lösungen zeichnet sich Gloo insbesondere durch die Fähigkeit aus, Dienste aus heterogenen Umgebungen und Cloud-Funktionen mit wenigen Zeilen Konfiguration zu einem einheitlichen API zu verbinden.

Eingeschränkt wird der Nutzen der nicht-kommerziellen Version allerdings durch das fast völlige Fehlen von Authentifizierungs-Mechanismen.

1. Links