В одной из наших диаграмм руля у нас есть файл значений для каждой среды, например.
app-helm-chart:
dev-values.yaml
test-values.yaml
Chart.yaml
templates
deployment.yaml
service.yaml
ingress.yaml
Readme.md
Мы упаковали диаграмму helm с помощью пакета helm, а затем пытаемся установить ее из нашего репозитория helm.
Есть ли способ указать использовать файл dev-values из пакета как часть команды установки?
Попытка упаковать и версионировать значения и шаблоны в одном месте, если это возможно.
Спасибо
Да.
helm install -f dev-values.yaml ./mychart
https://helm.sh/docs/chart_template_guide/values_files/
Извините, я думаю, что недостаточно объяснил себя, мы упаковали содержимое, показанное выше, и опубликовали его в репозитории helm, затем мы добавили репозиторий helm, а затем пытаемся установить диаграмму из этого репозитория. Таким образом, файл значений не хранится локально, он хранится в пакете helm, который размещается в репозитории helm.
Ах, верно. Я бы не стал упаковывать значения конкретных сред в диаграмму. Пакет диаграмм не должен изменяться при изменении конфигурации.
На этот вопрос есть два ответа.
Во-первых, используя ваш текущий пакет и настройку репо, вам нужно будет загрузить и извлечь пакет, а затем вызвать файл значений из папки диаграммы.
helm repo add test-repo http://url/to/your repo
helm repo update
helm fetch test-repo/my-chart-name untar [--version x.x.x] #This creates a directory called "my-chart-name" in the local directory
helm upgrade --install --atomic --wait ./my-chart-name/ -f ./mychart-name/dev-values.yaml
Второй, лучший способ, на который уже намекнул Гаэль Дж., — это не включать в диаграмму значения, специфичные для среды, потому что если вы это сделаете, каждый раз, когда вы изменяете значения или добавляете новые значения, вам нужно будет переупаковывать график и обновить репозиторий графиков.
Лучший способ, и способ, которым мы это делаем, - это иметь отдельную папку, что-то вроде этого
.
├── charts
│ └── my-chart
│ ├── Chart.lock
│ ├── charts
│ │ └── ingress-nginx-3.35.0.tgz
│ ├── Chart.yaml
│ ├── README.md
│ └── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── ingress.yaml
│ ├── NOTES.txt
│ ├── serviceaccount.yaml
│ └── service.yaml
├── profiles
│ ├── values-preprod.yaml
│ └── values-prod.yaml
Таким образом, я могу свободно обновлять профили yaml, а затем использовать локальную (или удаленную) диаграмму — и содержимое или версия диаграммы не должны меняться всякий раз, когда я обновляю значения.
helm upgrade --install --atomic --wait ./charts/my-chart -f profiles/values-preprod.yaml
или
helm upgrade --install --atomic --wait test-repo/my-chart -f profiles/values-preprod.yaml