Skip to content

Release: Gateway 3.16 - #7202

Merged
lena-larionova merged 48 commits into
mainfrom
release/gateway-3.16
Sep 15, 2026
Merged

lena-larionova merged 48 commits into
mainfrom
release/gateway-3.16

Conversation

@lena-larionova

@lena-larionova lena-larionova commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Release roll-up & preview PR for Gateway 3.15

New features

Plugin ordering

New opt-in priority_preserving dynamic plugin ordering algorithm, alongside the existing algorithm (now named legacy)

Metrics PDK for custom plugins

New kong.metrics PDK namespace for custom plugins to register counters, gauges, and histograms

OpenTelemetry metrics

Identity attributes on request/bandwidth metrics, custom PDK metrics export, and new stream/data-plane-connection metrics

Principal-aware caching

Cache by authenticated Principal instead of Consumer

Log-only / tap mode for validation and threat-protection plugins

Shared "tap mode" behavior: log a warning and proxy instead of blocking

Kafka / Confluent schema registry

Accept plain JSON for Avro schemas instead of Avro's type-tagged union wire format (payload_encoding: simple_json)

Dynamic log levels for data planes

New Admin API / Konnect API endpoints for setting a temporary, TTL-based log-level override on hybrid-mode data planes (10-3600s, default 600s)

Konnect analytics opt-out

New analytics_enabled=off config option to disable analytics/telemetry only, while keeping Consumer sync, licensing, config sync, and error reporting active

Dynamic plugin configuration with CEL

New "expressible fields" mechanism: specific plugin config fields can be computed per request via CEL instead of only gating whole-plugin execution, with a static fallback value

Route by Kong Identity Principal metadata with Datakit

New how-to using Kong Identity Principals to dynamically set upstream host/scheme per authenticated caller, without a decK sync

Datakit: verify call nodes against a custom CA

call nodes can now verify TLS against a private CA (config.ca_certificates) instead of only Kong's global trusted CA store, useful for internal services with private-CA-signed certs

Kafka / Confluent message compression

Producer-side compression (compression_type: gzip/snappy/lz4) and transparent consumer-side decompression (including zstd)

Redis OAuth 2.0 authentication

New OAuth 2.0 (client_credentials or password grant) option for Redis Cloud/Enterprise authentication, alongside AWS ElastiCache, Azure Managed Redis, and GCP Memorystore

PostgreSQL privileges reference

New least-privilege reference for the PostgreSQL role Kong Gateway needs for migrations, runtime, and admin CLI operations

Entitlement Enforcement plugin (Konnect only)

New plugin to block requests based on Metering & Billing entitlements: feature access and usage limits, checked via a two-tier Redis + per-worker cache against the Entitlement Access API. Credit-balance enforcement is not yet implemented (config.credit_balance_required and the NO_CREDIT_AVAILABLE reason code currently have no effect, see breaking-changes/known-issues below)

OIDC: actor tokens and MCP protected resource metadata

RFC 8693 actor-token support for token exchange (delegation, e.g. an AI agent acting on behalf of a user), and RFC 9728 OAuth 2.0 Protected Resource Metadata for MCP client auth-server discovery

Debugger: multi-instance Datakit tracing and new HTTP call spans

Support for distinguishing multiple Datakit plugin instances (base + clones) in traces, plus new spans/attributes for internal HTTP calls

Other

Updates

Tooling (not user-facing docs)

  • New Claude Code skill: plugin-example, for writing/updating first-party plugin example YAMLs (.claude/skills/plugin-example/)

lena-larionova and others added 30 commits September 8, 2026 14:31
Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com>
Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com>
* Download Plugin Schemas and Metadata for 3.16

* rename Governance plugin to entitlement-enforcement

---------

Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com>
Co-authored-by: lena-larionova <lena.larionova@konghq.com>
* update support matrix for 3.16

* add os eols
* feat(gateway): Add metrics PDK functions for sandbox

Signed-off-by: Icarus Wu <icaruswu66@qq.com>

* add version tag

---------

Signed-off-by: Icarus Wu <icaruswu66@qq.com>
Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com>
* feat: update debugger span attributes

* add version tags

---------

Co-authored-by: lena-larionova <lena.larionova@konghq.com>
* dynamic log levels for data planes

