Skip to content

Conversation

@KevinSnyderCodes
Copy link
Contributor

@KevinSnyderCodes KevinSnyderCodes commented Oct 1, 2025

Addresses #1312, #1257, #1115

Retains all matchLabels in the primary Deployment or DaemonSet, instead of picking the first one that matches the -selector-labels.

Still appends -primary to the value of the first label that matches -selector-labels. This ensures that the canary and primary have a unique set of selector labels.

Service selector also uses the full set of matchLabels and overrides the value of the first matching -selector-labels to route to canary or primary.

Does not recreate the primary Deployment or DaemonSet if the matchLabels of the existing object are not equal.

Does update the Service selector labels to match the new behavior.

@KevinSnyderCodes KevinSnyderCodes force-pushed the rework-selector-labels branch 3 times, most recently from eb3b823 to fc1ffcf Compare October 3, 2025 19:42
@codecov-commenter
Copy link

codecov-commenter commented Oct 4, 2025

Codecov Report

❌ Patch coverage is 64.17910% with 24 lines in your changes missing coverage. Please review.
✅ Project coverage is 28.55%. Comparing base (12ee6cb) to head (24ffc5b).
⚠️ Report is 67 commits behind head on main.

Files with missing lines Patch % Lines
pkg/canary/daemonset_controller.go 68.00% 7 Missing and 1 partial ⚠️
pkg/canary/deployment_controller.go 68.00% 7 Missing and 1 partial ⚠️
pkg/canary/knative_controller.go 0.00% 2 Missing ⚠️
pkg/canary/service_controller.go 0.00% 2 Missing ⚠️
pkg/controller/finalizer.go 0.00% 2 Missing ⚠️
pkg/router/factory.go 0.00% 2 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##             main    #1830       +/-   ##
===========================================
- Coverage   39.44%   28.55%   -10.89%     
===========================================
  Files         287      287               
  Lines       22706    22827      +121     
===========================================
- Hits         8956     6518     -2438     
- Misses      12777    15579     +2802     
+ Partials      973      730      -243     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Addresses fluxcd#1312, fluxcd#1257, fluxcd#1115

Retains all `matchLabels` in the primary `Deployment` or `DaemonSet`, instead of picking the first one that matches the `-selector-labels`.

Recreates the primary `Deployment` or `DaemonSet` if the `matchLabels` of the existing object are not equal. This must be done since `matchLabels` is an immutable field. The recreate happens before promoting the canary to primary (i.e. no traffic is being routed to the primary).

Still appends `-primary` to the value of the first label that matches `-selector-labels`. This ensures that the canary and primary have a unique set of selector labels.

`Service` selector also uses the full set of `matchLabels` and overrides the value of the first matching `-selector-labels` to route to canary or primary.

Signed-off-by: Kevin Snyder <[email protected]>
Signed-off-by: Kevin Snyder <[email protected]>
Signed-off-by: Kevin Snyder <[email protected]>
Signed-off-by: Kevin Snyder <[email protected]>
Tests the `matchLabels` behavior for `Deployment`, `DaemonSet`, and `Service`

Signed-off-by: Kevin Snyder <[email protected]>
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.

2 participants