Summary
Configuring Argo CD can be an arduous process with a growing number of configuration knobs in large configmaps and secrets. Example https://argoproj.github.io/argo-cd/operator-manual/argocd-cm.yaml
This enhancement proposal aims to introduce a set of strongly typed APIs a.k.a CRDs to make configuration of clusters, repository credentials, and health checks.
Motivation
- Make it extremely hard for operators to enter incorrect configuration.
- Operators should be able to define key configuration information as custom resources.
- Use the Kubernetes best practices to deprecate API attributes ( example ) .
- Provide feedback to operators as information in the `.status` section of the configuration object or deny admission of an incorrectly formatted configuration.
Goals
- Build a set of operator-focused APIs that hide the configuration information that goes into argocd-cm.yaml
- Use the operator-focused APIs to convey compatibility information to operators.
Non-Goals
- Enhancing https://github.com/argoproj-labs/argocd-operator is a non-goal. We may consider having these controllers in a separate repo or the same as https://github.com/argoproj-labs/argocd-operator .
- This proposal doesn’t intend to define how the APIs would look in detail.
- This proposal doesn’t intend to define the exhaustive list of configurations.
Proposal
- Define & manage a set of CRD/Controllers in a separate Github repository that simplify configuration of Argo CD.
- Define a Repository CRD and controller which watches Repository CRs and configures the relevant configmaps. argoproj/argo-cd/issues/5720
- Define a CustomHealthCheck CRD and controller which watches CustomHealthCheck and configures the relevant configmaps argoproj/argo-cd/issues/5506
- Define a ArgoCDConfig CRD and controller which watches ArgoCDConfig CRs and configures relevant configmaps that captures the equivalent of https://argoproj.github.io/argo-cd/operator-manual/argocd-cm.yaml for areas which aren’t covered by other CRDs.
- argoproj/argo-cd/issues/5721Define a ConfigManagementPlugin CRD and controller which watches ConfigManagementPlugin CRs and configures the appropriate workloads
These CRDs need may live with the Argo CD Operator project.
Use cases
Use case 1:
As an operator, I wish to add/remove repository configurations following an OpenAPI Validation Schema.
Use case 2:
As an operator, I wish to add/remove custom health checks following an OpenAPI Validation Schema.
Use case 3:
As an operator, I wish to configure ArgoCD following an OpenAPI Validation Schema.
- is blocked by
-
GITOPS-766 Add mechanism for custom Argo CD plugins and tools
- Closed
-
GITOPS-915 Health status for OpenShift resources
- Closed
-
GITOPS-1310 Define a Repository CRD and controller which watches Repository CRs and configures the relevant configmaps.
- Closed
-
GITOPS-1309 R&D: Define & manage a set of CRD/Controllers in a separate Github repository that simplify configuration of Argo CD
- Closed