github.com/argoproj/argo-cd/v2@v2.10.5/docs/user-guide/multiple_sources.md (about)

     1  # Multiple Sources for an Application
     2  
     3  !!! warning "Beta Feature"
     4      Specifying multiple sources for an application is a beta feature. The UI and CLI still generally behave as if only
     5      the first source is specified. Full UI/CLI support will be added in a future release.
     6      This feature is subject to change in backwards incompatible ways until it is marked stable.
     7  
     8  Argo CD has the ability to specify multiple sources for a single Application. Argo CD compiles all the sources
     9  and reconciles the combined resources.
    10  
    11  You can provide multiple sources using the `sources` field. When you specify the `sources` field, Argo CD will ignore 
    12  the `source` (singular) field.
    13  
    14  See the below example for specifying multiple sources:
    15  
    16  ```yaml
    17  apiVersion: argoproj.io/v1alpha1
    18  kind: Application
    19  metadata:
    20    name: guestbook
    21    namespace: argocd
    22  spec:
    23    project: default
    24    destination:
    25      server: https://kubernetes.default.svc
    26      namespace: default
    27    sources:
    28      - chart: elasticsearch
    29        repoURL: https://helm.elastic.co
    30        targetRevision: 8.5.1
    31      - repoURL: https://github.com/argoproj/argocd-example-apps.git
    32        path: guestbook
    33        targetRevision: HEAD
    34  ```
    35  
    36  The above example has two sources specified. Argo CD will generate the manifests for each source separately and combine 
    37  the resulting manifests.
    38  
    39  If multiple sources produce the same resource (same `group`, `kind`, `name`, and `namespace`), the last source to 
    40  produce the resource will take precedence. Argo CD will produce a `RepeatedResourceWarning` in this case, but it will 
    41  sync the resources. This provides a convenient way to override a resource from a chart with a resource from a Git repo.
    42  
    43  ## Helm value files from external Git repository
    44  
    45  Helm sources can reference value files from git sources. This allows you to use a third-party Helm chart with custom,
    46  git-hosted values.
    47  
    48  ```yaml
    49  apiVersion: argoproj.io/v1alpha1
    50  kind: Application
    51  spec:
    52    sources:
    53    - repoURL: 'https://prometheus-community.github.io/helm-charts'
    54      chart: prometheus
    55      targetRevision: 15.7.1
    56      helm:
    57        valueFiles:
    58        - $values/charts/prometheus/values.yaml
    59    - repoURL: 'https://git.example.com/org/value-files.git'
    60      targetRevision: dev
    61      ref: values
    62  ```
    63  
    64  In the above example, the `prometheus` chart will use the value file from `git.example.gom/org/value-files.git`. 
    65  `$values` resolves to the root of the `value-files` repository. The `$values` variable may only be specified at the 
    66  beginning of the value file path.
    67  
    68  If the `path` field is set in the `$values` source, Argo CD will attempt to generate resources from the git repository
    69  at that URL. If the `path` field is not set, Argo CD will use the repository solely as a source of value files.
    70  
    71  !!! note
    72      Sources with the `ref` field set must not also specify the `chart` field. Argo CD does not currently support using  
    73      another Helm chart as a source for value files.