Chapitre 5. Développer les opérateurs
5.1. À propos du SDK de l'opérateur
L'Operator Framework est une boîte à outils open source permettant de gérer les applications natives de Kubernetes, appelées Operators, de manière efficace, automatisée et évolutive. Les opérateurs tirent parti de l'extensibilité de Kubernetes pour offrir les avantages de l'automatisation des services en nuage, tels que le provisionnement, la mise à l'échelle, la sauvegarde et la restauration, tout en étant capables de fonctionner partout où Kubernetes peut fonctionner.
Les opérateurs facilitent la gestion d'applications complexes, avec état, au-dessus de Kubernetes. Cependant, écrire un Operator aujourd'hui peut être difficile en raison de défis tels que l'utilisation d'API de bas niveau, l'écriture de boilerplate, et un manque de modularité, ce qui conduit à la duplication.
L'Operator SDK, un composant de l'Operator Framework, fournit une interface de ligne de commande (CLI) que les développeurs d'opérateurs peuvent utiliser pour construire, tester et déployer un opérateur.
Why use the Operator SDK?
Le SDK Operator simplifie ce processus de création d'applications natives de Kubernetes, qui peut nécessiter des connaissances opérationnelles approfondies et spécifiques à l'application. Le SDK Operator ne se contente pas d'abaisser cette barrière, il contribue également à réduire la quantité de code standard nécessaire pour de nombreuses fonctions de gestion courantes, telles que le comptage ou la surveillance.
L'Operator SDK est un cadre qui utilise la bibliothèque controller-runtime pour faciliter l'écriture d'opérateurs en offrant les fonctionnalités suivantes :
- API de haut niveau et abstractions pour écrire la logique opérationnelle de manière plus intuitive
- Outils d'échafaudage et de génération de code pour démarrer rapidement un nouveau projet
- Intégration avec Operator Lifecycle Manager (OLM) pour rationaliser le conditionnement, l'installation et le fonctionnement des opérateurs sur un cluster
- Extensions pour couvrir les cas d'utilisation courants des opérateurs
- Paramètres définis automatiquement dans tout opérateur Go-based généré pour une utilisation sur les clusters où l'opérateur Prometheus est déployé
Les auteurs d'opérateurs ayant un accès d'administrateur de cluster à un cluster basé sur Kubernetes (tel que OpenShift Container Platform) peuvent utiliser le CLI Operator SDK pour développer leurs propres opérateurs basés sur Go, Ansible ou Helm. Kubebuilder est intégré dans le SDK Operator en tant que solution d'échafaudage pour les opérateurs basés sur Go, ce qui signifie que les projets Kubebuilder existants peuvent être utilisés tels quels avec le SDK Operator et continuer à fonctionner.
OpenShift Container Platform 4.12 supporte Operator SDK 1.25.4.
5.1.1. Qu'est-ce qu'un opérateur ?
Pour une vue d'ensemble des concepts et de la terminologie de base des opérateurs, voir Comprendre les opérateurs.
5.1.2. Processus de développement
Le SDK Opérateur fournit le flux de travail suivant pour développer un nouvel opérateur :
- Créez un projet Operator en utilisant l'interface de ligne de commande (CLI) du SDK Operator.
- Définir de nouvelles API de ressources en ajoutant des définitions de ressources personnalisées (CRD).
- Spécifiez les ressources à surveiller en utilisant l'API SDK de l'opérateur.
- Définir la logique de rapprochement de l'opérateur dans un gestionnaire désigné et utiliser l'API SDK de l'opérateur pour interagir avec les ressources.
- Utilisez l'interface CLI du SDK de l'opérateur pour créer et générer les manifestes de déploiement de l'opérateur.
Figure 5.1. Flux de travail de l'opérateur SDK
À un niveau élevé, un opérateur qui utilise le SDK opérateur traite les événements pour les ressources surveillées dans un gestionnaire défini par l'auteur de l'opérateur et prend des mesures pour réconcilier l'état de l'application.