Introduction

Une équipe de Lovable a découvert un bogue dans l'implémentation de WireGuard par Google dans Google Kubernetes Engine (GKE). Le bogue causait des erreurs aléatoires et des échecs de connexion, affectant les utilisateurs de la plateforme.

Contexte Technique

L'équipe de Lovable utilise GKE pour créer plus de 50 sandbox par seconde pendant les heures de pointe. Lorsque les erreurs ont commencé à apparaître, l'équipe a utilisé des agents d'IA pour analyser les logs et identifier le problème. Les agents ont révélé que les pods anetd dans le cluster GKE redémarraient constamment, avec environ 120 redémarrages par pod sur six jours.

La cause du problème était un bug de concurrence dans le code d'intégration de WireGuard dans anetd, qui est la couche de réseau de GKE. Le bug causait des paniques de map-access concurrent, empêchant les nouveaux pods d'obtenir des interfaces réseau.

Analyse et Implications

Le bogue a été identifié comme étant dans l'implémentation de WireGuard par Google, et non dans WireGuard lui-même. Cela signifie que Google devait être impliqué pour résoudre le problème. L'équipe de Lovable a travaillé avec l'équipe de Google pour résoudre le problème, qui a recommandé de désactiver la cryptographie de nœud à nœud transparente pour contourner le bogue.

Cependant, la désactivation de la cryptographie n'a pas résolu complètement le problème, car un autre problème est apparu avec les connexions Valkey. L'équipe a découvert qu'un décalage de MTU (maximum transmission unit) entre les nœuds du cluster causait des échecs de connexion aléatoires.

Perspective

Le problème a mis en évidence l'importance de la validation après les changements d'infrastructure et de la collaboration avec les fournisseurs de services cloud. L'équipe de Lovable a appris à faire confiance à ses instincts lorsqu'il s'agit de résoudre des problèmes complexes et à utiliser les agents d'IA pour analyser les logs et identifier les problèmes.

Google a depuis corrigé le bogue de concurrence de WireGuard, ce qui bénéficiera à tous les utilisateurs de GKE. L'expérience de Lovable souligne l'importance de la résolution de problèmes dans les systèmes distribués et la nécessité de validation après les changements d'infrastructure.