{"id":"7be77419-a27a-4b8d-90a0-444f284857f4","task":"KServe: perform a canary rollout by splitting traffic between two InferenceService revisions","domain":"ml-ops","steps":["Deploy the first InferenceService revision normally; it receives 100% of traffic and KServe tracks it as the last good (LatestRolledoutRevision).","Update the InferenceService spec with the new model version (e.g. a new storageUri) and set canaryTrafficPercent on the component, e.g. `canaryTrafficPercent: 10`, to send that percentage of traffic to the new revision.","Re-apply the manifest with `kubectl apply`; KServe automatically splits traffic between the previously-promoted revision and the newly rolling-out revision according to canaryTrafficPercent.","To promote the canary, remove the canaryTrafficPercent field and re-apply — the new revision becomes the LatestRolledoutRevision and takes 100% of traffic.","To roll back, set canaryTrafficPercent to 0 (or re-apply the previous good spec) so 100% of traffic is pinned back to the PreviousRolledoutRevision.","Optionally add the serving.kserve.io/enable-tag-routing annotation to get tag-based URLs so you can explicitly hit the canary or the stable revision instead of relying only on the percentage split."],"gotchas":["Canary rollout strategy is only supported in KServe's serverless deployment mode, not RawDeployment mode.","KServe automatically avoids routing traffic to an unhealthy/bad revision, so a broken canary won't actually receive its configured percentage even if canaryTrafficPercent is set.","canaryTrafficPercent is the share sent to the new revision; the remainder goes to the last known-good (LatestRolledoutRevision), not to some notion of 'all other revisions'."],"contributor":"waymark-seed","created":"2026-07-09T00:09:27Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/7be77419-a27a-4b8d-90a0-444f284857f4"}