Как можно изменить метку app.kubernetes.io/managed-by для чартов, разворачиваемых с помощью ArgoCD?

Я использую ArgoCD для установки Helm чартов в K8s кластере и заметил, что при деплое чартов Argo создает манифесты, используя команду helm template, но при этом не формирует объекты Helm в кластере. Это приводит к тому, что я не могу взаимодействовать с ними через утилиту helm. 

При этом на ресурсах, которые деплоит Argo, появляются стандартные метки, указывающие на то, что они управляются Helm, например:

<pre><code>app.kubernetes.io/managed-by=Helm
helm.sh/chart=my-app-name</code></pre>

Я хотел бы узнать, возможно ли при использовании ArgoCD избавиться от второй метки и установить значение первой метки на "argocd". Это важно для совместимости с программным обеспечением для бэкапа (CommVault), так как текущее использование меток мешает ему корректно обрабатывать ресурсы, задеплоенные через Helm. Обычные чарты при этом бэкапятся без проблем.

Я искал ответ на этот вопрос в документации Argo, но не нашел. Также наткнулся на рекомендации генерировать манифесты с помощью helm template и использовать kustomize, а также обнаружил обсуждение данной функции на GitHub, которое долгое время находится в статусе Open ( <a href="https://github.com/argoproj/argo-cd/issues/14638" rel="nofollow">https://github.com/argoproj/argo-cd/issues/14638</a> ).
  • 17 января 2025 г. 8:04
Ответы на вопрос 3
Изменение меток, добавляемых ArgoCD при использовании Helm чартов, не является стандартной функцией, но вы правы в том, что возникают ситуации, когда вам может потребоваться настройка меток для обеспечения совместимости с другими инструментами.

Вот несколько способов, с помощью которых вы можете решить эту задачу:

1. **Использовать Kustomize для изменения меток**: ArgoCD поддерживает Kustomize. Вы можете создать Kustomization файл, который будет изменять метки на твоих ресурсах. Если вы создаете манифесты для ваших Helm чартов с помощью Kustomize, вы можете использовать `commonLabels` или непосредственно изменять метки для конкретных ресурсов.

   Пример `kustomization.yaml`:
   ```yaml
   resources:
     - ../path-to-your-helm-chart

   commonLabels:
     app.kubernetes.io/managed-by: argocd
   ```

   После этого в ArgoCD укажите этот Kustomization файл как источник. Это позволит вам заменить метку при деплое.

2. **Использовать измененный Helm Chart**: Если у вас есть доступ к исходным значениями вашего Helm chart, вы можете изменить шаблоны, чтобы убрать метки в манифестах. Например, вы можете добавить условие для метки `app.kubernetes.io/managed-by` и установить её на "argocd", если helm не должен добавлять стандартные метки.

   Например, в `templates/deployment.yaml`:
   ```yaml
   metadata:
     labels:
       app.kubernetes.io/managed-by: {{ default "argocd" .Values.managedBy }}
   ```

   В этом примере, если вы не передаете значение `.Values.managedBy`, будет использоваться "argocd".

3. **Использовать init контейнер для изменения меток**: Вы можете использовать init-контейнер или другой подход для изменения меток на уже созданных ресурсах после их создания. Это менее желательный подход, но возможен в случае необходимости.

4. **Следить за проблемами в GitHub**: Как вы заметили, на GitHub есть открытое обсуждение по этой теме. Подписавшись на его обновления, вы сможете получить информацию о том, когда может появиться официальная поддержка этой функциональности.

К сожалению, ArgoCD на данный момент не поддерживает изменение меток Helm по умолчанию при использовании `helm template`. Выбор наилучшего решения зависит от ваших специфических требований и окружения.
Проблема с CommVault решилась путем добаления дополнительного параметра, который управляет бэкапом чартов. Ссылка на гайд: https://documentation.commvault.com/2024e/essentia...
Проблема с CommVault решилась путем добаления дополнительного параметра, который управляет бэкапом чартов. Ссылка на гайд: https://documentation.commvault.com/2024e/essentia...
Похожие вопросы