ApplicationSet

Содержание

Введение

Контроллер ApplicationSet — это контроллер Kubernetes, который добавляет поддержку CustomResourceDefinition (CRD) ApplicationSet. Этот контроллер/CRD обеспечивает как автоматизацию, так и большую гибкость в управлении Argo CD Applications на большом количестве кластеров и внутри монорепозиториев, а также позволяет реализовать самообслуживание в многопользовательских 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

Ссылки