Skip to content

Configuration

Skew protection is configured via environment variables or Helm values.

PropertyValue
TypeBoolean
Defaultfalse
Environment VariablePLT_FEATURE_SKEW_PROTECTION
Helmservices.icc.features.skew_protection.enable

When disabled, ICC does not manage version-aware routes or run the draining lifecycle. Watt instances can still report a deployment version for metrics, workflow routing, and deployment history, but ICC keeps only the current version and does not create an HTTPRoute or ALB pinning rule.

PropertyValue
TypeString (query or cookie)
Defaultquery
Environment VariablePLT_SKEW_DEFAULT_ROUTING_MODE
Helmservices.icc.features.skew_protection.default_routing_mode

How a client carries its version.

query pins on a ?dpl=<version> query parameter that the application bakes into its own assets at build time. cookie pins on the __plt_dpl cookie that the gateway sets on responses and matches back on later requests.

The two are strictly exclusive. In query mode ICC emits no cookie rule and sets no cookie; in cookie mode it emits no query rule. There is no fallback between them: a version whose image was not built with its own id as PLT_DEPLOYMENT_ID gets no pinning rule at all and is served by the active version, rather than being quietly downgraded to a cookie. See Deploying Versioned Applications for how to pass the id at build time.

On Kubernetes, each mode has its own Gateway API controller requirement and neither is guaranteed by Core conformance. ECS supports query mode only and programs ALB listener rules directly. Check Prerequisites before changing this value.

PLT_SKEW_DEFAULT_ROUTING_MODE sets the cluster default. An individual application can override it from Settings > Skew Protection > Pinning in the ICC interface, which lets a fleet convert its build pipelines one application at a time instead of flipping everything at once.

The override is validated against the platform. Cookie pinning requires an edge that can add a response header, so on providers whose load balancer cannot do that it is rejected and the application stays on query pinning. The Pinning control shows the cookie option disabled, with the reason, wherever it is unavailable.

Each application also selects who applies normal lifecycle changes:

ModeWorkload lifecycleRouting lifecycle
observeThe customer creates workloadsICC applies routes
manageICC applies workloadsICC applies routes
adviseICC returns workload plansICC returns routing plans

The default is observe. Approval is available in observe and manage; a version remains staged until approved. Approval is disabled in advise because ICC does not control the route cutover.

The explicit POST /deploy and POST /applications/:id/deploy endpoints are deployment commands and create the requested workload in every mode. Use the matching /deploy/plan endpoint for a read-only workload and routing plan.

PropertyValue
TypeInteger (milliseconds)
Default1800000 (30 minutes)
Environment VariablePLT_SKEW_HTTP_GRACE_PERIOD_MS
Helmservices.icc.features.skew_protection.http_grace_period_ms

Duration after entering Draining during which the version is kept alive unconditionally. No traffic checks or policy evaluations run during this window.

PropertyValue
TypeInteger (milliseconds)
Default86400000 (24 hours)
Environment VariablePLT_SKEW_HTTP_MAX_ALIVE_MS
Helmservices.icc.features.skew_protection.http_max_alive_ms

Hard ceiling on how long a version can remain in Draining state. After this duration, the version is force-expired regardless of remaining traffic.

PropertyValue
TypeInteger (seconds)
Default43200 (12 hours)
Environment VariablePLT_SKEW_COOKIE_MAX_AGE
Helmservices.icc.features.skew_protection.cookie_max_age

The Max-Age attribute on the __plt_dpl cookie. Controls how long the browser retains the deployment cookie.

PropertyValue
TypeBoolean
Defaultfalse
Environment VariablePLT_SKEW_AUTO_CLEANUP
Helmservices.icc.features.skew_protection.auto_cleanup

When enabled, ICC deletes the provider resources for expired versions. On Kubernetes these are the Deployment and Service. On ECS this includes the ECS service and its ICC-managed target group, Cloud Map service, and registry secret. When disabled, ICC scales the workload to zero but leaves its resources for manual removal.

PropertyValue
TypeInteger (milliseconds)
Default60000 (1 minute)
Environment VariablePLT_SKEW_CHECK_INTERVAL_MS
Helmservices.icc.features.skew_protection.check_interval_ms

How often the draining checker evaluates draining versions and retries or confirms pending-expire teardown.

PropertyValue
TypeInteger (milliseconds)
Default1800000 (30 minutes)
Environment VariablePLT_SKEW_TRAFFIC_WINDOW_MS
Helmservices.icc.features.skew_protection.traffic_window_ms

The Prometheus query window for measuring requests per second to draining versions. The RPS check is skipped until the version has been draining longer than this window.

PropertyValue
TypeInteger (milliseconds)
Default3600000 (1 hour)
Environment VariablePLT_SKEW_WORKFLOW_GRACE_PERIOD_MS
Helmservices.icc.features.skew_protection.workflow_grace_period_ms

The unconditional draining period for a version that uses the workflow expire policy.

PropertyValue
TypeInteger (milliseconds)
Default259200000 (72 hours)
Environment VariablePLT_SKEW_WORKFLOW_MAX_ALIVE_MS
Helmservices.icc.features.skew_protection.workflow_max_alive_ms

The hard ceiling for a version that uses the workflow expire policy.

PropertyValue
TypeInteger (milliseconds)
Default5000 (5 seconds)
Environment VariablePLT_SKEW_CONFIRM_INTERVAL_MS
HelmNot exposed

How often ICC retries or confirms activation for versions in pending-apply. This is an ICC runtime setting and has no Helm value.

VariableHelmTypeDefaultDescription
PLT_FEATURE_SKEW_PROTECTIONservices.icc.features.skew_protection.enableBooleanfalseEnable/disable skew protection globally
PLT_SKEW_DEFAULT_ROUTING_MODEservices.icc.features.skew_protection.default_routing_modeStringqueryHow clients carry their version: query or cookie
PLT_SKEW_HTTP_GRACE_PERIOD_MSservices.icc.features.skew_protection.http_grace_period_msInteger1800000Grace period for HTTP versions (ms)
PLT_SKEW_HTTP_MAX_ALIVE_MSservices.icc.features.skew_protection.http_max_alive_msInteger86400000Max alive ceiling for HTTP versions (ms)
PLT_SKEW_WORKFLOW_GRACE_PERIOD_MSservices.icc.features.skew_protection.workflow_grace_period_msInteger3600000Grace period for workflow versions (ms)
PLT_SKEW_WORKFLOW_MAX_ALIVE_MSservices.icc.features.skew_protection.workflow_max_alive_msInteger259200000Max alive ceiling for workflow versions (ms)
PLT_SKEW_COOKIE_MAX_AGEservices.icc.features.skew_protection.cookie_max_ageInteger43200Cookie Max-Age attribute (seconds)
PLT_SKEW_AUTO_CLEANUPservices.icc.features.skew_protection.auto_cleanupBooleanfalseAuto-delete expired provider resources
PLT_SKEW_CHECK_INTERVAL_MSservices.icc.features.skew_protection.check_interval_msInteger60000Draining checker interval (ms)
PLT_SKEW_CONFIRM_INTERVAL_MSNot exposedInteger5000Pending activation confirmation interval (ms)
PLT_SKEW_TRAFFIC_WINDOW_MSservices.icc.features.skew_protection.traffic_window_msInteger1800000Prometheus query window for RPS check (ms)