Die bisherigen Blogposts zu Kong aus dem vergangenen Jahr haben sich dem API Gateway beschäftigt, welches als Open-Source-Produkt zur Verfügung gestellt wird. Seit Ende September / Anfang Oktober 2019 ist codecentric Go-To-Market-Partner in EMEA, vor allem aber in der DACH-Region. Als Go-To-Market-Partner beschäftigen wir uns auch mit Kong Enterprise, einer Plattform, die der Unterstützung des gesamten Lebenszyklus von APIs und Services dient.
Das Produkt besteht aus mehreren Komponenten, denen ich mich in einer neuen Blogpost-Serie nun widmen möchte. Die erste Komponente ist uns schon aus den bisherigen Blogposts bekannt: das Gateway. Es wird aktuell (Ende Mai 2020) bei Kong Enterprise mit der Versionsnummer 1.5 ausgeliefert. Hier zeigt sich ein großer Unterschied zum Open-Source-Produkt, welches schon seit März 2020 in der Version 2.0 verfügbar ist, und zeigt zugleich, wie wichtig Kong als Hersteller das Enterprise-Produkt ist, da neue Features des Open-Source-Produktes erst eine gewisse Reife erhalten, bevor diese dann ein Teil des Enterprise-Produktes werden. Die folgende Grafik stellt die einzelnen Komponenten schematisch dar.
Im Gegensatz zum Kong Gateway als Open-Source-Produkt fällt zu allererst die Möglichkeit der rollenbasierte Zugriffskontrolle (RBAC) für die Administration des Gateways auf. Obwohl sich die Teams einer Organisation denselben Kong-Cluster teilen können, ist es möglich, den Cluster in logische Gruppen mit beschränktem Zugang zu unterteilen. Diese Workspaces ermöglichen eine klarere Segmentierung des Traffics und der Entitäten. Der Zugriff jedes Teams kann auf seinen eigenen Workspace beschränkt werden, wodurch das Prinzip der geringsten Privilegien unterstützt wird.
Neben den Open-Source-Plugins bietet Kong Enterprise auch „Enterprise Plugins“ an. Diese werden in zukünftigen Blogposts durch entsprechende Use Cases vorgestellt.
Die Komponente „Kong Manager“ bildet das grafische User Interface der Plattform ab. Hier lassen sich dann auch durch Kong Vitals verschiedene Metriken grafisch direkt betrachten.
Zu guter Letzt ist auch ein Developer-Portal Teil des Funktionsumfangs von Kong Enterprise. Durch das Portal erhalten Entwickler die Möglichkeit, Services zu finden, auf diese zuzugreifen und auch zu nutzen.
Die beiden Module „Brain“ und „Immunity“ sind noch separat zu betrachten, da sie nicht direkt Teil von Kong Enterprise sind. Mit Brain lässt sich die Erstellung der API- und Service-Dokumentation automatisieren. Unterstützt durch Machine Learning hilft Immunity bei der Analyse von Traffic Pattern, um die Sicherheit des Gateway zu erhöhen.
Aufsetzen einer sicheren Entwicklungsumgebung
Nach Betrachtung einiger Komponenten von Kong Enterprise, möchte ich nun zeigen, wie man sich eine sichere lokale Umgebung erstellen kann. Durch Automatisierung lässt sich die Konfiguration auch später in eine produktive Umgebung übertragen.
Die Basis unserer lokalen Umgebungen stellt, wie schon vorher bei den Posts zu Kong Gateway, eine docker-compose-Datei dar.
version: "3"
networks:
kong-ent-net:
driver: bridge
services:
api-service:
build: ./api-service
ports:
- 80:80
kong-database:
image: postgres:9.6
restart: always
networks:
- kong-ent-net
container_name: kong-database
environment:
- POSTGRES_USER=kong
- POSTGRES_PASSWORD=kong
- POSTGRES_DB=kong
healthcheck:
test: ["CMD", "pg_isready", "-U", "postgres"]
interval: 10s
timeout: 5s
retries: 5
kong-migration:
image: kong-docker-kong-enterprise-edition-docker.bintray.io/kong-enterprise-edition
command: kong migrations bootstrap
networks:
- kong-ent-net
container_name: kong-migration
restart: on-failure
environment:
- KONG_PG_HOST=kong-database
- KONG_PG_PASSWORD=kong
- KONG_DATABASE=postgres
- KONG_PG_DATABASE=kong
- 'KONG_LICENSE_DATA=${KONG_LICENSE_DATA}'
- KONG_PASSWORD=${KONG_PASSWORD}
links:
- kong-database
depends_on:
- kong-database
kong-ent:
image: kong-docker-kong-enterprise-edition-docker.bintray.io/kong-enterprise-edition
container_name: kong-ent
depends_on:
- kong-migration
- kong-database
restart: always
networks:
- kong-ent-net
ports:
- 8000:8000
- 8001:8001
- 8002:8002
- 8003:8003
- 8004:8004
- 8443:8443
- 8444:8444
- 8445:8445
- 8446:8446
- 8447:8447
environment:
- KONG_ENFORCE_RBAC=on
- KONG_ADMIN_GUI_AUTH=basic-auth
- KONG_ADMIN_GUI_SESSION_CONF=${KONG_ADMIN_GUI_SESSION_CONF}
- KONG_AUDIT_LOG=on
- KONG_LOG_LEVEL=debug
- KONG_PORTAL_GUI_HOST=localhost:8003
- KONG_PORTAL_GUI_PROTOCOL=http
- KONG_PORTAL=on
- KONG_PORTAL_AUTH=basic-auth
- KONG_PORTAL_SESSION_CONF=${KONG_PORTAL_SESSION_CONF}
- KONG_ADMIN_GUI_URL=http://localhost:8002
- KONG_DATABASE=postgres
- KONG_PG_PASSWORD=kong
- KONG_PG_HOST=kong-database
- KONG_PG_DATABASE=kong
- 'KONG_LICENSE_DATA=${KONG_LICENSE_DATA}'
- KONG_VITALS=on
- KONG_ANONYMOUS_REPORTS=off
- KONG_PROXY_ACCESS_LOG=/dev/stdout
- KONG_ADMIN_ACCESS_LOG=/dev/stdout
- KONG_PROXY_ERROR_LOG=/dev/stderr
- KONG_ADMIN_ERROR_LOG=/dev/stderr
- KONG_PROXY_LISTEN=0.0.0.1:8000, 0.0.0.1:8443 ssl
- KONG_ADMIN_LISTEN=0.0.0.1:8001, 0.0.0.1:8444 ssl
- KONG_ADMIN_GUI_LISTEN=0.0.0.0:8002, 0.0.0.0:8445 ssl
- KONG_PORTAL_GUI_LISTEN=0.0.0.0:8003, 0.0.0.0:8446 ssl
- KONG_PORTAL_API_LISTEN=0.0.0.0:8004, 0.0.0.0:8447 ssl
healthcheck:
test: ["CMD-SHELL","kong","health"]
interval: 5s
retries: 10
Das entsprechende Docker-Image von Kong Enterprise erhält man über einen kundenspezifischen Bintray-Zugang. Zusätzlich wird noch ein Lizenzschlüssel benötigt. Dieser muss nur in einer .env-Datei hinterlegt werden.
KONG_PASSWORD=CodeCentric2020!
KONG_ADMIN_GUI_SESSION_CONF={"secret":"secret","storage":"kong","cookie_secure":false}
KONG_PORTAL_SESSION_CONF={"cookie_name":"$cc2020k","secret":"super-secret","storage":"kong","cookie_secure":false}
KONG_LICENSE_DATA={}
Durch die Verwendung von KONG_PASSWORD
wird der eingebaute Super Admin Account aktiviert, der unter anderem dafür sorgt, dass jeder Aufruf des Rest Admin API zusätzlich den Kong-Admin-Token als Parameter benötigt. Auf diese relativ einfache Art und Weise haben wir auch schon unsere Entwicklungsumgebung abgesichert. Und dies bildet nun auch den Ausgangspunkt für die folgenden Blogposts.
Weitere Informationen zu unserer Partnerschaft mit Kong sind hier zusammengefasst.
Weitere Beiträge
von Daniel Kocot
Dein Job bei codecentric?
Jobs
Agile Developer und Consultant (w/d/m)
Alle Standorte
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Gemeinsam bessere Projekte umsetzen.
Wir helfen deinem Unternehmen.
Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.
Hilf uns, noch besser zu werden.
Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.
Blog-Autor*in
Daniel Kocot
Senior Solution Architect / Head of API Consulting
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.