Skip to content

GitOps Bridge Enhancement Proposal (GBEP) v2 #73

Open
@csantanapr

Description

@csantanapr

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

  1. Simplify addon management
  2. Improve version control and testing
  3. Enhance compatibility and reduce maintenance overhead
  4. 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:
    1. Select addons to install (enable/[true|false])
    2. 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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions