-
Epic
-
Resolution: Unresolved
-
Normal
-
None
-
Enhance GitOps Operator to Support Wildcards in ApplicationSet Source Namespaces
-
M
-
False
-
-
False
-
-
In Progress
-
0% To Do, 0% In Progress, 100% Done
-
-
-
Epic Goal
The goal of this Epic is to enhance the GitOps Operator to recognize and process wildcard characters (*) within the .spec.applicationSet.sourceNamespaces field of the ArgoCD Custom Resource (CR).
This enhancement provides significant administrative efficiency and scalability by allowing cluster administrators to enable the "ApplicationSets in Any Namespace" feature for a dynamic group of namespaces using a single pattern (e.g., team-*) instead of a static, unmaintainable list.
Why is this important?
Currently, the ArgoCD Operator enforces a manual, explicit listing of all target namespaces in .spec.applicationSet.sourceNamespaces. This violates the principle of automation, is prone to human error, and creates an ongoing maintenance burden whenever new namespaces are provisioned or retired.
Scenarios
As a cluster administrator, I want to configure the "ApplicationSets in Any Namespace" feature using a wildcard pattern (e.g., qa-{} or dev-) in the .spec.applicationSet.sourceNamespaces field, so that all namespaces matching that prefix automatically inherit the capability without manual updates to the ArgoCD CR.
Example Configuration:
kind: ArgoCD
spec:
applicationSet:
sourceNamespaces:
- 'team-*' # Supports all namespaces starting with 'team-'
- 'staging' # Explicitly supports one namespace
- '*' # Supports ALL namespaces (if needed)
SDLC Questionnaire
| S.No | Questions | Yes/No | Sample JIRA Epic |
|---|---|---|---|
| 1 | Does this Epic address a change in way the product is being used? (eg: Adding support for OpenShift GitOps to be used in ROSA cluster with HCP) | No | GITOPS-5223 |
| 2 | Does this Epic require a change in the application's runtime - Upgrade of operator-sdk, OLM, client-go, go-toolset ? | Yes/No | GITOPS-8104 |
| 3 | Does this Epic primarily dealing with introducing a new security related feature (eg: Introduce SSO support) | Yes/No | GITOPS-437, GITOPS-547 |
| 4 | Does this Epic primarily dealing with the modification of an existing security feature ? (Eg: Supporting of External Authentication for SSO) | Yes/No | GITOPS-8017 |
| 5 | Does this Epic require changes to any cryptographic library ( Eg: FIPS support for OpenShift GitOps) | Yes/No | |
| 6 | Does this Epic require any new or change in the existing cryptographic algorithms used in the product (Eg: Using GPG verification for manifests, Upgrading from SHA256 to SHA512) | Yes/No | |
| 7 | Does this Epic require any change in existing authentication mechanisms (eg: Argo CD Auth integration with OpenShift, Kerberos to OAuth) | Yes/No | GITOPS-437 GITOPS-547 |
| 8 | Does this Epic require any change in authorisation mechanism (Eg: Using RBAC and service accounts impersonation for App Sync) | Yes/No | |
| 9 | Does this Epic require a change in the Communication protocol ( Eg: Using TLS to encrypt data traffic to/from Redis cache) | Yes/No | GITOPS-720 |
| 10 | Does this Epic require a change in how External Data is parsed and validated ? ( Eg: Change from JSON to Protobuf) | Yes/No | |
| 11 | Does this Epic require a change in core libraries or runtime (Eg: go compiler upgrade, Changing Operator SDK, controller-runtime, client-go versions) | Yes/No | |
| 12 | Does this Epic require exposing any internal service to internet (Eg: Allow exposing Argo CD Agent principal via Route, using ArgoCD CR) | Yes/No | |
| 13 | Does this Epic require a change in any existing gRPC service APIs | Yes/No | |
| 14 | Does this Epic require a change in any new external service (Eg: Support for OCI container registry for storing manifests) | Yes/No | |
| 15 | Does this Epic require a change in the tenancy model ? (Eg: Supporting Apps/Appsets in Any namespace, cluster and repo credentials in any namespace) | Yes/No | |
| 16 | Does this Epic require any addition/modification of RBAC resources (Service Account, Role, RoleBinding, ClusterRole, ClusterRoleBinding) ? | Yes/No | |
| 17 | Does this Epic require a feature that needs to be enabled only for cluster scoped Argo CD instances ? | Yes/No |
Other Considerations
- This functionality already exists for the similar .spec.sourceNamespaces field (Application in Any Namespace). The implementation for ApplicationSets should leverage and extend the existing logic used there (reference PR: https://github.com/argoproj-labs/argocd-operator/pull/1218).
- This feature relies on underlying support/behavior in Argo CD to correctly watch filtered namespaces.
- Existing Operator documentation for ApplicationSets in Any Namespace: https://argocd-operator.readthedocs.io/en/latest/usage/appsets-in-any-namespace/
- Existing Operator documentation for Apps in Any Namespace (for reference): https://argocd-operator.readthedocs.io/en/latest/usage/apps-in-any-namespace/
- Upstream documentation for wildcard support: https://github.com/argoproj/argo-cd/pull/25403
Definition of Ready
- The epic has been broken down into stories.
- Stories have been scoped.
- The epic has been stack ranked.
Definition of Done
- Code Complete:
- All code has been written, reviewed, and approved.
- Tested:
- Unit tests have been written and passed.
- Integration tests have been completed.
- System tests have been conducted, and all critical bugs have been fixed.
- Tested on OpenShift either upstream or downstream on a local build.
- Documentation:
- User documentation or release notes have been written.
- Build:
- Code has been successfully built and integrated into the main repository / project.
- Review:
- Code has been peer-reviewed and meets coding standards.
- All acceptance criteria defined in the user story have been met.
- Tested by reviewer on OpenShift.
- Deployment:
- The feature has been deployed on OpenShift cluster for testing.
- Acceptance:
- Product Manager or stakeholder has reviewed and accepted the work.