0.5.0 - 2019/06/25
This release introduces automated TLS certificates, consumer-level plugins, enabling deployments using controller and Kong's Admin API at the same time and numerous bug-fixes and enhancements.
- UUID of consumers in Kong are no longer associated with UID of KongConsumer custom resource.
- Kong 1.2 is now supported, meaning wildcard hosts in TLS section of Ingress resources are allowed.
- Automated TLS certificates using Let's Encrypt: Use Kong's Ingress Controller and cert-manager to automatically provision TLS certs and serve them.
- Tagging support: All entities managed by Kong Ingress Controller in Kong's database are now tagged and the controller manages only a subset of Kong's configuration. Any entity created via Kong's Admin API will not be automatically deleted by the Ingress Controller.
- Consumer-level plugins can now be configured by applying
plugins.konghq.com
annotation on KongConsumer custom resources. #250 - Kong Enterprise workspaces: Ingress Controller can manage a specific workspace inside Kong Enterprise (previously, only default workspace).
- Avoid reloading configuration in Kong in db-less mode when there is no change in configuration. #308
- Service scoped plugins for Kong 1.1 are now configured correctly. #289
- Multiple certificates are now correctly populated in Kong. #285
- Missing entities like certificate secrets, services or plugins in Kubernetes object store will not stop controller from syncing configuration to Kong.
- A Ingress rule with an empty path is correctly parsed and populated in Kong. #98
- Plugins with a nested schema are now correctly configured. #294
- Dependency management for the project is done using Go modules.
- Kubernetes client-go library has been updated to v1.14.1.
- Makefile and Dockerfiles have been simplified.
0.4.0 - 2019/04/24
This release introduces support to run Kong as an Ingress Controller without a database! This release comes with major under the hood rewrites to fix numerous bugs and design issues in the codebase. Most of the syncing logic has now been ported over to decK.
This release comes with a number of breaking changes. Please read the changelog and test in your environment.
⚠️ Annotation<plugin-name>.plugin.konghq.com
(deprecatd in 0.2.0) is no longer supported.⚠️ --default-backend-service
CLI flag is now removed. The default service will now be picked up from the default backend in the Ingress rules.⚠️ Service and Upstream entity overrides via KongIngress CRD are now supported only withconfiguration.konghq.com
annotation on Kubernetes services. Route level overrides work same as before, using theconfiguration.konghq.com
annotation on Ingress resources.⚠️ strip_path
property of Routes in Kong is set totrue
by default.⚠️ preserve_host
property of Routes in Kong is set totrue
by default.- Plugins created for a combination of Route and Consumer using
consumerRef
property in KongPlugin CRD are not supported anymore. This functionality will be added back in future via #250. - Service and upstream Host name have changed from
namespace.service-name.port
toservice-name.namespace.svc
.
- Ingress Controller now supports a DB-less deployment mode using Kong 1.1. #244
- New
run_on
andprotocols
properties are added to KongPlugin CRD. These can be used to further tune behaviors of plugins in Service Mesh deployments. - New fields are added to KongIngress CRD to support HTTPS Active healthchecks.
- Ingress Controller is now built using Go 1.12.
- Default service, which handles all traffic that is not matched against any of the Ingress rules, is now configured using the default backend defined via the Ingress resources.
- Logs to stdout and stderr will be much more quieter and helpful and won't be as verbose as before.
- Routes with same path but different methods can now be created. #202
- Removing a value in KongPlugin config will now correctly sync it to Kong. #117
- Setting
--update-state=false
no longer causes a panic and performs leader election correctly. #232 Thanks to @lijiaocn for the fix!! - KongIngress will now correctly override properites of Upstream object in Kong. #252
- Removing a value from KongPlugin config will now correctly unset it in Kong's datastore. #117
- Translation of Ingress rules and CRDs to Kong entities is completey re-written. #241
- For database deployments, an external tool, decK is used to sync resources to Kong, fixing numerous bugs and making Ingress Controller code saner and easier to maintain.
0.3.0 - 2019/01/08
⚠️ Default Ingress class is nowkong
. If you were relying on the previous default ofnginx
, you will need to explicitly set the class using--ingress-class
CLI flag.
- Support for Kong 1.0.x Kong 1.0 introduces a number of breaking changes in the Admin API. Ingress controller is updated to make correct calls and parse responses correctly. #213
- ingress.class annotation-based filtering on CRD Multiple Kong clusters
can be deployed and configured individually on the same Kubernetes Cluster.
This feature allows configuring
global Plugins, Consumers & credentials
using a different
ingress.class
annotation for each Kong cluster. #220 - TLS support for Ingress Controller <-> Kong communication
The ingress controller can now talk to Kong's Control-Plane using TLS with
custom certificates. Following new CLI flags are introduces:
--admin-tls-skip-verify
: to skip validation of a certificate; it shouldn't be used in production environments.--admin-tls-server-name
: use this if the FQDN of Kong's Control Plane doesn't match the CN in the certificate.--admin-ca-cert-file
: use this to specify a custom CA cert which is not part of the bundled CA certs. #212
- Retries for services in Kong can be set to zero. #211
0.2.2 - 2018/11/09
- Fix plugin config comparison logic to avoid unnecessary PATCH requests to Kong #196
- Fix
strip_path
in Routes in Kong. It is now set to false by default as in all other versions of Ingress controller except 0.2.1. #194 - Fix path-only based Ingress rule parsing and configuration where only a path based rule for a Kubernetes Service would not setup Routes and Service in Kong. #190
- Fix a nil pointer reference when overiding Ingress resource with KongIngress #188
0.1.3 - 2018/11/09
- Fix path-only based Ingress rule parsing and configuration where only a path based rule for a Kubernetes Service would not setup Routes and Service in Kong. #190
- Fix plugin config comparison logic to avoid unnecessary PATCH requests to Kong #196
0.2.1 - 2018/10/26
- Header Injection in requests to Kong's Admin API HTTP Headers can be set via CLI which will be injected in every request sent to Kong's Admin API, enabling the use of Ingress Controller when Kong's Control Plane is protected by Authentication/Authorization. #172
- Path only based routing Path only Ingress rules (without a host) are now parsed and served correctly. #142
- Under the hood, an external library is now used to talk to Kong's Admin API. Several other packages and dead code has been dropped. These changes don't have any user facing changes but are steps in direction to simplify code and make it more testable. #150 #154 #179
- Fixed KongIngress overrides to enable overriding hashing attributes in Upstream object in Kong. Thanks @jdevalk2 for the patch! #139
- Remove and sync certificates correctly when TLS secret reference changes for a hostname in Ingress spec. #169
- Migrations for Kong are run using 'Job' in Kubernetes to avoid any issues that might arise due to multiple Kong nodes running migrations. #161
- Kong and Ingress controller now wait for Postgres to start and migrations to finish before attempting to start. #168
0.1.2 - 2018/10/26
⚠️ Configuring plugins in Kong using<plugin-name>.plugin.konghq.com
annotation is now deprecated and will be removed in a future release. Please useplugins.konghq.com
annotation instead.
- Header Injection in requests to Kong's Admin API HTTP Headers can be set via CLI which will be injected in every request sent to Kong's Admin API, enabling the use of Ingress Controller when Kong's Control Plane is protected by Authentication/Authorization. #172
- Path only based routing Path only Ingress rules (without a host) are now parsed and served correctly. #142
- Global Plugins Plugins can be configured to run globally in Kong
using a "global" label on
KongPlugin
resource. #112 - A new property
plugin
has been introduced inKongPlugin
resource which ties the configuration to be used and the type of the plugin. #122 - Multiple plugins can be configured for an Ingress or a Service in k8s
using
plugins.konghq.com
annotation. #124 KongPlugin
resources do not need to be duplicated any more. The sameKongPlugin
resource can be used across multiple Ingress/Service resources. #121
- Avoid issuing unnecessary PATCH requests on Services in Kong during the reconcillation loop, which lead to unnecessary Router rebuilds inside Kong. #107
- Fixed the diffing logic for plugin configuration between KongPlugin resource in k8s and plugin config in Kong to avoid false positives. #106
- Correctly format IPv6 address for Targets in Kong. Thanks @NixM0nk3y for the patch! #118
- Fixed KongIngress overrides to enable overriding hashing attributes in Upstream object in Kong. Thanks @jdevalk2 for the patch! #139
- Remove and sync certificates correctly when TLS secret reference changes for a hostname in Ingress spec. #169
0.1.1 - 2018/09/26
- Fix version parsing for minor releases of Kong Enterprise (like 0.33-1).
The dash(
-
) didn't go well with the semver parsing #141
0.2.0 - 2018/09/21
⚠️ Support for Kong 0.13.x has been dropped in favor of 0.14.x
⚠️ Configuring plugins in Kong using<plugin-name>.plugin.konghq.com
annotation is now deprecated and will be removed in a future release. Please useplugins.konghq.com
annotation instead.
- Support for Kong 0.14.x The supported version of Kong 0.14.x has been introduced. Kong 0.14.x introduced breaking changes to a few Admin API endpoints which have been updated in the Ingress Controller. #101
- Global Plugins Plugins can be configured to run globally in Kong
using a "global" label on
KongPlugin
resource. #112 - A new property
plugin
has been introduced inKongPlugin
resource which ties the configuration to be used and the type of the plugin. #122 - Multiple plugins can be configured for an Ingress or a Service in k8s
using
plugins.konghq.com
annotation. #124 KongPlugin
resources do not need to be duplicated any more. The sameKongPlugin
resource can be used across multiple Ingress/Service resources. #121- The custom resource definitions now have a shortname for all the
CRDs, making it easy to interract with
kubectl
. #120
- Avoid issuing unnecessary PATCH requests on Services in Kong during the reconcillation loop, which lead to unnecessary Router rebuilds inside Kong. #107
- Fixed the diffing logic for plugin configuration between KongPlugin resource in k8s and plugin config in Kong to avoid false positives. #106
- Correctly format IPv6 address for Targets in Kong. Thanks @NixM0nk3y for the patch! #118
0.1.0 - 2018/08/17
⚠️ Declarative Consumers in Kong Kong consumers can be declaritively configured viaKongConsumer
custom resources. Any consumers created directly in Kong without a correspondingKongConsumer
custom resource will be deleted by the ingress controller. #81
- Support Upstream TLS Service in Kong can be configured to use HTTPS
via
KongIngress
custom resource. #79 - Support for control over protocol(HTTP/HTTPS) to use for ingress traffic
via
KongIngress
custom resource. #64
- Multiple SNIs are created in Kong if multiple hosts are specified in TLS
section of an
Ingress
resource. #76 - Updates to
KongIngress
resource associated with an Ingress now updates the corresponding routing properties in Kong. #92
v0.0.5 - 2018/06/02
- Add support for Kong Enterprise Edition 0.32 and above
v0.0.4 and prior
- The initial versions rapidly were iterated delivering a working ingress controller.