Chapitre 2. Comprendre les opérateurs
2.1. Qu'est-ce qu'un opérateur ?
D'un point de vue conceptuel, Operators prend les connaissances opérationnelles humaines et les encode dans des logiciels qui sont plus facilement partagés avec les consommateurs.
Les opérateurs sont des logiciels qui facilitent la complexité opérationnelle de l'exécution d'un autre logiciel. Ils agissent comme une extension de l'équipe d'ingénierie de l'éditeur du logiciel, en surveillant un environnement Kubernetes (tel que OpenShift Container Platform) et en utilisant son état actuel pour prendre des décisions en temps réel. Les opérateurs avancés sont conçus pour gérer les mises à niveau de manière transparente, réagir automatiquement aux pannes et ne pas prendre de raccourcis, comme sauter un processus de sauvegarde du logiciel pour gagner du temps.
Plus techniquement, les opérateurs sont une méthode de conditionnement, de déploiement et de gestion d'une application Kubernetes.
Une application Kubernetes est une application qui est à la fois déployée sur Kubernetes et gérée à l'aide des API Kubernetes et des outils kubectl
ou oc
. Pour pouvoir tirer le meilleur parti de Kubernetes, vous avez besoin d'un ensemble d'API cohérentes à étendre afin d'assurer le service et la gestion de vos applications qui s'exécutent sur Kubernetes. Considérez les opérateurs comme le moteur d'exécution qui gère ce type d'application sur Kubernetes.
2.1.1. Pourquoi utiliser des opérateurs ?
Les opérateurs fournissent :
- Répétabilité de l'installation et de la mise à niveau.
- Contrôles constants de l'état de santé de chaque composant du système.
- Mises à jour OTA (Over-the-air) pour les composants OpenShift et le contenu ISV.
- Un lieu où les connaissances des ingénieurs de terrain sont regroupées et diffusées à tous les utilisateurs, et pas seulement à un ou deux d'entre eux.
- Pourquoi déployer sur Kubernetes ?
- Kubernetes (et par extension, OpenShift Container Platform) contient toutes les primitives nécessaires pour construire des systèmes distribués complexes - traitement des secrets, équilibrage de charge, découverte de services, mise à l'échelle automatique - qui fonctionnent sur site et avec des fournisseurs de cloud.
- Pourquoi gérer votre application avec les API de Kubernetes et l'outil
kubectl
? -
Ces API sont riches en fonctionnalités, disposent de clients pour toutes les plateformes et s'intègrent au contrôle d'accès et à l'audit du cluster. Un opérateur utilise le mécanisme d'extension de Kubernetes, les définitions de ressources personnalisées (CRD), de sorte que votre objet personnalisé, par exemple
MongoDB
, ressemble et agit comme les objets Kubernetes natifs intégrés. - Comment les opérateurs se comparent-ils aux courtiers en services ?
- Un courtier de services est une étape vers la découverte et le déploiement programmatiques d'une application. Cependant, comme il ne s'agit pas d'un processus de longue durée, il ne peut pas exécuter les opérations du deuxième jour comme la mise à niveau, le basculement ou la mise à l'échelle. Les personnalisations et la paramétrisation des paramètres sont fournies au moment de l'installation, contrairement à un opérateur qui surveille constamment l'état actuel de votre cluster. Les services hors cluster conviennent bien à un courtier de services, bien qu'il existe également des opérateurs pour ces services.
2.1.2. Cadre de l'opérateur
L'Operator Framework est une famille d'outils et de capacités permettant d'offrir l'expérience client décrite ci-dessus. Il ne s'agit pas seulement d'écrire du code ; les tests, la livraison et la mise à jour des opérateurs sont tout aussi importants. Les composants de l'Operator Framework sont des outils open source permettant de résoudre ces problèmes :
- SDK de l'opérateur
- L'Operator SDK aide les auteurs d'opérateurs à démarrer, construire, tester et emballer leur propre opérateur en fonction de leur expertise sans avoir besoin de connaître les complexités de l'API Kubernetes.
- Gestionnaire du cycle de vie des opérateurs
- Operator Lifecycle Manager (OLM) contrôle l'installation, la mise à niveau et le contrôle d'accès basé sur les rôles (RBAC) des opérateurs dans un cluster. Déployé par défaut dans OpenShift Container Platform 4.12.
- Registre des opérateurs
- Le registre Operator stocke les versions de service de cluster (CSV) et les définitions de ressources personnalisées (CRD) pour la création dans un cluster et stocke les métadonnées Operator sur les paquets et les canaux. Il s'exécute dans un cluster Kubernetes ou OpenShift pour fournir ces données de catalogue d'opérateurs à OLM.
- OperatorHub
- OperatorHub est une console web permettant aux administrateurs de clusters de découvrir et de sélectionner les opérateurs à installer sur leur cluster. Il est déployé par défaut dans OpenShift Container Platform.
Ces outils sont conçus pour être composables, de sorte que vous pouvez utiliser tous ceux qui vous sont utiles.
2.1.3. Modèle de maturité de l'opérateur
Le niveau de sophistication de la logique de gestion encapsulée dans un opérateur peut varier. En général, cette logique dépend aussi fortement du type de service représenté par l'opérateur.
Il est toutefois possible de généraliser l'échelle de maturité des opérations encapsulées d'un opérateur pour certains ensembles de capacités que la plupart des opérateurs peuvent inclure. À cette fin, le modèle de maturité de l'opérateur ci-après définit cinq phases de maturité pour les opérations génériques du deuxième jour d'un opérateur :
Figure 2.1. Modèle de maturité de l'opérateur
Le modèle ci-dessus montre également comment ces capacités peuvent être développées au mieux grâce aux fonctionnalités Helm, Go et Ansible de l'Operator SDK.