-
Notifications
You must be signed in to change notification settings - Fork 880
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(controller): use CRD status subresource #789
Conversation
b5ab88e
to
df9f844
Compare
Codecov Report
@@ Coverage Diff @@
## master #789 +/- ##
==========================================
- Coverage 82.09% 82.01% -0.08%
==========================================
Files 98 98
Lines 8523 8536 +13
==========================================
+ Hits 6997 7001 +4
- Misses 1085 1093 +8
- Partials 441 442 +1
Continue to review full report at Codecov.
|
Signed-off-by: Jesse Suen <[email protected]>
df9f844
to
63d9b60
Compare
if !isGenerationObserved(ro) { | ||
return "Progressing", "waiting for rollout spec update to be observed" | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the check that allows us to detect if rollout controller observed the new spec.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Resolves #771
Resolves #440
This change updates Argo Rollouts to enable the use of the CRD status subresource. The reason for doing so, is to allow the rollout controller to record the numeric
metadata.generation
intostatus.observedGeneration
. This allows us to have a reliable indicator of a Rollout who's spec has (or has not yet) been observed by the controller (for example if the argo-rollouts controller was down). This is needed in situations when tooling needs to wait/block on a Rollout to become healthy, after making a spec change (e.g. Argo CD PostSync hook).A huge consequence of this change, is that Rollouts can no longer update
spec/metadata
at the same time asstatus
, since the latter requires a separate call to the rollout's/status
endpoint. Most changes are in test expectations that currently expect updates on the resource and not resource/status.The main code change is in
rollout/sync.go
, which splits the update of a rollout into two API calls, andpromote.go
which also needs to make two API calls during promotion.This change also:
status.canary.stableRS
field.TODO: