refactor: Replace status.observedAt
with redis pub/sub channels for resource tree updates (#1340)
#4208
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.
Closes #1340
More information about why this PR is required now:
The Application CRD status has two fields
observedAt
andreconciledAt
.reconciledAt
is updated when application resources are compared with Git and sync/health status got refreshed.observedAt
is updated every time whenreconciledAt
is updated and when any "child" application resource (e.g. Pod, ReplicaSet etc) has changed.The
observedAt
is changed very frequently and change is required just to notify UI that it should reload resources tree. If Argo CD manages thousands of application thenobservedAt
field updates cause thousands of K8S PATCH requests every minute. This slowdown K8S API server and affects all controllers installed in the cluster.This PR deprecates
observedAt
- controller no longer updates it. The UI is using/v1/stream/applications/<app-name>/resource-tree
stream API which is powered by redis pub-sub.