Report Gateway and GatewayClass status conditions#121
Merged
Conversation
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.
Summary
Sōzune watched Gateway API
GatewayandGatewayClassresources but never reported status back onto them, sokubectl get gateway/gatewayclassshowedUnknownconditions even when sōzune was serving their routes. An operator had no way to confirm a Gateway was accepted without reading sōzune's logs. This adds the standard status conditions the Gateway API spec expects, and fixes a related acceptance race the new status assertions surfaced.What changed
status.conditions[]on the resources it owns:GatewayClass—Accepted=Trueon a class whosecontrollerNameiskemeter.io/sozune.Gateway—Accepted=TrueandProgrammed=Trueon every Gateway pointing at such a class (acceptance and programming are the same instant for sōzune, so both flip together).run_gateway_status_writertask fed by an mpsc channel, mirroring the existing HTTPRoute status writer. Watchers onlytry_send, never block their event loop on an apiserver PATCH round-trip.merge_conditionsreplaces only the condition types sōzune owns and preserves foreign ones, ignoringlast_transition_timeso a periodic re-evaluation doesn't hammer the apiserver.gateways/statusandgatewayclasses/statuspatch verbs (e2e deploy manifest + docs).Tests
02-gateway.sh): assertsGatewayClass Accepted=TrueandGateway Accepted=True/Programmed=True. Verified end-to-end on kind against a local image build: 28 passed, 0 failed.cargo fmt --check,clippyclean; full unit suite 679 passed.Docs
New Gateway and GatewayClass status-condition tables in the Kubernetes provider docs, RBAC updated.