Я использую Argocd с диаграммами руля. У меня две среды: уат, продукт.
Насколько я понимаю, правильный подход для helm - это иметь базовую папку с общими + для каждой папки env.
Итак, у меня есть одна ветка с 3 папками:
base # for commons: Chart.yaml, templates, etc.
uat # for uat values.yaml
prod # for prod values.yaml
В моей диаграмме руля у меня есть следующий Диаграмма.yaml (хранится в базовой папке):
apiVersion: v1
appVersion: 1.0.11
name: my-nice-app
version: 1.0.11
С каждым выпуском я увеличиваю версия приложения и версия (версия используется как версия тега изображения в диаграммах).
Я использую декларативный подход для развертывания диаграммы helm (это ресурс приложения uat, аналогичный для prod):
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-nice-app
namespace: argocd
spec:
project: default
source:
repoURL: some-url
targetRevision: HEAD
path: base
helm:
version: v3
valueFiles:
- uat/values.yaml
destination:
server: https://kubernetes.default.svc
namespace: uat
syncPolicy:
syncOptions:
- CreateNamespace=false
automated:
selfHeal: true
prune: true
Вопрос:
Я обновляю файл значений uat.
Я обновляю Chart.yaml новой версией.
Я хотел бы развернуть только uat (но когда я обновляю базовый продукт, он также срабатывает).
Где и как хранить Chart.yaml? Должен ли я изменить ресурс приложения Argocd? Или единственный вариант - дублировать диаграммы для каждой среды?
Я также предпочитаю не хранить информацию о версии в ресурсе приложения Argocd (чтобы не менять ее каждый раз).
Было бы неплохо не применять kustomized.io.





Вы должны разделить его на 2 диаграммы (base chart и value chart)base chart — это chart dependency диаграмма значений, например, если вы обновите базовую диаграмму, value chart не будет затронута, если вы не обновите зависимость диаграммы.
Файл Chart.yaml из value-chart будет выглядеть так.
apiVersion: v2
name: my-nice-app-prod
description: Chart for production
type: application
version: 0.0.1
appVersion: "1.0.0"
dependencies:
- name: my-nice-app-chart
version: 0.1.9
Ссылки на ссылки:
https://helm.sh/docs/helm/helm_dependency/