Iglu R9 Bull's Eye released


We are excited to announce a new Iglu release, introducing a number of long-awaited improvements to our Iglu Server, our most advanced Iglu schema registry technology. This release also brings some small but powerful updates to igluctl, the command-line toolkit for Iglu.
- Iglu Server, reloaded
- Improvements to Iglu Server
- Under the hood of Iglu Server
- igluctl updates
- Upgrading
- Getting help
Read on for more information about Release 9 Bull’s Eye, named after the first-ever Brazilian postage stamp.
1. Iglu Server, reloaded
Our latest version of what was then-called the “Scala Repo Server” was released more than two years ago, as part of Iglu R3 Penny Black. That version is still bundled with Snowplow Mini and has proved its worth in that environment.
Since then, our Iglu product efforts have focused on tools like igluctl, focused on improving the static schema registry experience for Snowplow operators. This was a deliberate decision, and the Iglu static registry has over time proven its robustness – at the cost of some flexibility.
However, it has become clear that to deliver on our ambitious and exciting Iglu roadmap, we will need a more powerful schema registry engine. We will deliver this through our tried-and-tested Scala Repo Server project, now re-badged as simply Iglu Server.
2. Improvements to Iglu Server
In order to reduce setup time for Iglu Server, we have widened the scope of super
API keys to the writing and reading of schemas – not only creating new keys. Thus as of R9, it is possible to use just a single API key for all interactions with Iglu Server.
For more granular access control, separate read
and write
keys still can be used.
Given that Iglu Server could be deployed behind a proxy or a load balancer, R9 extends the server configuration options with a new parameter, repo-server.baseURL
– set this to the address that will be used to reach your Iglu Server.
Before this release, Iglu Server attached metadata to all schemas, which made its interface incompatible with more widely-used static schema registry. Now, by default all schemas are returned without any additional information, but you can add a special metadata
query parameter with value 1
to any /api/schemas/
endpoint in order to restore old behavior.
Finally, there is a new CLI interface to Iglu Server, so far offering just a single --config
option. Use this to provide a configuration file for Iglu Server with DB and server settings.
3. Under the hood of Iglu Server
As part of the project reboot, we have brought internal dependencies, such as Akka, Akka HTTP and others up-to-date with the modern Scala ecosystem.
These dependency updates have fixed some subtle bugs in Iglu Server’s REST interface, and have also improved performance.
We are particularly pleased to have updated the registry’s Swagger UI – this represents a hugely beneficial to Iglu Server’s built-in UI for interacting with schema endpoints.
4. igluctl updates
R9 Bull’s Eye also fixes two important bugs in igluctl, introducing a new 0.4.1 version:
- We’ve fixed a bug introduced in version 0.4.0, whereby if
lint
input is the full path to schema and the schema’s version isn’t1-0-0
, then igluctl produced a failure message instead of warning (issue #340), - igluctl now works with JRE9 (issue #300)
5. Upgrading
5.1 Iglu Server
The new Iglu Server release can be downloaded from here from Bintray (download will start). Unzip the compressed file and then you can launch server with following interface: java -jar $JAR_PATH --config $CONFIG_PATH
.
The switch from Spray to Akka HTTP has seen some major changes in the configuration file format. However the old format can be adapted by:
- Replacing or removing the Spray-specific server settings
- Adding
repo-server.baseURL
, making sure to omit the protocol (i.e.http(s)://
), because Swagger UI will automatically prepend that
Another breaking change is related to endpoint paths. Previously, a DELETE request sent to api/auth/keygen
was used to delete API keys of a specific vendor prefix. From now on, that same request should be sent to api/auth/vendor
.
Finally, Iglu Server 0.3.0 now negotiates Content-Type
with clients. Clients should specify either Accept: application/json
header, or no Accept
header at all; no other header values are supported.
5.2 igluctl
The latest igluctl can be downloaded from here from Bintray (download will start).
The new version, igluctl 0.4.1, doesn’t introduce any interface changes over 0.4.0.
6. Getting help
For more details on this release, as always do check out the release notes and the wiki page on GitHub.
If you have any questions or run into any problems, please raise a question in our Discourse forum.