Versión de timón afectada: v2.4.1
helm [install | fetch] <chart repo>/<chart>
falla si el último <chart>
en <chart repo>
tiene una versión de "prelanzamiento", es decir, contiene valores adicionales además de v0.1.0
, como v0.1.0-alpha.1
o v0.1.0-dev-sha.abc1234
.
Trabajando en 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
No funciona en 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-
Sin embargo, si el último gráfico en el repositorio tiene una versión de lanzamiento 'oficial', se obtienen con éxito en 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 se archivó específicamente para el gráfico stable/traefik
.
De hecho, como vemos, este gráfico tiene un poco de información adicional sobre la cadena de versión (versión completa: 1.2.1-a
, por lo tanto, corrobora la afirmación de este problema de que la información agregada (normalmente considerada "prelanzamiento") es interrumpir la instalación/recuperación:
$ 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-
Sin embargo, es importante tener en cuenta (y tal vez sea útil para depurar/señalar el problema), si la versión del gráfico "prelanzamiento" se especifica explícitamente, se puede instalar/recuperar sin problemas. Continuando desde arriba:
$ helm fetch stable/traefik --version 1.2.1-a
$ ls
traefik-1.2.1-a.tgz
La razón es que la versión de Traefik es, según SemVer, un prelanzamiento. En Helm 2.4.1, decidimos no instalar versiones preliminares a menos que se proporcione explícitamente una versión. #2279
La solución es ejecutar algo que permita que los lanzamientos preliminares satisfagan los criterios de rango: helm fetch stable/traefik --debug --version=">1.0.0-a"
@vdice me sugirió que tal vez agreguemos una bandera para permitir que los paquetes inestables satisfagan la solicitud. Estamos pensando en tal vez --devel
@vdice me sugirió que tal vez agreguemos una bandera para permitir que los paquetes inestables satisfagan la solicitud.
De hecho, uno de nuestros casos de uso es dedicar repositorios de gráficos completos a _solo_ gráficos versionados 'inestables/dev/prelanzamiento'. Esto tiene la ventaja de no "saturar" nuestros repositorios de gráficos "oficiales" que solo contienen versiones oficiales.
Sería útil mantener la capacidad de extraer el gráfico más reciente de dicho(s) repositorio(s) de desarrollo sin especificar ninguna versión o rango de versión (como podría hacerse en helm pre-2.4.x): helm install dev-chart-repo/dev-chart
, en lugar de tener que realizar un seguimiento de la última versión del gráfico de desarrollo de alguna manera y proporcionar el rango adecuado a través --version
.
Si se necesita una bandera --devel
para hacer lo mencionado anteriormente, estaría bien.
Si bien puedo entender (algo) la razón detrás de negarse a instalar gráficos de "prelanzamiento", no puedo ver cómo eso es de alguna utilidad con fetch
.
Además, el mensaje de error actual es engañoso y provoca una pérdida de tiempo.
Comentario más útil
La razón es que la versión de Traefik es, según SemVer, un prelanzamiento. En Helm 2.4.1, decidimos no instalar versiones preliminares a menos que se proporcione explícitamente una versión. #2279
La solución es ejecutar algo que permita que los lanzamientos preliminares satisfagan los criterios de rango:
helm fetch stable/traefik --debug --version=">1.0.0-a"
@vdice me sugirió que tal vez agreguemos una bandera para permitir que los paquetes inestables satisfagan la solicitud. Estamos pensando en tal vez
--devel