* fix table and use consistent punctuation

* Apply batched suggestions from code review

Co-authored-by: jbaross <james.baross@konghq.com>
Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com>

---------

Co-authored-by: jbaross <james.baross@konghq.com>
* Autodocs update

* fix version directory names

* fix indent error

---------

Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com>
Co-authored-by: lena-larionova <lena.larionova@konghq.com>
* proxy caching by principal

* Apply batched suggestions from code review

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>

---------

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>
…g_algorithm option

Add a standalone explainer for dynamic plugin ordering and document the new
`plugin_ordering_algorithm` option that selects which ordering algorithm runs.

  * app/gateway/plugins/plugin-ordering.md (new): the principle behind dynamic
    ordering ("at each step, run the highest-priority plugin whose `after`
    requirements are already met"), a hand-worked step-by-step example so readers can
    predict the exact order, a new-vs-legacy comparison (including the FTI-7177
    displacement and the `before` != `after` asymmetry, with concrete sorted results),
    the guarantees and non-guarantees, how request scope changes the result, and how
    to adopt `new` on upgrade.
  * app/_gateway_entities/plugin.md: trim the "Dynamic plugin ordering" reference
    section to link to the new explainer, and note the `plugin_ordering_algorithm`
    option under known limitations.
  * app/_indices/gateway.yaml: add the new page to the "How Gateway Works" navigation.

FTI-7177

Signed-off-by: Walker Zhao <walker.zhao@konghq.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
works_on:
  - on-prem
  - konnect

Signed-off-by: Walker Zhao <walker.zhao@konghq.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The doc was written against an early build and still called the algorithm
"new" -- the shipped option is `legacy` / `priority_preserving`
(kong.conf.default). Rename throughout, replace the placeholder A/B/C and
e/d/c/b/a examples with real kong-ee plugins and priorities, and add a
worked example (with the fix) for the one documented hard limitation: an
unconfigured plugin can occasionally move further than a hand-picked order
would need, in roughly one configuration in twenty that uses `ordering`.

Also fixes a real accuracy bug carried by the old examples: an unconfigured
plugin's absolute slot can shift when a mover passes through it, even
though its order relative to other unconfigured plugins does not -- the
old text claimed it "stays put" / "keeps its place," which wasn't true for
the abstract example's `c`.

Adds a short section on plugins that share a priority (routine for cloned
plugins that don't override it) and bumps min_version to 3.16, matching
the changelog entries this doc describes.

Signed-off-by: Walker Zhao <walker.zhao@konghq.com>
…ing pages

One merged page made it hard to say which algorithm produced which
behavior. Split it into plugin-ordering-legacy.md and
plugin-ordering-priority-preserving.md, each self-contained, and redirect
the old URL to the priority_preserving page.

The legacy page documents its real mechanism for the first time: a DFS
post-order topological sort driven by a priority-ordered outer loop, where
before/after build the identical dependency edge and a plugin's whole
dependency chain gets appended ahead of everything else the moment the
walk reaches it. Verified against the real module (topsort_plugins.lua +
plugin_dependency.lua), including that its unguarded recursion does NOT
overflow the stack at realistic -- or even 500,000-plugin -- chain
lengths, so that is not listed as a limitation.

The priority_preserving page keeps last round's content, reorganized so
every comparison names which algorithm produced which result, with the
legacy contrast moved up next to the worked example instead of appearing
several sections later.

Updates the two cross-links in plugin.md, the one nav entry in
_indices/gateway.yaml, and adds a redirect for the retired URL.

Signed-off-by: Walker Zhao <walker.zhao@konghq.com>
* generate metrics for 3.16, add missing 3.15 metrics

* Apply batched suggestions from code review

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>
Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com>

---------

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>
…r Kong plugins (#7103)

* skill for writing plugin examples for Kong plugins

* Apply batched suggestions from code review

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>

---------

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>
Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com>
…7189)

* simple json transformation for kafka

* add nullable to dictionary
…dates for p95 data correction for previous release (#7192)
@lena-larionova lena-larionova added do not merge Issues/ PRs whose changes should not be merged at this time release-docs Docs for release product:gateway labels Sep 10, 2026
@netlify

netlify Bot commented Sep 10, 2026

Copy link
Copy Markdown

Deploy Preview for kongdeveloper ready!

Name Link
🔨 Latest commit 8a382c1
🔍 Latest deploy log https://app.netlify.com/projects/kongdeveloper/deploys/6aa9782969a6120008626349
😎 Deploy Preview https://deploy-preview-7202--kongdeveloper.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@CLAassistant

CLAassistant commented Sep 10, 2026

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
7 out of 9 committers have signed the CLA.

✅ lena-larionova
✅ jijiechen
✅ juliamrch
✅ outsinre
✅ findns94
✅ tonydongkong
✅ akashtjohn
❌ kong-documentation-app[bot]
❌ Icarus9913
You have signed the CLA already but the status is still pending? Let us recheck it.

juliamrch and others added 16 commits September 11, 2026 14:35
* add configuration example

* add principal property

* fix: example title

* fix: version

* fix: remove callout

* add principal in the use case table

* how-to

* related resources

* Apply batched suggestions from code review

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>

* Apply suggestion from @juliamrch

---------

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>
…7070)

* Add PostgreSQL privileges reference for Kong Gateway

Document the minimal PostgreSQL role attributes and privileges Kong
Gateway needs for migrations, runtime, and admin CLI operations, since
no existing page covered least-privilege database setup. Cross-link it
from the datastore how-to and the sibling PostgreSQL reference pages.

* Apply suggestion from @juliamrch

* Apply batched suggestions from code review

Co-authored-by: Julia <101819212+juliamrch@users.noreply.github.com>

* Update app/gateway/postgresql-privileges-reference.md

* Apply suggestion from @juliamrch

* Apply batched suggestions from code review

Co-authored-by: Julia <101819212+juliamrch@users.noreply.github.com>

* Apply suggestion from @juliamrch

* Apply suggestion from @juliamrch

* Update app/gateway/postgresql-privileges-reference.md

* Update app/gateway/postgresql-privileges-reference.md

* fix: table

* fix: table - blanck lines

* fix: table - quotes

* Apply batched suggestions from code review

Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com>

* fix formatting

---------

Co-authored-by: Julia <101819212+juliamrch@users.noreply.github.com>
Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com>
Co-authored-by: lena-larionova <lena.larionova@konghq.com>
* dynamic plugin expression fields

* adjust prereqs to cover more cases

* adjust link names

* add security considerations to PDK and to expressible reference

* export control plane ID programmatically instead of manually

* Apply batched suggestions from code review

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>
Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com>

---------

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>
* kafka message compression and decompression

* add codec to dictionary

* Apply batched suggestions from code review

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>

---------

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>
Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com>
* entitlement enforcement plugin docs

* remove credit checks feature and mark konnect-only

* Apply batched suggestions from code review

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>

* add breaking changes entry and limitations section to plugin

* minor adjustments based on demo

* add diagram and rephrase limitation as configurable setting

---------

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>
Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com>
…7215)

* oidc mcp parity features

* fix incorrect tool key

* Update app/_kong_plugins/openid-connect/index.md

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>

---------

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>
* QA 3.16 docs against PM demos

* Apply batched suggestions from code review

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>

* fix on-prem API request

* minor phrasing edit

---------

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>
…7219)

* ca cert guide draft

* test and adjust

* Apply batched suggestions from code review

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>

* test on konnect and fix all the things

---------

Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com>
* Generate Gateway and plugins changelogs for version 3.16.0.0

* manually add breaking change entry for cel lib

---------

Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com>
Co-authored-by: lena-larionova <lena.larionova@konghq.com>
@lena-larionova
lena-larionova marked this pull request as ready for review September 15, 2026 16:54
@lena-larionova
lena-larionova requested a review from a team as a code owner September 15, 2026 16:54
@lena-larionova lena-larionova added the ci:manual-approve:link-validation Mark link checking as successful label Sep 15, 2026
@lena-larionova

Copy link
Copy Markdown
Contributor Author

The link checker isn't finding any 404s, it's just being rate-limited.

@lena-larionova lena-larionova removed the do not merge Issues/ PRs whose changes should not be merged at this time label Sep 15, 2026
@lena-larionova
lena-larionova merged commit 3e1fb79 into main Sep 15, 2026
27 of 31 checks passed
@lena-larionova
lena-larionova deleted the release/gateway-3.16 branch September 15, 2026 19:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.