Uploaded image for project: 'OpenShift GitOps'
  1. OpenShift GitOps
  2. GITOPS-8960

Allow mapping to agents using .spec.destination

XMLWordPrintable

    • Icon: Feature Feature
    • Resolution: Unresolved
    • Icon: Critical Critical
    • None
    • None
    • None
    • None
    • False
    • Hide

      None

      Show
      None
    • False
    • 0% To Do, 100% In Progress, 0% Done

      Feature Overview

      Applications are routed to specific agents by the namespace they are created on the control plane. For example, an Application created on the control plane cluster in the namespace "my-agent" will be mapped by the principal to an agent named "my-agent". This means that Applications targeting a specific agent must all be created in the same namespace.

      This feature calls for an additional way to route Applications to agents: By leveraging the .spec.destination.name field in the Application CR, regardless of the namespace the Application is created in on the control plane cluster.

      For an up-to-date discussion and additional context on this, refer to https://github.com/argoproj-labs/argocd-agent/issues/593

      Goals

      The main goals behind this feature are to enable ACM integration, and to enable advanced multi-tenancy on the control plane cluster.

      Requirements

      Requirements Notes IS MVP
      Applications can be mapped using the .spec.destination.name field, regardless of the namespace the application lives in. Breaking change, see further requirements  
      The control plane administrator can configure the principal in either mode: namespace mapping (the default and current implementation) or destination mapping (the feature to implement) Namespace mapping must be the default as to not break current implementation  
      The agent needs to make sure there is no naming collision for Applications, because the principal could request creation of two similarly named apps (i.e. "foo") that exist on the control plane in two different namespaces.    
      Likely, the redis proxy's routing decision engine needs to be adapted, too.    
           

      Use Cases

      • Enable ACM's ApplicationSet integration, which uses templated destination fields in the Applications to target specific clusters. The ApplicationSet controller cannot create Applications in namespaces that are different from the one the ApplicationSet itself is created in. This is in conflict with the current  way of mapping an agent (i.e. cluster).
      • Enable advanced multi-tenancy on the control plane based on the apps-in-any-namespace pattern. For example, you give teams dedicated namespaces on the control plane to manage their apps declaratively, but they'd need to target more than one cluster. This will also align with applicationsets-in-any-namespace.

      Out of scope

      <Defines what is not included in this story>

      Dependencies

      < Link or at least explain any known dependencies. >

      Background, and strategic fit

      This will be a breaking change, and should be implemented as "optional", i.e. as a configurable way in addition to the existing routing.

      Users already specify the target agent in the .spec.destination.name field, so that the resource-proxy will fit, so migration on the principal side would be rather seamless: Just switch routing modes.

      Assumptions

      < Are there assumptions being made regarding prerequisites and dependencies?>
      < Are there assumptions about hardware, software or people resources?>

      Customer Considerations

      < Are there specific customer environments that need to be considered (such as working with existing h/w and software)?>

      Documentation/QE Considerations

      < What educational or reference material (docs) is required to support this product feature? For users/admins? Other functions (security officers, etc)? >
      < Does this feature have a doc impact? Possible values are: New Content, Updates to existing content, Release Note, or No Doc Impact?>
      < Are there assumptions being made regarding prerequisites and dependencies?>
      < Are there assumptions about hardware, software or people resources?>

      Impact

      < If the feature is ordered with other work, state the impact of this feature on the other work>

      Related Architecture/Technical Documents

      <links>

      Definition of Ready

      • The objectives of the feature are clearly defined and aligned with the business strategy.
      • All feature requirements have been clearly defined by Product Owners.
      • The feature has been broken down into epics.
      • The feature has been stack ranked.
      • Definition of the business outcome is in the Outcome Jira (which must have a parent Jira).

              showeimer Sho Weimer
              jfischer@redhat.com Jann Fischer
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated: