Ответ
В Helm version (версия чарта) и appVersion (версия приложения) — это два разных понятия, которые часто путают.
version (Chart Version) — версия самого Helm-чарта (его структуры, шаблонов, зависимостей). Подчиняется SemVer (MAJOR.MINOR.PATCH). Изменяется при:
- MAJOR: обратно несовместимые изменения в чарте
- MINOR: новая функциональность обратно совместимая
- PATCH: обратно совместимые багфиксы
appVersion (Application Version) — версия развертываемого приложения (Docker образа). Указывается для информации, Helm не использует ее для логики.
Пример Chart.yaml:
apiVersion: v2
name: my-application
description: A Helm chart for our microservice
# Chart version - меняется при изменении chart
version: 2.5.1 # ← Chart Version
# Application version - версия Docker образа
appVersion: 1.18.3-alpine # ← App Version
dependencies:
- name: redis
version: 14.0.0
repository: https://charts.bitnami.com/bitnami
Практические сценарии:
- Обновление только приложения:
# Chart.yaml version: 2.5.1 # Не меняем appVersion: 1.18.4-alpine # Меняем на новую версию образа
values.yaml
image: repository: myregistry/app tag: 1.18.4-alpine # Должен совпадать с appVersion
2. **Обновление чарта (добавили ConfigMap):**
```yaml
# Chart.yaml
version: 2.6.0 # MINOR увеличили
appVersion: 1.18.3-alpine # Не меняли
- Работа с Helm CLI:
# Установка с указанием версии чарта helm install my-app ./chart --version 2.5.1
Поиск в репозитории
helm search repo bitnami/nginx
NAME CHART VERSION APP VERSION
bitnami/nginx 13.2.10 1.21.6
Просмотр установленных релизов
helm list
NAME NAMESPACE REVISION STATUS CHART APP VERSION
my-app default 1 deployed my-app-2.5.1 1.18.3-alpine
**Важно:** При публикации в Helm-репозиторий (ChartMuseum, Harbor) индексируется только `version`. `appVersion` — чисто информационное поле. В CI/CD пайплайнах мы обычно автоматически увеличиваем `version` при изменениях в чарте, а `appVersion` берем из тега Docker образа.