-
Story
-
Resolution: Done
-
Normal
-
None
-
None
-
None
-
3
-
False
-
-
False
-
-
-
GITOPS Sprint 3247, GITOPS Core Sprint 3248
Story (Required)
As a user, I would like to install a specific argocd component and not all the components.
Background (Required)
The Operator manages all Argo CD workloads, such as API server, repository server, application controller, etc.
Right now, the following workloads are managed:
- argocd-server (API server and UI)
- argocd-repo-server (Repository server)
- argocd-application-controller (Main reconciliation controller)
- argocd-applicationset-controller (ApplicationSet reconciliation controller)
- argocd-redis (volatile cache)
- argocd-dex (SSO)
To support installations with a minimal resource footprint and to distribute installations across clusters or namespaces, we need to be able to only install a partial Argo CD.
We want to let the user chose which of those workloads are to be installed/managed for a given Argo CD instance. Because some of the components have dependencies to each other, we also must give the user the chance to specify the location (URL or FQDN/port combination) of a workload that is running elsewhere, i.e. that has not been installed by the current instance. Currently, these locations are configured automatically by the Operator (for example, the --repo-server parameter for the argocd-application-controller is set automatically to the same instance's repository server).
The following dependencies between the workloads exist:
argocd-application-controller depends on
- argocd-repo-server
- argocd-redis
argocd-server depends on
- argocd-repo-server
- argocd-redis
- argocd-dex (in SSO scenarios)
argocd-applicationset-controller depends on
- argocd-repo-server
- argocd-redis
argocd-repo-server depends on
- argocd-redis
For each of the above components, the user should be specify the location for the appropriate dependency.
Out of scope
Check for depending components availability.
Approach (Required)
Add a boolean pointer flag `spec.<component>.enabled` flag. The flag value defaults to `true` to maintain the existing behavior.
Dependencies
<Describes what this story depends on. Dependent Stories and EPICs should be linked to the story.>
Acceptance Criteria (Mandatory)
* An individual ArgoCD component is not installed if `spec.<component>.enabled` flag is set to `false`.
INVEST Checklist
Dependencies identified
Blockers noted and expected delivery timelines set
Design is implementable
Acceptance criteria agreed upon
Story estimated
Legend
Unknown
Verified
Unsatisfied
Done Checklist
- Code is completed, reviewed, documented and checked in
- Unit and integration test automation have been delivered and running cleanly in continuous integration/staging/canary environment
- Continuous Delivery pipeline(s) is able to proceed with new code included
- Customer facing documentation, API docs etc. are produced/updated, reviewed and published
- Acceptance criteria are met