À propos du projet

Kubebuilder est un framework pour construire des API Kubernetes à l'aide de définitions de ressources personnalisées (CRD). Semblable aux frameworks de développement web tels que Ruby on Rails et SpringBoot, il augmente la vélocité et réduit la complexité gérée par les développeurs pour créer et publier rapidement des API Kubernetes en Go. Il s'appuie sur les techniques canoniques utilisées pour construire les API Kubernetes de base afin de fournir des abstractions simples qui réduisent le code répétitif et les tâches fastidieuses. Kubebuilder n'existe pas comme un exemple à copier-coller, mais fournit plutôt des bibliothèques et des outils puissants pour simplifier la création et la publication d'API Kubernetes à partir de zéro. Il propose une architecture de plugins permettant aux utilisateurs de tirer parti d'utilitaires et de fonctionnalités optionnels. Kubebuilder est développé sur la base des bibliothèques controller-runtime et controller-tools. Il est également extensible et peut être utilisé comme bibliothèque dans d'autres projets. Operator-SDK est un bon exemple de projet qui utilise Kubebuilder comme bibliothèque, en tirant parti de la fonctionnalité de plugin pour inclure des opérateurs non-Go tels que les opérateurs basés sur Ansible et Helm. Le framework facilite un flux de travail de développement pour construire des API : créer un nouveau répertoire de projet, créer une ou plusieurs API de ressources en tant que CRD, implémenter des boucles de réconciliation dans les contrôleurs, tester en exécutant contre un cluster, mettre à jour les tests d'intégration amorcés, et construire et publier un conteneur à partir du Dockerfile fourni. La portée de Kubebuilder couvre la construction d'API utilisant des CRD, des contrôleurs et des webhooks d'admission. Sa philosophie met l'accent sur la fourniture d'abstractions de bibliothèque propres avec une documentation Go claire et bien illustrée, préférant les interfaces et les bibliothèques à la génération de code, la génération de code à l'initialisation ponctuelle de stubs, et l'initialisation ponctuelle au code répétitif modifié et forké. Kubebuilder fournit des bibliothèques de plus haut niveau au-dessus des bibliothèques clientes de bas niveau pour protéger les développeurs des changements cassants, commence de manière minimale et offre une découverte progressive des fonctionnalités, et fournit des valeurs par défaut sensées permettant aux utilisateurs de les remplacer lorsqu'elles existent. Il fournit également des générateurs de code pilotés par des commentaires // + pour maintenir le code répétitif courant, et des commandes d'amorçage pour initialiser de nouveaux packages. Les projets créés par Kubebuilder contiennent un Makefile qui installe les outils aux versions définies lors de la création du projet, notamment kustomize, controller-gen et setup-envtest. La version minimale de Go requise est déterminée par la version minimale la plus élevée requise par ses dépendances. Kubebuilder prend officiellement en charge les plateformes macOS et Linux. Il est développé par la communauté Kubernetes SIGs et suit le modèle typique de demande de tirage GitHub pour les contributions.