Dieser Artikel ist Teil einer Reihe über API Management in der Open Source und kommerzielle Lösungen vorgestellt werden.
Lese auch die API Management Einführung
Von: Thomas Bayer
Datum: 9. Mai 2018
Aktualisiert: 25. Jan. 2019
Kong ist ein sogenannter API Layer. Die Entwickler von Kong, die frühere Firma Mashape, die sich jetzt Kong Inc. nennt, verwendet den Begriff API Layer als Synonym für API Gateway oder API Middleware. Ursprünglich wurde Kong als API Gateway für den Marketplace von Mashape entwickelt und 2015 unter eine Open Source Lizenz gestellt. Kong setzt auf dem Open Source Web Server und reverse Proxy NGINX auf und erweitert dessen Funktionalität über die Programmiersprache Lua.
Kong gibt es in der Community Edition als Open Source Software und als Kong Enterprise. Die Enterprise Version enthält zusätzlich:
Kong kann lokal oder in der Cloud installiert werden. Die Installation in der Cloud kann z.B. über den Amazon Marketplace oder über Images wie AMI oder Docker erfolgen. Für eine lokale Installation gibt es Ubuntu, debian, CentOS und Red Hat Packages.
Kong benötigt für den Betrieb einen Cassandra Cluster oder eine Postgres Datenbank. Besonders komfortabel ist eine Installation über Docker.
Die meisten Einstellungen können über eine Konfigurationsdatei vorgenommen werden. Da Kong auf dem NGINX Server aufsetzt, gibt es einige Parameter, die beim NGINX Server eingestellt werden müssen, wie beispielsweise das Retry Verhalten, mit dem die Wiederholung eines Requests im Fehlerfall gesteuert wird.
Der Open Source Variante von Kong fehlt eine graphische Benutzeroberfläche. Dafür gibt es ein umfassendes und komfortables API für die Administration. Über dieses API können Services, Routen und Consumer angelegt werden. Das Listing unten zeigt wie ein Service angelegt werden kann:
Der Service verbindet den Service Namen fruitshop mit einem Backend, welches Funktionen zur Verfügung stellt. Kong kennt jetzt das Backend, weiß aber noch nicht welche Aufrufe dorthin geroutet werden sollen. Die Informationen zum Routing muss mit einer Route hinzugefügt werden:
Eine Route kann mit Hosts, Pfaden und Methoden konfiguriert werden. Eingehende Aufrufe gleicht Kong mit den Routen ab. Bei einer Übereinstimmung wird der zugehörige Service aufgerufen. Im Beispiel oben muss ein Aufruf einen Host Header mit dem Wert api.predic8.de enthalten damit die Route greift, und über den Service der Aufruf an das Backend weitergeleitet wird:
Über zahlreiche Plugins kann Kong um Funktionalität erweitert werden. Ein Plugin kann entweder Global, für ein API oder für eine Route eingeklinkt werden. Unter anderem gibt es Plugins für:
Im Developer Guide wird das Erstellen von eigenen Plugins beschrieben.
Für die Transformation von Nachrichten stehen Plugins für reguläre Ausdrücke und eine eigene Konfigurationssprache zur Verfügung. Das Beispiel unten zeigt, wie die JSON Properties partner und mail umbenannt werden können:
Für das Logging bietet Kong diverse Plugins u.a. für Prometheus, Syslog, Loggly, File und HTTP.
Mehrere Kong Gateways, die sich die selbe Datenbank teilen, können zu einem Cluster zusammengeschlossen werden. Jeder Knoten besitzt die gleiche Konfiguration und damit die gleichen Services und Routen. Da jeder Knoten eine individuelle IP Adresse bekommt, muss vor dem Cluster ein Loadbalancer betrieben werden.
Die Konfiguration des Clusters wird in einer Postgres oder in einer verteilten Apache Cassandra Datenbank abgelegt. Jeder Kong Knoten hat Zugriff auf die Konfiguration über die Datenbank.
Kong zählt zu den ausgereifteren Produkten am Markt und wird bereits für viele Installation verwendet.
Das Management API ermöglicht die Fernsteuerung von Kong und damit neue Möglichkeiten, die die fehlende UI für die Administration ausgleicht. Wer dennoch Kong mit UI einsetzen möchte, kann auf die kommerzielle Version oder auf die API Management Lösung Wicked vom Haufe Verlag in Freiburg zurückgreifen. Wicked setzt auf Kong auf und erweitert ihn um eine konfortable Web Console für die Verwaltung.
Dieser Artikel ist Teil einer Reihe über API Management in der Open Source und kommerzielle Lösungen vorgestellt werden.
Lese auch die API Management Einführung