Kong v2.6.0 Release Notes
-
π > Release date: 2021/10/04
Dependencies
- β¬οΈ Bumped
openresty
from 1.19.3.2 to 1.19.9.1 #7430 - β¬οΈ Bumped
openssl
from1.1.1k
to1.1.1l
7767 - β¬οΈ Bumped
lua-resty-http
from 0.15 to 0.16.1 #7797 - β¬οΈ Bumped
Penlight
to 1.11.0 #7736 - β¬οΈ Bumped
lua-resty-http
from 0.15 to 0.16.1 #7797 - β¬οΈ Bumped
lua-protobuf
from 0.3.2 to 0.3.3 #7656 - β¬οΈ Bumped
lua-resty-openssl
from 0.7.3 to 0.7.4 #7657 - β¬οΈ Bumped
lua-resty-acme
from 0.6 to 0.7.1 #7658 - β¬οΈ Bumped
grpcurl
from 1.8.1 to 1.8.2 #7659 - β¬οΈ Bumped
luasec
from 1.0.1 to 1.0.2 #7750 - β¬οΈ Bumped
lua-resty-ipmatcher
to 0.6.1 #7703 Thanks EpicEric for the patch!
π All Kong Gateway OSS plugins will be moved from individual repositories and centralized into the main Kong Gateway (OSS) repository. We are making a gradual transition. On this π release:
- π Moved AWS-Lambda inside the Kong repo #7464.
- π Moved ACME inside the Kong repo #7464.
- π Moved Prometheus inside the Kong repo #7666.
- π Moved Session inside the Kong repo #7738.
- π Moved GRPC-web inside the Kong repo #7782.
- π Moved Serverless functions inside the Kong repo #7792.
β Additions
Core
- π New schema entity validator:
mutually_exclusive
. It accepts a list of fields. If more than 1 of those fields is set simultaneously, the entity is considered invalid. #7765
π Performance
π On this release we've done some special efforts with regards to performance.
π There's a new performance workflow which periodically checks new code additions against some typical scenarios #7030 #7547
π In addition to that, the following changes were specifically included to improve performance:
- β¬οΈ Reduced unnecessary reads of
ngx.var
#7840 - Loaded more indexed variables #7849
- β‘οΈ Optimized table creation in Balancer #7852
- β‘οΈ Reduce calls to
ngx.update_time
#7853 - π Use read-only replica for PostgreSQL meta-schema reading #7454
- URL escaping detects cases when it's not needed and early-exits #7742
- Accelerated variable loading via indexes #7818
- β Removed unnecessary call to
get_phase
in balancer #7854
π§ Configuration
- π Enable IPV6 on
dns_order
as unsupported experimental feature. Please give it a try and report back any issues #7819. - The template renderer can now use
os.getenv
#6872.
Hybrid Mode
- Data plane is able to eliminate some unknown fields when Control Plane is using a more modern version #7827.
Admin API
- β Added support for the HTTP HEAD method for all Admin API endpoints #7796
- β Added better support for OPTIONS requests. Previously, the Admin API replied the same on all OPTIONS requests, where as now OPTIONS request will only reply to routes that our Admin API has. Non-existing routes will have a 404 returned. It also adds Allow header to responses, both Allow and Access-Control-Allow-Methods now contain only the methods that the specific API supports. #7830
π Plugins
- AWS-Lambda: The plugin will now try to detect the AWS region by using
AWS_REGION
andAWS_DEFAULT_REGION
environment variables (when not specified with the plugin configuration). This allows to specify a 'region' on a per Kong node basis, hence adding the ability to invoke the Lamda in the same region where Kong is located. #7765 - Datadog:
host
andport
config options can be configured from environment variablesKONG_DATADOG_AGENT_HOST
andKONG_DATADOG_AGENT_PORT
. This allows to set different destinations on a per Kong node basis, which makes multi-DC setups easier and in Kubernetes allows to run the datadog agents as a daemon-set. #7463 Thanks rallyben for the patch! - Prometheus: A new metricΒ
data_plane_cluster_cert_expiry_timestamp
Β is added to expose the Data Plane'sΒ cluster_certΒ expiry timestamp for improved monitoring in Hybrid Mode.Β #7800.
Request Termination:
- π New
trigger
config option, which makes the plugin only activate for any requests with a header or query parameter named like the trigger. This can be a great debugging aid, without impacting actual traffic being processed. #6744. - π The
request-echo
config option was added. If set, the plugin responds with a copy of the incoming request. This eases troubleshooting when Kong is behind one or more other proxies or LB's, especially when combined with the new 'trigger' option. #6744.
GRPC-Gateway:
- Fields of type
.google.protobuf.Timestamp
on the gRPC side are now transcoded to and from ISO8601 strings in the REST side. #7538 - URI arguments like
..?foo.bar=x&foo.baz=y
are interpreted as structured fields, equivalent to{"foo": {"bar": "x", "baz": "y"}}
#7564 Thanks git-torrent for the patch!
π Fixes
Core
- Balancer retries now correctly set the
:authority
pseudo-header on balancer retries #7725. - Healthchecks are now stopped while the Balancer is being recreated #7549.
- π Fixed an issue in which a malformed
Accept
header could cause unexpected HTTP 500 #7757. - π Kong no longer removes
Proxy-Authentication
request header andProxy-Authenticate
response header #7724. - π Fixed an issue where Kong would not sort correctly Routes with both regex and prefix paths #7695 Thanks jiachinzhao for the patch!
Hybrid Mode
- Ensure data plane config thread is terminated gracefully, preventing a semi-deadlocked state #7568 Thanks flrgh for the patch!
- π Older data planes using
aws-lambda
,grpc-web
orrequest-termination
plugins can now talk with newer control planes by ignoring new plugin fields. #7881
CLI
- π
kong config parse
no longer crashes when there's a Go plugin server enabled #7589.
π§ Configuration
- π§ Declarative Configuration parser now prints more correct errors when pointing unknown foreign references #7756.
- π§ YAML anchors in Declarative Configuration are properly processed #7748.
Admin API
GET /upstreams/:upstreams/targets/:target
no longer returns 404 when target weight is 0 #7758.
PDK
kong.response.exit
now uses customized "Content-Length" header when found #7828.
π Plugins
- β¬οΈ Bumped