Hello everyone,
Continuing our release candidate cycle for Kong 1.0, we’re happy to announce the availability of RC4!
Download Kong 1.0.0rc4 today and give us your feedback!
This fourth release candidate contains fixes for Service Mesh that were detected after releasing RC3. Thanks again to everyone who reported issues - they helped a lot!
RC4 Contains the Following Improvements over RC3:
Removal of deprecated features
As one of the final steps in preparing 1.0.0 final, this release removes from the codebase features and concepts that were marked as deprecated earlier in the 0.x cycle. In this release:
- the API entity and related concepts such as the
/apis
endpoint, are removed (deprecated since 0.13.0, March 2018). Use Routes and Services instead. - the
custom_plugins
directive is removed (deprecated since 0.14.0, July 2018). Useplugins
instead. - the
galileo
plugin is removed (deprecated since 0.13.0) - the
kong.tools.ip
module was removed (deprecated since the introduction of the PDK in 0.14.0). Usekong.ip
from the PDK instead. - the
kong.tools.public
module was removed (deprecated since the introduction of the PDK in 0.14.0). Use the PDK instead. - the
kong.api.crud_helpers
module was removed (deprecated since the introduction of the new DAO in 0.13.0). Usekong.api.endpoints
instead if you need to customize the auto-generated endpoints. - finally, the old DAO implementation is removed, along with the old schema validation library (
apis
was the last entity using it). Use the new schema format instead in custom plugins (full documentation is on the way). To ease the transition of plugins, the plugin loader in 1.0 includes a best-effort schema auto-translator, which should be sufficient for many plugins (in 1.0.0rc1, our bundled plugins used the auto-translator; since 1.0.0rc2 they now use the new format).
We plan to make a 0.15.0 release alongside 1.0.0, which will still include these deprecated features but will be otherwise identical to 1.0.0, to ease the migration path. If you have a custom plugin using any of the featues listed above, now is a great time to update them! All plugins bundled with Kong 1.0.0rc4 have been converted to remove dependency on these features, so they serve as good examples, along with the PDK documentation.
Service Mesh and Stream Routing
- TLSv1.3 added to the template protocols as a workaround for openssl#7660
- Fixed an issue where
lua_package_path
was not properly defined for stream requests - Fixed an issue where active healthchecks would execute on stream modules incorrectly
- Fixed several other issues related with the custom patches we use for OpenResty
Core
- The base migration did not correctly reflect the state of indexes in postgres when updating from 0.14
- Fixed an error involving offsets and pagination of Targets in the Admin API
- Ensured that Kong is compatible with unpatched OpenResty for API Gateway mode (Service Mesh still requires patched OpenResty)
- Made
kong.response.exit
work on theheader_filter
phase, when invoked with an empty body - Fixed an issue in
kong.response.get_source
where the “exit” status could be shadowed by the “proxied” status. - New
--force
option inkong migrations
to allow upgrading between release candidates
Plugins
- The HTTP-log plugin handles nil values more gracefully now (thanks @jeremyjpj0916!)
- The CORS plugin now returns 200 instead of 204 on preflight requests (thanks @aslafy-z!)
- Request and Response Transformer plugins now tolerate errors and empty headers better
- Fixed an issue in the Azure Functions plugin where some PDK and
ngx_lua
methods were incorrectly referenced - The Azure Functions plugin now filters out headers disallowed by HTTP/2 when proxying HTTP/1.1 responses to HTTP/2 clients
You can browse the complete list of changes for this release on GitHub. Additionally, Kong 1.0rc4 contains all changes introduced by 1.0rc1
, 1.0rc2
& 1.0rc3
.
Upgrade Path from 0.14
We have made sure that the following upgrade path from 0.14.x is supported, including “cold” nodes (Note: upgrading from a pre-0.14 cluster is not supported):
- Download 1.0rc4, and configure it to point to the same datastore as your 0.14 cluster. Run
kong migrations up
. - Both 0.14 and 1.0rc4 nodes can now run simultaneously on the same datastore. Start provisioning 1.0rc4 nodes, but do not use their Admin API yet. Prefer making Admin API requests to your 0.14 nodes instead.
- Gradually divert traffic away from your 0.14 nodes, and into your 1.0rc4 cluster. Monitor your traffic to make sure everything is going smoothly.
- When your traffic is fully migrated to the 1.0rc4 cluster, decommission your 0.14 nodes.
- From your 1.0rc4 cluster, run:
kong migrations finish
. From this point on, it will not be possible to start 0.14 nodes pointing to the same datastore anymore. Only run this command when you are confident that your migration was successful. From now on, you can safely make Admin API requests to your 1.0rc4 nodes.
Upgrade Path from 1.0rc1, 1.0rc2 and 1.0rc3
The process is the same as for upgrading for 0.14.x, but on step 1 you should run kong migrations up --force
instead.
Install 1.0rc4 on a Fresh Datastore
1.0 introduces a new, improved migrations framework. The following commands can be run to prepare a new 1.0 cluster from a fresh datastore:
$ kong migrations bootstrap [-c config]
$ kong start [-c config]
What’s Next
RC4 is our last planned release candidate. If no major issues are reported, it will be tagged and released as Kong 1.0!
As always, feel free to reach out to us here or via GitHub issues if you have any questions or feedback about this upgrade path, or the contents of this release in general! We appreciate the feedback we receive from our release candidate testers — thank you all in advance!