6
votes

graphique de barre avec requirements.yaml, n'a pas trouvé de graphiques locaux

mes graphiques ont des dépendances elasticsearch et mongdb, et dans mes graphiques, la structure comme celle-ci:

$ helm version
Client: &version.Version{SemVer:"v2.10.0", GitCommit:"9ad53aac42165a5fadc6c87be0dea6b115f93090", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.10.0", GitCommit:"9ad53aac42165a5fadc6c87be0dea6b115f93090", GitTreeState:"clean"}

mais lorsque j'essaye d'installer mon graphique, cela dit:

Erreur: trouvée dans requirements.yaml, mais manquante dans les graphiques / répertoire: elasticsearch, mongodb

et quand j'exécute helm dep ls, le statut est manquant

$ helm dep list
NAME            VERSION REPOSITORY                              STATUS
elasticsearch   6.5.1   file://dependency_charts/elasticsearch  missing
mongodb         4.0.3   file://dependency_charts/mongodb        missing

la version est appVersion, et j'ai également changé la version en version graphique, cela ne fonctionne pas.

ceci est le document officiel: https://github.com/helm/helm/blob/master/docs/helm /helm_dependency.md https://docs.helm.sh/chart_best_practices/#repository-urls p>

ceci est la version de helm

├── [-rw-rw-r--]  Chart.yaml
├── [drwxrwxr-x]  dependency_charts
│   ├── [drwxrwxr-x]  elasticsearch
│   └── [drwxrwxr-x]  mongodb
├── [-rw-rw-r--]  deploy.sh
├── [-rw-rw-r--]  requirements.yaml
├── [-rw-rw-r--]  values.yaml
├── [drwxrwxr-x]  templates
│   ├── [-rw-rw-r--]  proj-deploy.yaml
│   └── [-rw-rw-r--]  proj-svc.yaml

Et je peux mettre ces graphiques dans un dossier charts , mais si je fais cela, helm installez mongodb et elasticsearch dans les mêmes graphiques, ce n'est pas prévu, ce à quoi je m'attends est sous le même espace de noms a trois graphiques: myproj, elasticsearch, mongodb.

Quelqu'un a une idée de ce que je fais de mal? Merci.


4 commentaires

utilisez requirements.yaml et pour elasticsearch et mongodb, ils existent déjà sous forme de graphiques


@ c4f4t0r, merci votre réponse, actuellement, je ne veux pas extraire de graphiques d'un environnement extérieur, je veux utiliser des graphiques locaux. Avez-vous des idées à ce sujet?


désolé pour le lien externe docs.helm.sh/developing_charts


@ c4f4t0r, merci, j'ai regardé cette page, et le document officiel peut également être trouvé ici docs.helm.sh/chart_best_practices/#repository-urls , donc j'essaye de trouver ce qui ne va pas dans mon opération


4 Réponses :


1
votes

... ce que j'attends sous le même espace de noms a trois graphiques: myproj, elasticsearch, mongodb.

Vous devez exécuter helm install trois fois pour obtenir cet effet.


Le mécanisme requirements.yaml oblige Helm à installer plusieurs sous-graphiques dans une seule version de Helm. helm list afficherait simplement myproj , mais en interne, il aurait également les ressources Kubernetes pour les autres composants. Si vous kubectl get service , vous verrez des objets Service comme insolite-animal-myproj et insolite-animal-mongodb , gérés par le même Libération de la barre. Si vous barre un animal inhabituel , les trois composants seront supprimés ensemble.

Si c'est le comportement que vous souhaitez, alors le message d'erreur que vous avez reçu signifie ce qu'il dit: les graphiques locaux doivent être dans un sous-répertoire nommé exactement charts . L'exécution de helm dep up ou helm dep build les copiera ici.


1 commentaires

Merci d'explication, j'ai compris que l'installation de la barre ne peut pas installer plusieurs graphiques dans le même espace de noms. Et comme vous l'avez dit, après avoir installé myproj, le nom du service et le nom du pod ont le préfixe inhabituel-animal- . Et vous avez mentionné que les graphiques locaux doivent se trouver dans un sous-répertoire nommé exactement charts , mais pourquoi le document prend repository: "file: //../dependency_chart/nginx" comme exemple , est-ce une faute de frappe? Et après avoir modifié requirements.yaml en repository: "file: //./charts/elasticsearch" , les services de barre affichent l'état décompressé , n'est-ce pas?



11
votes

Vous devez exécuter helm dep update . Cela placera les sous-graphiques dans le dossier ./charts et créera le fichier ./requirements.lock. Ensuite, vous pouvez installer.


0 commentaires

5
votes
helm dep update
only works when the repo list is empty. Check helm repo list ,  if this return something then local dependencies will not resolve. Try removing the repos using command helm repo remove REPO_NAME

0 commentaires

0
votes
helm template <path_to_chart.yaml> 

0 commentaires