Skip to content

Add skew protection routing mode to Helm chart - #63

Merged
marcopiraccini merged 4 commits into
mainfrom
query-routing
Aug 6, 2026
Merged

Add skew protection routing mode to Helm chart#63
marcopiraccini merged 4 commits into
mainfrom
query-routing

Conversation

@marcopiraccini

@marcopiraccini marcopiraccini commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Exposes PLT_SKEW_DEFAULT_ROUTING_MODE so a cluster can choose how clients carry their version for skew protection: cookie (the gateway sets __plt_dpl and matches it back) or query (a ?dpl=<version> baked into the built assets, which the gateway matches).

The chart ships default_routing_mode: query, matching the ICC default. That is a behaviour change for an existing install on upgrade, and it is deliberate: query is the only mechanism both Kubernetes and ECS can implement, so it is the one worth defaulting to. Set cookie if your builds do not pass PLT_DEPLOYMENT_ID yet, since in query mode a version built without its own id gets no pinning rule at all rather than silently falling back to a cookie.

The name says default because it is the cluster default rather than the last word: ICC lets an individual application override it (platformatic/icc-3#975), so a fleet can convert its build pipelines one application at a time instead of flipping everything at once.

Both modes need a Gateway API feature beyond Core, and the guarantees are not equal. Query pinning needs queryParams matching, which is Extended and reported by the conformance suite as HTTPRouteQueryParamMatching. Cookie pinning needs ResponseHeaderModifier to set the cookie, also Extended, plus a RegularExpression header match to read it back, which the Gateway API classifies as Implementation Specific: no conformance feature name, no portability guarantee, no defined regex dialect. Both were verified on Envoy Gateway v1.4.2.

Worth knowing before choosing: the v1.3.0 conformance reports show GKE Gateway does not implement query-parameter matching, and the AWS Load Balancer Controller implements neither feature, so skew protection cannot work through that controller at all. Those are the clusters that need this value set, and they are the ones where the operator did not choose the controller.

The template plumbing follows the existing dig pattern used by the other skew_protection keys, so removing default_routing_mode from values omits the variable entirely and ICC applies its own default.

Verified by rendering the chart: the shipped values produce PLT_SKEW_DEFAULT_ROUTING_MODE: "query", an explicit services.icc.features.skew_protection.default_routing_mode: cookie produces "cookie", and setting the key to null omits the variable.

Requires platformatic/icc-3#975, which implements the routing mode this configures.

Signed-off-by: marcopiraccini <marco.piraccini@gmail.com>
@marcopiraccini marcopiraccini changed the title query routing config Add skew protection routing mode to Helm chart Aug 3, 2026
@marcopiraccini
marcopiraccini marked this pull request as ready for review August 4, 2026 07:25
Signed-off-by: marcopiraccini <marco.piraccini@gmail.com>
Signed-off-by: marcopiraccini <marco.piraccini@gmail.com>

@mcollina mcollina left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

Signed-off-by: marcopiraccini <marco.piraccini@gmail.com>
@marcopiraccini
marcopiraccini merged commit 65bccf8 into main Aug 6, 2026
1 of 2 checks passed
@marcopiraccini
marcopiraccini deleted the query-routing branch August 6, 2026 18:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants