• Русский
  • Helm

    Введение

    Helm — это инструмент управления пакетами для Kubernetes, который позволяет пользователям определять, устанавливать и обновлять сложные Kubernetes-приложения. Helm Chart — это шаблонизированный пакет конфигурации, содержащий определения ресурсов Kubernetes (файлы YAML).

    Основные концепции Helm

    • Chart: Helm Chart — это шаблонизированный пакет конфигурации, содержащий определения ресурсов Kubernetes (файлы YAML).
    • Release: Helm Release — это экземпляр развернутого Helm Chart, представляющий конкретную конфигурацию ресурсов Kubernetes.
    • Values: Helm Values — это параметризованные конфигурации для Helm Chart, позволяющие пользователям настраивать определения ресурсов Kubernetes.

    Интеграция Argo CD с Helm улучшает практики GitOps, обеспечивая декларативную непрерывную доставку через веб-консоль, панель управления Argo CD или CLI. Пример:

    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
      name: sealed-secrets
      namespace: argocd
    spec:
      project: default
      source:
        chart: sealed-secrets
        repoURL: https://bitnami-labs.github.io/sealed-secrets
        targetRevision: 1.16.1
        helm:
          releaseName: sealed-secrets
      destination:
        server: "https://kubernetes.default.svc"
        namespace: kubeseal

    Пример OCI Helm Chart:

    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
      name: nginx
    spec:
      project: default
      source:
        chart: nginx
        repoURL: bitnamicharts  # note: the oci:// syntax is not included.
        targetRevision: 15.9.0
      destination:
        name: "in-cluster"
        namespace: nginx
    INFO

    ** Жизненный цикл Application управляется Argo CD, а не Helm. ** При наличии нескольких источников значений порядок приоритета следующий: parameters > valuesObject > values > valueFiles > значения из helm репозитория values.yaml.

    Преимущества

    • Шаблонизация: Helm использует движок шаблонов Go (gotpl) для динамической генерации файлов ресурсов Kubernetes.

    • Управление пакетами: Helm упаковывает приложения в Charts (включая шаблоны, значения по умолчанию и зависимости), упрощая распространение и контроль версий.

    • Управление зависимостями: Поддерживает зависимости между Charts.

    • Управление жизненным циклом: Предоставляет команды для установки, обновления и отката, обеспечивая полный контроль жизненного цикла.

    Сценарии использования

    • Развертывание сложных приложений: Идеально подходит для сценариев, требующих динамической генерации конфигураций (например, переменные окружения или ввод пользователя).

    • Развертывания в нескольких средах: Поддерживает конфигурации, специфичные для среды, через файлы values.yaml.

    • Распространение приложений: Позволяет упаковывать Charts для распространения в Helm репозитории или OCI регистры.

    References

    For more detailed information, please refer to: Helm