Featured image of post Ma première contribution open source

Ma première contribution open source

Une commande helm template en erreur à cause de ses propres valeurs par défaut : ma première issue puis PR sur Apache Superset.

Contexte

En configurant un PodDisruptionBudget sur le chart Helm d’Apache Superset, helm template plantait dès que je passais podDisruptionBudget.enabled: true. Pas seulement la ressource PDB : tout le rendu du chart s’arrêtait.

Ce que j’ai appris

Le chart livrait à la fois minAvailable: 1 et maxUnavailable: 1 par défaut, alors que ses propres templates fail le rendu dès que les deux sont renseignés en même temps.

Détails

Reproduction sur le chart publié :

helm repo add superset https://apache.github.io/superset
helm repo update

cat > pdb-repro.yaml <<'YAML'
supersetNode:
  podDisruptionBudget:
    enabled: true
YAML

helm template superset superset/superset --version 0.22.4 -f pdb-repro.yaml
# Error: execution error at (superset/templates/pdb.yaml:22:4):
#   Only one of minAvailable or maxUnavailable should be set

Le garde-fou incriminé, dans templates/pdb.yaml :

{{- if and .minAvailable .maxUnavailable }}
  {{- fail "Only one of minAvailable or maxUnavailable should be set" }}
{{- end}}

… alors que values.yaml livrait les deux champs à 1 pour les six blocs concernés (supersetNode, supersetWorker, supersetCeleryBeat, supersetCeleryFlower, supersetWebsockets, supersetMcp).

J’ai ouvert une issue documentant le problème et la reproduction, puis une pull request qui met maxUnavailable à null par défaut dans les six blocs (le chart rend alors un PDB avec son propre minAvailable: 1, sans y toucher pour qui utilise déjà maxUnavailable explicitement), garde le garde-fou pour le cas où les deux sont vraiment renseignés, améliore son message d’erreur pour qu’il nomme le champ et le composant concernés, et ajoute une suite de tests helm-unittest sur les six templates PDB.

Pourquoi c’est utile

Au-delà du fix lui-même, ça m’a fait passer par tout le cycle d’une contribution à un projet Apache : isoler un bug reproductible indépendamment de mon propre usage, l’écrire pour des mainteneurs qui ne connaissent pas mon contexte, proposer un correctif non cassant plutôt que juste signaler le problème, et l’accompagner de tests qui prouvent la régression.

Sources

Généré avec Hugo
Thème Stack conçu par Jimmy