Maison > Article > développement back-end > Présentation de Kontroler : un moteur de planification Kubernetes pour les DAG
Kontroler est un moteur de planification Kubernetes open source conçu pour simplifier la gestion des graphiques acycliques dirigés (DAG). Avec Kontroler, vous pouvez définir des flux de travail en YAML, exécuter des tâches sous forme de tâches conteneurisées et même les visualiser via une interface utilisateur Web en option. Que vous ayez besoin d'exécuter des flux de travail selon un calendrier ou de répondre à des événements en temps réel, Kontroler propose une solution flexible et native de Kubernetes.
Cela dit, je dois préciser que Kontroler est actuellement dans son état alpha. Il est idéal pour l’expérimentation et le prototypage, mais n’est peut-être pas encore prêt pour une utilisation en production. En tant que projet parallèle, Kontroler n'est pas accompagné de support, alors utilisez-le en production à vos propres risques !
Si vous souhaitez consulter le référentiel GitHub, le voici : https://github.com/GreedyKomodoDragon/Kontroler
Gérer les workflows sur Kubernetes peut s'avérer difficile. Bien que Kubernetes propose des primitives puissantes telles que CronJobs et Jobs, la coordination de flux de travail complexes avec des dépendances, des tentatives et des déclencheurs dynamiques nécessite souvent des scripts personnalisés ou des outils externes. Kontroler simplifie ce processus en fournissant une solution native de Kubernetes pour définir, planifier et gérer les flux de travail sous forme de graphiques acycliques dirigés (DAG).
Voici ce qui distingue Kontroler :
Kontroler vous permet de définir l'ensemble de votre flux de travail, y compris les tâches, les dépendances, la logique de nouvelle tentative et l'exécution conditionnelle, à l'aide de fichiers YAML simples. Cette approche maintient vos flux de travail déclaratifs, contrôlés en version et faciles à partager entre les équipes.
Enveloppez-les dans un graphique Helm et utilisez un système de déploiement automatisé tel qu'ArgoCD ou FluxCD, et vous aurez vos DAG gérés dans un workflow GitOps.
Que vous ayez besoin que des flux de travail s'exécutent selon un calendrier régulier (comme CronJobs) ou que vous réagissiez à des déclencheurs en temps réel (comme un message d'une file d'attente), Kontroler a ce qu'il vous faut. Il intègre parfaitement les deux paradigmes de planification, ce qui le rend polyvalent pour un large éventail de cas d'utilisation.
Kontroler fonctionne à l'aide de DagRuns (une définition de ressource personnalisée, ou CRD, que Kontroler peut surveiller). Pour exécuter une exécution DAG, vous créez simplement un DagRun et Kontroler gère l'exécution. En exposant cette fonctionnalité en dehors du contrôleur, Kontroler permet une intégration transparente avec des systèmes externes. Voir un exemple de DagRun ci-dessous :
apiVersion: kontroler.greedykomodo/v1alpha1 kind: DagRun metadata: labels: app.kubernetes.io/name: dagrun app.kubernetes.io/instance: dagrun-sample name: dagrun-sample spec: dagName: dag-sample parameters: - name: first fromSecret: secret-name-new - name: second value: value_new
Vous fournissez simplement le nom du DAG, en incluant éventuellement tous les paramètres. Les paramètres utiliseront leurs valeurs par défaut si aucune n'est spécifiée.
En tant qu'application native de Kubernetes, Kontroler exploite les avantages de la plateforme. Des scripts simples aux applications complexes, la conception axée sur les conteneurs de Kontroler garantit que toute charge de travail peut être facilement intégrée dans un DAG.
Pour réduire davantage la duplication des efforts, nous ajoutons la prise en charge des tâches en tant que CRD.
Bien que YAML soit excellent pour l'infrastructure en tant que code, la visualisation des flux de travail et le suivi de leur exécution peuvent simplifier considérablement le débogage et l'optimisation. Kontroler propose une interface utilisateur Web en option pour créer et surveiller des DAG, offrant ainsi aux équipes un moyen intuitif de gérer les flux de travail.
Dans la capture d'écran ci-dessus, il vous montre :
Sous le capot, cette fonctionnalité est alimentée par vis-network, un projet open source de création de graphiques. Vous pouvez trouver leur référentiel GitHub ici. Au départ, nous avons développé notre propre outil graphique, mais nous avons trouvé difficile de le mettre à l'échelle et de rendre lisibles des graphiques complexes. En conséquence, nous avons adopté cette solution open source.
Les modèles de pods de Kontroler vous permettent de personnaliser vos tâches avec des fonctionnalités Kubernetes avancées telles que les secrets, les PVC, l'affinité des nœuds, les contextes de sécurité, etc. Cela vous donne un contrôle précis sur la façon dont les tâches sont exécutées, garantissant ainsi la compatibilité avec les exigences spécifiques de votre cluster.
L'un des principaux défis de la gestion des flux de travail est de garantir que l'infrastructure sous-jacente peut évoluer en fonction de vos besoins. Kontroler offre une prise en charge flexible des bases de données et des capacités de journalisation pour permettre aux équipes de gérer plus facilement les DAG et de capturer des journaux d'exécution détaillés. Que vous travailliez avec une configuration légère ou un environnement de production plus robuste, Kontroler propose des options qui peuvent répondre à vos besoins.
Pour les petites configurations ou pendant le développement, SQLite est la base de données par défaut utilisée par Kontroler. C’est simple, léger et ne nécessite pas beaucoup de configuration. Si vous débutez ou si vous exécutez Kontroler à des fins de test, SQLite est un choix pratique car il fonctionne « prêt à l'emploi » sans configuration de base de données supplémentaire.
Si vous préférez utiliser SQLite, vous n'avez pas besoin d'apporter de modifications supplémentaires au déploiement. Suivez simplement les instructions d'installation et Kontroler s'occupera du reste.
Pour les déploiements plus importants de niveau production, PostgreSQL est la base de données recommandée pour stocker les DAG et DagRuns. Kontroler utilise PostgreSQL pour offrir des performances, une évolutivité et une fiabilité supérieures nécessaires à la gestion de grands volumes de données de flux de travail. Kontroler est compatible avec PostgreSQL 16 et supérieur
Pour de nombreux utilisateurs de Kubernetes, le stockage centralisé des journaux est une exigence cruciale pour l'observabilité et le dépannage. Kontroler s'intègre parfaitement à Amazon S3 pour le stockage des journaux, ce qui facilite la collecte, le stockage et l'analyse des journaux des exécutions de DAG. Cette intégration garantit que vous pouvez capturer des journaux détaillés, les conserver à long terme à des fins d'audit et les utiliser pour une analyse post-mortem en cas de problème.
Nous testons avec MinIO pour éviter des coûts, mais sous le capot, il utilise l'API AWS S3 et devrait être capable de détecter vos attributs IAM pour accorder l'accès à vos compartiments S3.
Nous espérons que vous découvrirez Kontroler ! Vous pouvez le trouver ici : https://github.com/GreedyKomodoDragon/Kontroler.
Bien qu'il soit encore en version alpha, Kontroler présente un potentiel important pour les équipes cherchant à rationaliser leurs opérations Kubernetes. Au fur et à mesure de son évolution, Kontroler vise à devenir un outil puissant pour orchestrer les flux de travail dans Kubernetes, offrant la fiabilité et l'évolutivité dont les équipes ont besoin pour automatiser facilement des processus complexes.
Kontroler s'améliore constamment, alors gardez un œil sur les futures mises à jour ! Si vous souhaitez contribuer au projet, nous acceptons toutes les formes de contributions.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!