Helm — переопределить значения списка с помощью файла переопределения

#kubernetes-helm #templating #go-templates #helmfile

#kubernetes-helm #шаблоны go

Вопрос:

Я хочу переопределить значения между развертываниями prod и dev.

Значения по умолчанию выглядят следующим образом:

 apps:
  myapp:
    replicaCount: 2
    containers:
      - name: foo
        env:
          MODE: "dev"
  

Я могу переопределить это в командной строке с помощью:

 --set apps.myapp.containers[0].env.mode="prod"
  

Однако я хочу сохранить все переопределения в файле и запустить обновление helm, передавая также файл переопределения. Добавление переопределения в файл, подобный:

 apps:
  myapp:
    containers[0]:
      env:
        MODE: "prod"
  

не работает. Как мне переопределить значения внутри списка?

Ответ №1:

Это, мягко говоря, странно.

Это сработало:

 apps:
  myapp:
    containers[1]:
      env:
        MODE: "prod"
  

Таким образом, индекс для containers является 1 переопределенным в файле, однако 0 при выполнении с помощью командной строки:

 --set apps.myapp.containers[0].env.mode="prod"
  

Комментарии:

1. При использовании helm лучше попытаться достичь этого при использовании шаблона в развертывании. yaml и определите эти переопределения в values.yaml

2. Да, они входят в values.yaml. Однако мы хотим переопределить значения в значениях. yaml для разных сред. Мы не хотим дублировать значения. yaml для каждого env, поэтому у нас есть базовые значения. yaml dev.yaml или prod. yaml с переопределениями, которые изменяют только соответствующие поля.