Kong lässt sich mit Plugins sehr einfach und „straight forward“ erweitern – das habe ich ja schon „erwähnt„. Für das Kong Plugin Development gibt es nicht allzu viel zu wissen – aber es ist ein klein wenig Fummelei, die Dev-Umgebung hinzunbekommen.
Das Plugin Development Guide enthält die meisten wichtigsten Infos. Eigentlich alles Andere habe ich mir aus bestehenden anderen Plugins zusammengesucht. Meine eigenen Plugins (kong-referer-restriction, kong-http-to-https-redirect, kong-response-string-replace) habe ich dann dabei mit dieser Umgebung gebaut:
Mein Howto für Kong Plugin Development
- Kong via docker-compose lokal starten und für die Entwicklung anpassen: Bei mir hole ich das
docker-compose.yml
aus meinem docker-compose-git-Repo (siehe Anhang in Kong + Konga: Reverse Proxy und SSL Endpoint). Folgende Anpassungen sind (leider) für Mac nötig:/etc/timezone
und/etc/localtime
können nicht eingebunden werden, da sie so auf dem Mac nicht existieren -> einfach auskommentiert, da für die Entwicklung nicht entscheidend.kong-certbot-agent
auskommentiert.- beim
kong
-Service dieimage: kong...
-Option ersetzen durchbuild: .
, um Kong aus lokalen Quellen zu bauen. - Bei den
KONG_PLUGINS
das zu entwickelnde Plugin mit eintragen.
- Dazu dann auch ein geeignetes
Dockerfile
, auf das sich diebuild
-Option bezieht:FROM dsteinkopf/kong-dup RUN apk update && apk add git COPY kong-my-plugin kong-my-plugin RUN cd kong-my-plugin && luarocks make *.rockspec
- Im noch anzulegenden Unterverzeichnis
kong-my-plugin
entwickeln man nun das Plugin. Dessen Inhalt sieht dann z.B. so aus:✗ tree kong-referer-restriction kong-referer-restriction ├── LICENSE ├── README.md ├── kong-referer-restriction-0.14.1-0.rockspec ├── src │ ├── checks.lua │ ├── handler.lua │ └── schema.lua └── test ├── helper.lua └── test_checks.lua
docker-compose up -d
baut und startet – und sieht nun etwa so aus:Building kong Step 1/2 : FROM dsteinkopf/kong-dup ---> fc117c13cbd9 ...
- Logs kann man z.B. mit dem „üblichen“
docker-compose logs -f kong
sehen.
- Logs kann man z.B. mit dem „üblichen“
- Nun mit dem Browser zu Konga auf
http://localhost:1337/
. Dort kann nun das Plugin eingerichtet werden, um es während des Entwickelns auszuprobieren.
Fazit
…läuft 🙂
Allerdings ist momentan noch nicht ganz klar, ob etwas bzw. was genau für die Kompatibilität mit Kong 1.0 getan werden muss. Es scheint einige Breaking Changes gegeben zu haben – nicht alle gut dokumentiert (s.a. hier bei Konga).