Skull Island: A CLI and SDK for Kong

I’ve been working on an open-source project for managing the Kong API Gateway, both as an SDK and as a CLI tool using a straightforward, YAML-based templated configuration. The project is called Skull Island and is available on RubyGems via skull_island, on DockerHub via jgnagy/skull_island, and of course on GitHub as jgnagy/skull_island.

I wrote this tool to make it easier to manage Kong API gateways in smaller, templated chunks (per microservice) that could be used across environments. While similar tools might exist and the Kong API is fairly well documented, I couldn’t find one that worked the way I wanted. I wanted complex templating rules (like conditional logic, looking up existing resource IDs, etc.), the full features of the database-backed Kong (as opposed to the DB-less configuration) while simultaneously allowing per-project configuration. Skull Island picks the specific features I found most valuable while hopefully staying familiar to those comfortable with Kong. Users that know a little Ruby can leverage its flexibility since the configuration relies on ERB for templating.

My goal was to make it easy to collaborate on a Kong gateway configuration over multiple disparate repositories in a way that would be intuitive and simple for developers without needing to pass around credentials, navigate a single monolithic configuration, or needing to use a UI, all while preserving the idea of promoting a configuration through environments. I hope that the tool and/or SDK will be useful to others with similar goals, but even if it is only useful to me, it has been fun to build and maintain.