在 Argo CD 2.6 中引入多源功能之前,Argo CD 仅限于管理来自单个 Git 或 Helm 存储库的应用程序。用户必须将每个应用程序作为 Argo CD 中的单个实体进行管理,即使资源存储在多个存储库中也是如此。借助多源功能,现在可以创建一个 Argo CD 应用程序,指定存储在多个存储库中的资源了。这意味着你可以在不同的存储库中单独管理资源,并将它们组合成一个单一实体进行部署和管理。
注意:该功能仍标记为 Argo CD 的 Beta 功能,多源目前不支持用户界面和命令行界面。
使用多源功能的场景包括:
为基于微服务的应用程序组合来自不同存储库的资源。 跨多个团队或存储库管理共享库或公共资源。 组合来自 Git 存储库不同分支的资源以进行测试或实验。 在单独的 Git 存储库中管理不同环境(例如 dev、staging、production)的资源。 从外部 Git 存储库指定 Helm Values 文件。
在所有这些场景中,多源功能允许你组合来自不同 Git 存储库的资源创建应用程序对象。这有助于团队单独管理资源并在多个应用程序之间共享它们。
多源应用示例
假设你有两个 Git 存储库,每个存储库都包含一个用于不同应用程序组件的 Helm Chart。借助多源功能,可以将这两个 Helm Chat 组合到 Argo CD 中的单个应用程序中。让我们看一个具有多个来源的 Argo CD 应用程序规范 YAML 文件的示例:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
spec:
project: my-project
sources:
- repoURL: https://github.com/my-org/chart-repo-1
targetRevision: HEAD
- repoURL: https://github.com/my-org/chart-repo-2
path: charts/chart-2
destination:
server: https://kubernetes.default.svc
namespace: my-namespace
syncPolicy:
automated:
prune: true
在此示例中,应用程序 my-app
从两个 Git 存储库中提取资源:
https://github.com/my-org/chart-repo-1https://github.com/my-org/chart-repo-2
第一个存储库同步到根目录,而第二个存储库同步到 charts/chart-2
目录。来自这两个存储库的组合资源将部署到 Kubernetes 集群中的 my-namespace
命名空间。通过这种配置,Argo CD 可以将两个 Helm Chart 作为一个应用程序进行管理,从而更容易部署和维护应用程序的组件。多源功能还允许用户将来自不同 Git 存储库的 Values 文件指定到存储在 Helm 存储库或 Git 存储库中的 Helm Chart。让我们看下以下示例:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
spec:
project: my-project
sources:
- repoURL: 'https://prometheus-community.github.io/helm-charts'
chart: prometheus
targetRevision: 15.7.1
helm:
valueFiles:
- $values/charts/prometheus/values.yaml
- repoURL: 'https://git.example.gom/org/value-files.git'
targetRevision: dev
ref: values
destination:
server: https://kubernetes.default.svc
namespace: my-namespace
syncPolicy:
automated:
prune: true
在前面的示例中,Helm 源具有多个源和外部 Values 文件,Prometheus chart 使用存储在存储库 git.example.gom/org/value-files.git
中的 Values 文件。标记 $values
解析为源列表中 ref
键引用的值文件存储库的根,$values
变量只能在 Values 文件路径的开头指定。当前不支持从外部 Helm 源获取 Values 文件。因此,你可能希望避免为用于引用 Values 文件的源设置 Chart 字段。如果路径字段在源中设置了 ref
,Argo CD 将尝试从该 URL 的 git 存储库生成资源。如果未设置路径字段,Argo CD 将仅使用存储库作为 Values 文件的来源。
结论
Argo CD 2.6 中的多源特性为管理跨单个应用程序的多个存储库的资源提供了控制和灵活性,使管理这些资源变得更加容易。你可以在文档 https://github.com/argoproj/argo-cd/blob/master/docs/user-guide/multiple_sources.md
中找到有关该功能的更多详细信息。
原文链接:https://developers.redhat.com/articles/2023/02/20/multiple-sources-argo-cd-applications




