Add skew protection routing mode to Helm chart - #63
Merged
Conversation
Signed-off-by: marcopiraccini <marco.piraccini@gmail.com>
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>
Signed-off-by: marcopiraccini <marco.piraccini@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Exposes
PLT_SKEW_DEFAULT_ROUTING_MODEso a cluster can choose how clients carry their version for skew protection:cookie(the gateway sets__plt_dpland matches it back) orquery(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. Setcookieif your builds do not passPLT_DEPLOYMENT_IDyet, 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
defaultbecause 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
queryParamsmatching, which is Extended and reported by the conformance suite asHTTPRouteQueryParamMatching. Cookie pinning needsResponseHeaderModifierto set the cookie, also Extended, plus aRegularExpressionheader 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
digpattern used by the otherskew_protectionkeys, so removingdefault_routing_modefrom 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 explicitservices.icc.features.skew_protection.default_routing_mode: cookieproduces"cookie", and setting the key to null omits the variable.Requires platformatic/icc-3#975, which implements the routing mode this configures.