Open
Description
GitOps Bridge Enhancement Proposal
Background
The GitOps Bridge is a project that collects examples and patterns demonstrating how to use ArgoCD Application Sets, particularly when working with Cloud Provider Managed Kubernetes. Based on feedback from field engagements, several improvements have been identified for the next major version.
Objectives
- Simplify addon management
- Improve version control and testing
- Enhance compatibility and reduce maintenance overhead
- Streamline single cluster deployments
Proposed Improvements
1. Implement Addon Stacks
- Introduce the concept of "stacks" for deploying addons
- A stack defines tested versions of addons that work together for specific Kubernetes versions
- Users can select which addons to install from a stack
- Stacks define versions, not which addons get installed
2. Version Promotion via Stacks
- Promote addon versions as part of stacks
- Clusters adopt a stack version from the platform team
- Single addon updates require testing and approval within a new stack version
3. Centralized Version Management
- Consolidate addon/helm chart versions into a single file
- Benefits:
- Easier automation of addon upgrades
- Simplified creation of new stacks as helm charts are released
- Streamlined process for pushing all addons (helm and images) to private/airgapped OCI or HTTP helm repositories
4. Reduce ApplicationSet Duplication
- Create a helm chart to:
- Select addons to install (enable/[true|false])
- Improve maintenance of ApplicationSets
- Reduces the need to maintain multiple similar ApplicationSet files
5. CNOE Compatibility
- Ensure compatibility with the CNOE IDPbuilder tool and project
6. Single Cluster Deployment Improvements
- Address issues with deploying all ApplicationSets in single cluster scenarios:
- Reduce noise when there are no spokes for optional addon deployment
- Remove cluster selector using the label
enable_$addon_name
- Control addon deployment by installing or not installing the ApplicationSet
7. Applications from ApplicationSet Dependency (order/sync-wave)
- Address issues with an application depending on another application from a different application set
- Implement annotation on Application
depends_on: "otherapp1,otherapp2"
- validation webhook will check that dependencies are healthy before allowing to continue
8. Deploying resources before and after the addon
- Address issues of deploying resources after addon is deployed, like kyverno policies or karpenter nodeclass or nodepool
9. Complete Airgapped environments
- Show how to configure ArgoCD to fetch helm charts and corresponding images from private OCI repository (ie. ECR)
- Show how to build a CICD pipeline that replicates addons from public to private OCI registry
10. Cross Accounts configurations (AWS Specififc)
- Show examples on how to use EKS Pod Identity when using ArgoCD from Central Account to manage Clusters located in different accounts
11. Additional examples for other IaC tools
- Add additional IaC tools like CAPI/Crossplane/ACK examples, currently we only have examples for two Terraform and Pulumi
Feedback and Discussion
Please comment on this issue with your thoughts, suggestions, or concerns regarding these proposed improvements. We welcome all feedback to ensure the GitOps Bridge v2 meets the needs of our users and aligns with best practices in GitOps and Kubernetes management.
Metadata
Metadata
Assignees
Labels
No labels