La version 0.1 de kafkalet, un client graphique de bureau pour interagir avec Apache Kafka, a été publiée. L'application est fournie sous la forme d'un fichier binaire autonome d'environ 15 Mo, sans nécessiter d'installation de JVM, Docker ou de composants serveur. Le code du projet est écrit en Go et TypeScript et est distribué sous la licence MIT. Des builds ont été préparés pour macOS (Intel et Apple Silicon), Windows et Linux.
Contrairement aux outils web existants tels que Kafka UI et AKHQ, qui nécessitent le déploiement d'un processus serveur dans Docker, kafkalet fonctionne comme une application de bureau classique — à l'instar de DBeaver ou DataGrip pour les bases de données. Le seul client Kafka de bureau jusqu'à présent était Offset Explorer (anciennement Kafka Tool), écrit en Java et n'ayant pas été mis à jour depuis longtemps. L'application kafkalet est construite sur le framework Wails v2, qui combine un backend Go avec une interface web en React 18, TypeScript et shadcn/ui en un seul fichier binaire natif. La bibliothèque franz-go, écrite en pur Go, est utilisée pour interagir avec Kafka, sans dépendance à librdkafka ni CGO.
Fonctionnalités principales :
- Un système de profils pour la gestion de plusieurs environnements (production, staging, dev). Chaque broker dans le profil peut avoir plusieurs comptes nommés avec la possibilité de basculer rapidement. Les mots de passe et jetons sont stockés uniquement dans le système de stockage secret de l'OS (macOS Keychain, Windows Credential Manager, libsecret sur Linux) et ne sont pas enregistrés dans les fichiers de configuration.
- Le mode Observer — lecture des messages d'un topic sans connexion à un groupe de consommateurs, sans validation des décalages et sans effets secondaires sur le cluster. Un mode Consumer distinct permet de se connecter à un groupe et de valider les décalages manuellement.
- Navigation temporelle (seek to timestamp) — accès aux messages à partir d'une date et d'une heure spécifiées sans devoir calculer les décalages manuellement. Prise en charge des méthodes d'authentification : SASL PLAIN, SCRAM-SHA-256, SCRAM-SHA-512, OAUTHBEARER (jeton statique et flux des informations d'identification du client), TLS avec vérification de certificat de serveurs, mTLS (authentification mutuelle par certificats).
- Visualisation en temps réel des messages avec filtrage regex par clés et valeurs. La surveillance simultanée de plusieurs topics dans des onglets distincts est prise en charge. La virtualisation de la liste permet d'afficher plus de 50 000 messages sans perte de performance.
- Gestion des sujets : création, suppression, modification des paramètres de configuration, consultation des sections, leaders et ensemble de répliques synchronisées (ISR).
- Gestion des groupes de consommateurs : consultation du retard (lag) par section, réinitialisation des décalages à earliest, latest ou une date spécifique, consultation des membres du groupe (client ID, hôte, sujets assignés), suppression des groupes.
- Envoi de messages en spécifiant la clé, la valeur, les en-têtes et la section cible.
- Organisation des sujets : épinglage des sujets fréquemment utilisés, regroupement dans des dossiers nommés, recherche avec support des expressions régulières et filtrage par nombre minimum de sections.
- Exportation du tampon de messages au format JSON ou CSV.
- Intégration avec Confluent Schema Registry pour le décodage automatique des messages au format Avro.
- Système de plugins JavaScript pour le décodage personnalisé des messages (Protobuf, MessagePack et d'autres formats).
- Importation et exportation des paramètres au format JSON, y compris les profils, groupes de sujets et sujets épinglés.
Source : opennet.ru
