Skip to content

Set observedGeneration in status conditions#14973

Open
felipesere wants to merge 7 commits intolinkerd:mainfrom
felipesere:observed-generation-in-status
Open

Set observedGeneration in status conditions#14973
felipesere wants to merge 7 commits intolinkerd:mainfrom
felipesere:observed-generation-in-status

Conversation

@felipesere
Copy link

Other controllers and components of the k8s ecosystem (in this case Flagger) expect controllers that reconcile resources from the Gateway API to include their observed generate on the status conditions. This is also required by the spec

The upstream Conditions struct contains an optional observedGeneration field —
implementations MUST use this field and set it to the metadata.generation field
of the object when the status is generated.

In this case, Flagger stalls the canary progress because it is not sure that Linkerd has reconciled and accepted the route.

Solution

Track the resource's metadata.generation in RouteRef, HttpLocalRateLimitPolicyRef, and EgressNetworkRef structs. Thread this generation value through all condition-producing functions.

Validation

All existing tests updated to pass generation through to condition constructors. Tests continue to pass with the new signatures

Fixes #14964

Signed-off-by: Felipe Seré felipe.sere@truelayer.com

Signed-off-by: Felipe Sere <felipe.sere@truelayer.com>
Signed-off-by: Felipe Sere <felipe.sere@truelayer.com>
Signed-off-by: Felipe Sere <felipe.sere@truelayer.com>
Signed-off-by: Felipe Sere <felipe.sere@truelayer.com>
Signed-off-by: Felipe Sere <felipe.sere@truelayer.com>
@felipesere felipesere requested a review from a team as a code owner February 27, 2026 14:10
@cratelyn
Copy link
Member

cratelyn commented Mar 3, 2026

👋 thanks for opening a pull request! it looks like the route_reattachment test is currently failing?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Linkerd2 not setting observerdGeneration on HTTPRoute when using it for canary rollouts

2 participants