Затронутая версия шлема: v2.4.1
helm [install | fetch] <chart repo>/<chart>
завершается ошибкой, если последняя версия <chart>
в <chart repo>
имеет «предварительную» версию, то есть содержит дополнительные значения помимо, скажем, v0.1.0
, например v0.1.0-alpha.1
или v0.1.0-dev-sha.abc1234
.
Работа в v2.3.1
:
$ helm version
Client: &version.Version{SemVer:"v2.3.1", GitCommit:"32562a3040bb5ca690339b9840b6f60f8ce25da4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.3.1", GitCommit:"32562a3040bb5ca690339b9840b6f60f8ce25da4", GitTreeState:"clean"}
$ helm search -r workflow-dev
NAME VERSION DESCRIPTION
workflow-dev/workflow v2.13.1-dev-20170504190907-sha.3d6bbf9 Deis Workflow
$ helm fetch workflow-dev/workflow
$ ls
workflow-v2.13.1-dev-20170504190907-sha.3d6bbf9.tgz
Не работает в v2.4.1
:
$ helm version
Client: &version.Version{SemVer:"v2.4.1", GitCommit:"46d9ea82e2c925186e1fc620a8320ce1314cbb02", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.4.1", GitCommit:"46d9ea82e2c925186e1fc620a8320ce1314cbb02", GitTreeState:"clean"}
$ helm search -r workflow-dev
NAME VERSION DESCRIPTION
workflow-dev/workflow v2.13.1-dev-20170504190907-sha.3d6bbf9 Deis Workflow
...
$ helm fetch workflow-dev/workflow
Error: chart "workflow" not found in workflow-dev index. (try 'helm repo update'). No chart version found for workflow-
Однако, если последняя диаграмма в репозитории имеет «официальную» версию выпуска, они будут успешно получены в v2.4.1
:
$ helm search -r jenkins
NAME VERSION DESCRIPTION
stable/jenkins 0.6.2 Open source continuous integration server. It s..
$ helm fetch stable/jenkins
$ ls
jenkins-0.6.2.tgz
https://github.com/kubernetes/charts/issues/999 был подан специально для графика stable/traefik
.
Действительно, как мы видим, эта диаграмма содержит немного дополнительной информации о строке версии (полная версия: 1.2.1-a
, что подтверждает утверждение этой проблемы о том, что добавленная информация (обычно считающаяся «предварительной») нарушение установки/выборки:
$ helm search -r traefik
NAME VERSION DESCRIPTION
stable/traefik 1.2.1-a A Traefik based Kubernetes ingress controller w...
$ helm fetch stable/traefik
Error: chart "traefik" not found in stable index. (try 'helm repo update'). No chart version found for traefik-
Однако важно отметить (и, возможно, это полезно при отладке/определении проблемы), если явным образом указана «предварительная» версия диаграммы, ее можно установить/выгрузить без проблем. Продолжая сверху:
$ helm fetch stable/traefik --version 1.2.1-a
$ ls
traefik-1.2.1-a.tgz
Причина в том, что версия Traefik, по словам SemVer, является предварительной версией. В Helm 2.4.1 мы решили не устанавливать предварительные версии, если явно не указана версия. #2279
Обходной путь заключается в запуске чего-то, что позволяет предварительным выпускам удовлетворять критериям диапазона: helm fetch stable/traefik --debug --version=">1.0.0-a"
@vdice предложил мне добавить флаг, позволяющий нестабильным пакетам удовлетворять запрос. Мы думаем, может быть, --devel
@vdice предложил мне добавить флаг, позволяющий нестабильным пакетам удовлетворять запрос.
На самом деле, один из наших вариантов использования — посвятить все репозитории чартов _только_ версионным чартам для «нестабильных/разработанных/предварительных версий». Преимущество этого заключается в том, что он не «переполняет» наши «официальные» репозитории диаграмм, которые содержат только официальные версии.
Было бы удобно сохранить возможность извлекать последнюю диаграмму из указанных репозиториев разработчиков без указания какой-либо версии или диапазона версий (как это можно было сделать в helm до 2.4.x): helm install dev-chart-repo/dev-chart
вместо необходимость каким-то образом отслеживать последнюю версию диаграммы разработки и указывать правильный диапазон через --version
.
Если для выполнения вышеупомянутого требуется флаг --devel
, это будет нормально.
Хотя я могу (в некоторой степени) понять причину отказа от установки «предварительных» диаграмм, я не вижу, как это можно использовать с fetch
.
Кроме того, текущее сообщение об ошибке вводит в заблуждение и приводит к потере времени.
Самый полезный комментарий
Причина в том, что версия Traefik, по словам SemVer, является предварительной версией. В Helm 2.4.1 мы решили не устанавливать предварительные версии, если явно не указана версия. #2279
Обходной путь заключается в запуске чего-то, что позволяет предварительным выпускам удовлетворять критериям диапазона:
helm fetch stable/traefik --debug --version=">1.0.0-a"
@vdice предложил мне добавить флаг, позволяющий нестабильным пакетам удовлетворять запрос. Мы думаем, может быть,
--devel