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.ymlaus 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/timezoneund- /etc/localtimekönnen nicht eingebunden werden, da sie so auf dem Mac nicht existieren -> einfach auskommentiert, da für die Entwicklung nicht entscheidend.
- kong-certbot-agentauskommentiert.
- beim kong-Service dieimage: kong...-Option ersetzen durchbuild: ., um Kong aus lokalen Quellen zu bauen.
- Bei den KONG_PLUGINSdas 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-pluginentwickeln 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 -dbaut 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 kongsehen.
 
- 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).