Kong-Plugin-Development auf dem Mac

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

  1. 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 die image: kong...-Option ersetzen durch build: ., um Kong aus lokalen Quellen zu bauen.
    • Bei den KONG_PLUGINS das zu entwickelnde Plugin mit eintragen.
  2. Dazu dann auch ein geeignetes Dockerfile, auf das sich die build-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
    
  3. 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
    
  4. 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.
  5. 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).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.