Декларативный подход к развертыванию диаграммы Helm от Argocd в нескольких средах

Я использую 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.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
29
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны разделить его на 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/

Другие вопросы по теме