ApplicationSet

ApplicationSet 介绍

ApplicationSet 控制器是一个 Kubernetes 控制器,它扩展了对 ApplicationSet 自定义资源定义 (CRD) 的支持。该控制器/CRD 实现了自动化和更灵活的管理 Argo CD 应用程序并且可以在大量集群和单一代码库中使用,同时还使得在多租户 Kubernetes 集群上实现自助服务成为可能。

ApplicationSet 适用场景

  • 部署多个相似应用程序:当您需要部署多个配置相似的应用程序时,可以使用 ApplicationSet 来减少重复配置。例如,您可以使用 ApplicationSet 部署多个微服务,这些微服务使用相同的模板,但服务名称和端口号不同。
  • 多集群部署:当您需要在多个 Kubernetes 集群中部署相同的应用程序时,可以使用 ApplicationSet 简化配置。例如,您可以通过 ApplicationSet 定义一个应用程序并在多个集群中部署,每个集群使用不同的参数。
  • 动态生成应用程序:当您需要根据某些条件动态生成应用程序时,可以利用 ApplicationSet。例如,您可以根据 Git 仓库中的分支或标签动态生成不同的应用程序实例。

ApplicationSet 示例

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: guestbook
spec:
  goTemplate: true
  goTemplateOptions: ["missingkey=error"]
  generators:
  - list:
      elements:
      - cluster: engineering-dev
        url: https://1.2.3.4
      - cluster: engineering-prod
        url: https://2.4.6.8
      - cluster: finance-preprod
        url: https://9.8.7.6
  template:
    metadata:
      name: '{{.cluster}}-guestbook'
    spec:
      project: my-project
      source:
        repoURL: https://github.com/infra-team/cluster-deployments.git
        targetRevision: HEAD
        path: guestbook/{{.cluster}}
      destination:
        server: '{{.url}}'
        namespace: guestbook

参考资料