Repository navigation
feat(gate): warm a revision up through its public hosts once it serves - #83
Merged
Merged
Conversation
The tend loop requests every member's paths through each public hostname its Canary hands the gate, the first round an Application serves a new revision, and records what it met in the release record and GET /releases. Part of #12.
ExtraToast
enabled auto-merge (squash)
October 25, 2026 15:07
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.
Part of #12: the warmup, triggered from the tend loop, which is the maintainer's choice. The Reporter's half, failing the Rollout on what this records, follows in its own pull request and closes #12.
Problem
After promotion nothing requests a release through the edge. The first visitor pays for the cold caches nearest the cluster, and an edge that cannot serve the new primary goes unnoticed until someone visits. Chapter 55 says the gate warms each release up through its public hostnames, and that a 5xx there fails the Rollout. Flagger asks the gate nothing after promotion, so no webhook can start it.
Change
hostnames, the hosts of itsanonymousandauthenticatedroutes. The Canary reader now readshostnames, and refuses a Canary whose webhooks disagree on them.httpson port 443 only, no proxy, no redirect followed;host.), so the cluster's search path never completes it into a Service;100.64.0.0/10and the reserved blocks are refused;5xx, or no answer within 10 seconds, stops the warmup at that request. A401, a404or a redirect passes. A host or path that does not parse fails it without a request.warmup: {revision, failed}, wherefailednames the first failing request.GET /releasesserves it, which is how the Reporter will read it. An Application no public host reaches is recorded as warmed without a request.deploy/delivery.project.ymldeclares the Release Gate's internet egress, with its reason.deploy-kit validateaccepts the file.To know
Checks
warmup_test.go:401/404/302passing, and a502or no answer stopping the warmup with what it met;GET /releasescarrying the outcome;PublicTrafficrefusinglocalhostand plainhttp.kube_test.gocovers readinghostnames, and a Canary whose webhooks disagree on them.internal/gatepasses in full, envtest included, at 98.0% coverage.golangci-lintreports 0 issues.