applicationset-progressive-sync
applicationset-progressive-sync copied to clipboard
Progressive sync controller for Argo ApplicationSet
An ArgoCD Application can specify a destination server using `server` or `name` as per https://github.com/argoproj/argo-cd/blob/master/pkg/apis/application/v1alpha1/types.go#L524 At the moment we just look at `server` we need to support both.
Implement the requeue specification ## TODO [ ] Annotate the ProgressiveRollout CRD to protect against controller restart ## NOTES [ ] See https://book.kubebuilder.io/cronjob-tutorial/controller-implementation.html for some hints around adding annotations, timeouts...
When a progressive sync is completed, the controller sets the CRD status to `Completed`. In the case when a stage fails, the controller doesn't have the logic to set the...
In #8 we introduced the concept of `status.stages`. To complete the information about the status of each stage, we should extend `status.stages` with information about the cluster status. It should...
Consider the following example With this stage, we will update cells-1-eu-west-1a-1 and cells-1-eu-west-1b-2 and no clusters in eu-central-1. A bad deployment will affect 2 of 3 clusters in the same...
Related to https://github.com/Skyscanner/argocd-progressive-rollout/issues/51 as the manager pod transition from ready to crashing. I _suspect_ the `ct` test gets confused by the brief transition to ready. The controller-runtime supports readiness and...
We need a way to signal to the APS that a progressive rollout is cancelled by a user. That includes a new final state (Cancelled) and some way of notifying...
Add a validating webhook to make sure the CRD is valid before creating the objects. See https://book.kubebuilder.io/cronjob-tutorial/webhook-implementation.html for implementation details. Checks - 2 PR objects can't reference the same ApplicationSet...
Events allow users to see what is going on with a particular object, and allow automated processes to see and respond to them. The recorder package is https://pkg.go.dev/k8s.io/client-go/tools/record
Use KIND to spin up a kubernetes environment and: - install argocd - install argocd-applicationsets - install the progressive rollout operator and its CRD