• Русский
  • 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

    Ссылки