Ma première contribution mergée dans Falco
Corriger un bug de fiabilité dans le plugin d'audit OVH, et ce que j'ai appris en faisant passer un patch devant les mainteneurs CNCF.
Falco peut lire les événements d’audit Kubernetes via des plugins. Nous sommes chez OVH, donc nous utilisons le plugin k8saudit-ovh, qui reçoit les logs d’audit du Kubernetes managé d’OVHcloud via une WebSocket. C’est le genre de composant sur lequel on s’appuie et qu’on oublie, jusqu’au jour où il arrête silencieusement de livrer.
Le problème
Une chaîne de détection ne vaut que par ses entrées. Si la connexion tombe et que le plugin ne revient pas, Falco continue de tourner et a l’air en bonne santé tout en ne recevant rien. C’est pire qu’un crash, car rien ne vous alerte.
Le correctif
Trois changements ciblés dans le plugin :
- une vraie boucle de reconnexion pour la WebSocket,
- un retry quand une tentative de connexion échoue,
- une meilleure gestion des erreurs JSON, pour qu’un message mal formé ne fasse pas tomber le flux.
Relu par les mainteneurs de Falco, mergé dans falcosecurity/plugins (pull request #1270), et publié en v0.4.1.
Ce qui a aidé
- Un patch petit et sur un seul sujet. Les relecteurs peuvent dire oui vite.
- Expliquer la panne, pas seulement le diff. La description doit permettre à quelqu’un qui n’a jamais vu votre cluster de comprendre l’enjeu.
- Suivre les règles du projet. Les projets Falco attendent des commits signés (DCO), donc
git commit -s. - Considérer la relecture comme une partie du travail. Les retours ont amélioré le changement.
Pourquoi ça valait le coup
Au-delà de la satisfaction, il y a une raison pratique : je ne porte plus de patch privé. Tous les utilisateurs de Falco sur OVH ont le correctif, et je peux mettre à jour normalement.
Si vous faites tourner du logiciel open source en production et avez déjà contourné un bug, pensez à envoyer le correctif en amont.