-
Notifications
You must be signed in to change notification settings - Fork 5.7k
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
Persist resource health in Redis instead of the Application CR by default #10312
Comments
Minor clarification is
Saving the status in the CR/etcd has a performance impact, end user like Adobe had to switch the default to redis to improve scalability in their recent talk at GitOpsCon NA 2024 https://youtu.be/MDXrc_cLVns?t=404 |
Will this break the applicationset controller's progressive sync functionality? |
@rumstead good question. I think the answer is "yes." One option would be to add an option that only persists top-level health changes to the status instead of changes for individual resources. Another option would be to modify the AppSet controller to pull the current health status from Redis. |
took me forever to find when the resource health cache was created - #1120 |
Interested in everyone's thoughts on this overall approach before I go test. |
I am not entirely sure this would work out with notification/notification controllers too. AFAIU the notification controller rely on the Application CR to be updated to be able to send notification in "real" time about sync event 🤔. Sorry if that's already taken care of, just wondering how this could actually works 😅. |
That is a good shout but I don't believe the notification controller looks at the health status of the individual resources, just the overall application health / sync status. E.g., the diff in the status would look something like this: persis = true (the default) status:
health:
status: Healthy
resources:
- group: apps
health:
status: Healthy
kind: Deployment
name: demo-app-kust
namespace: cluster-generator
status: OutOfSync
version: v1
sync:
status: OutOfSync persist = false # snippet CR status
status:
health:
status: Healthy
resourceHealthSource: appTree
resources:
- group: apps
kind: Deployment
name: demo-app-kust
namespace: cluster-generator
status: OutOfSync
version: v1
sync:
status: OutOfSync Where persist = false is missing |
Ok after looking into this deeper, progressive syncs won't be impacted. Progressive syncs only care about the application status. The application status depends on the underlying resources but the application controller handles properly setting it. |
Summary
As of 2.5, we'll have the option to persist resource health statuses in Redis instead of in the Application CRD. In 3.0, we should default to persisting in Redis.
Motivation
Proposal
Flip the switch. Maybe even remove support for CRD persistence entirely.
The text was updated successfully, but these errors were encountered: