Aller au contenu

Quiz : Helm

100 Comprendre ⏱ 30 min helmkubernetes

Ce quiz valide le niveau 100 (Comprendre) des notions du cours Helm. Visez au moins 12 bonnes réponses sur 15 ; chaque réponse renvoie à la leçon à relire. Le niveau 200 se valide avec le lab.

1. Où Helm stocke-t-il l'état d'une release, et qu'est-ce que cela implique ?

Réponse

Dans des Secrets du namespace de la release (sh.helm.release.v1.<release>.v<révision>), une par révision. Helm n'a pas de serveur : tout passe par vos droits Kubernetes, et ces Secrets contiennent les valeurs utilisées, donc parfois des données sensibles. Leçons 1 et 3.

2. Helm remet-il en place un objet modifié à la main entre deux commandes ?

Réponse

Non : Helm ne réconcilie pas. Il agit quand on lance une commande, puis plus rien ne surveille le cluster. C'est le rôle du GitOps (Argo CD, Flux). Leçon 1.

3. Un fichier de valeurs définit une liste extraEnv de trois éléments, et vous en passez un autre avec une liste d'un élément. Combien d'éléments au rendu ?

Réponse

Un seul : les maps se fusionnent, les listes se remplacent. C'est une source fréquente de surprises quand on surcharge un chart tiers. Leçon 2.

4. Pourquoi préférer un petit fichier de valeurs à une série de --set ?

Réponse

--set devine les types (une étiquette 1.10 devient un nombre), découpe sur les virgules et les points, et ne laisse aucune trace relisible. Un fichier de valeurs versionné se relit, se rejoue et se compare. Leçon 2.

5. Que fait helm rollback sur l'historique des révisions ?

Réponse

Il crée une nouvelle révision avec le contenu d'une ancienne : l'historique avance, il ne recule pas. Une migration de base faite par un hook n'est pas défaite. Leçons 3 et 8.

6. Vous faites helm upgrade avec un seul --set image.tag=1.3.0, sans fichier de valeurs. Qu'arrive-t-il aux autres valeurs que vous aviez passées à l'installation ?

Réponse

Elles sont oubliées : sans option, un upgrade qui reçoit au moins une valeur repart des défauts du chart. On rejoue toujours la mise à jour avec le même fichier de valeurs ; --reuse-values et --reset-then-reuse-values existent, mais ont leurs propres pièges. Leçon 3.

7. Quelle différence entre version et appVersion dans Chart.yaml ?

Réponse

version est la version du chart (versionnement sémantique, identifie une publication, immuable une fois publiée) ; appVersion est la version de l'application empaquetée. Un changement de modèle change la première sans toucher à la seconde, et inversement. Leçons 4 et 9.

8. Pourquoi les étiquettes de sélection d'un chart doivent-elles être distinctes des étiquettes communes ?

Réponse

Le sélecteur d'un Deployment est immuable : s'il contenait la version de l'application ou du chart, chaque mise à jour serait refusée. Les étiquettes de sélection sont stables (nom, instance) ; les étiquettes communes portent en plus la version et le chart. Leçons 4 et 6.

9. Pourquoi faut-il presque toujours quote une valeur chaîne dans un modèle ?

Réponse

Le modèle produit du texte que Helm relit ensuite comme du YAML : une valeur comme yes, 1.10 ou 08 serait interprétée comme un booléen ou un nombre. quote garantit une chaîne. Leçon 5.

10. Pourquoi lookup est-il à éviter dans un chart déployé par Argo CD ?

Réponse

lookup lit le cluster pendant le rendu, mais renvoie une map vide avec helm template, que Argo CD utilise. Le chart se comporterait différemment selon l'outil. Leçons 5 et 10.

11. Sans values.schema.json, que se passe-t-il si un utilisateur écrit replicas: 3 au lieu de replicaCount: 3 ?

Réponse

Rien : la clé inconnue est ignorée en silence, et le chart utilise la valeur par défaut. Un schéma avec additionalProperties: false rejette la clé (en prévoyant global), et valide types et bornes avant le rendu. Leçon 6.

12. Pourquoi une base de données n'a-t-elle pas sa place en sous-chart de l'application ?

Réponse

Un sous-chart partage le cycle de vie de son parent : désinstaller ou recréer l'application toucherait la base. Une base, un opérateur ou tout ce qui installe des CRD vit à part (chez Lyneko, PostgreSQL est un service managé). Leçon 7.

13. Un Job de migration en hook pre-upgrade échoue. Que devient la release, et la base ?

Réponse

La mise à jour échoue et la release est marquée en échec ; avec --atomic (--rollback-on-failure sous Helm 4), Helm revient en arrière sur les objets. Mais ce que la migration a déjà fait dans la base n'est pas défait : d'où des migrations compatibles avec l'ancienne et la nouvelle version de l'application. Leçon 8.

14. Pourquoi signer le fichier .tgz une seule fois, au lieu de réempaqueter et resigner à chaque étape ?

Réponse

helm package n'est pas reproductible : deux empaquetages du même chart donnent deux empreintes différentes. On empaquette une fois, et c'est ce fichier, identifié par son empreinte, que l'on signe, pousse et référence jusqu'en production. Leçon 9.

15. Un chart est déployé par Argo CD. Pourquoi helm list ne montre-t-il rien, et comment revient-on en arrière ?

Réponse

Argo CD rend le chart (helm template) et applique lui-même les manifestes : aucune release Helm n'est créée. Le retour arrière est un revert Git de la version du chart ou des valeurs, que Argo CD synchronise. Leçon 10.

Plan du cours