Points clés
- Un opérateur Kubernetes est un mécanisme de mise en paquet, de déploiement et de gestion d'une application Kubernetes.
- Une application Kubernetes est à la fois déployée sur Kubernetes et gérée à l'aide de l'API Kubernetes et des outils kubectl.
- Les opérateurs Kubernetes gèrent les applications à l'aide d'une boucle de rapprochement continu qui automatise les tâches d'exploitation.
- Le projet Open Source Operator Framework fournit des outils Kubernetes pour le développement et l'exécution.
- Le modèle d'opérateur Kubernetes a été développé pour compenser l'absence de logique interne dans Kubernetes, pourtant nécessaire pour gérer en toute sécurité des systèmes stateful complexes, tels que des bases de données et des files d'attente de messages.
- Les opérateurs Red Hat OpenShift peuvent automatiser un workflow personnalisé lié à des ressources OpenShift natives en définissant et en mettant en œuvre les ressources arbitraires et la logique personnalisée qui les accompagnent.
Présentation
Un
Les opérateurs Kubernetes sont des contrôleurs propres à une application qui complètent les fonctionnalités de l'API Kubernetes afin de créer, configurer et gérer des instances d'applications complexes au nom d'un utilisateur Kubernetes.
Ils s'appuient sur les concepts de base de ressource et de contrôleur Kubernetes, et incluent des connaissances spécifiques d'une application ou d'un domaine pour automatiser l'ensemble du cycle de vie du logiciel qu'ils gèrent.
Dans Kubernetes, les contrôleurs du plan de contrôle mettent en œuvre des boucles de contrôle qui comparent en permanence l'état souhaité du cluster à son état réel. S'ils détectent un écart, les contrôleurs prennent des mesures pour résoudre le problème.
Un opérateur est un contrôleur Kubernetes personnalisé qui utilise des ressources personnalisées pour gérer les applications et leurs composants. C'est l'utilisateur qui fournit la configuration et les paramètres avancés dans une ressource personnalisée. L'opérateur Kubernetes traduit ces directives détaillées en actions de base, selon les meilleures pratiques intégrées à la logique de l'opérateur.
Les ressources personnalisées sont des extensions de l'API Kubernetes. Elles sont déterminées par des définitions de ressource personnalisée, qui listent aussi toutes les configurations disponibles pour les utilisateurs de l'opérateur.
L'opérateur Kubernetes surveille un type de ressource personnalisée et prend des mesures propres à l'application pour faire correspondre l'état actuel à l'état souhaité qui est décrit dans cette ressource.
Les opérateurs Kubernetes introduisent de nouveaux types d'objets au moyen des définitions de ressource personnalisée. Celles-ci peuvent être gérées par l'API Kubernetes de la même manière que les objets intégrés, notamment avec l'interaction via kubectl et l'inclusion dans les politiques de contrôle d'accès basé sur les rôles.
L'opérateur Kubernetes continue de surveiller l'application en cours d'exécution et peut automatiquement sauvegarder des données, les récupérer après une panne et mettre à niveau l'application au fil du temps.
Un opérateur Kubernetes peut effectuer presque tous types d'actions, notamment : mise à l'échelle d'une application complexe, mise à niveau des versions d'applications et gestion des modules de noyau pour des nœuds dans un cluster de calcul avec du matériel spécialisé.
Gestion des applications
Les opérateurs Kubernetes gèrent les applications à l'aide d'une boucle de rapprochement continu qui automatise les tâches d'exploitation habituellement effectuées par un ingénieur humain. Propres aux applications, ils servent de pont entre les ressources Kubernetes standards et les exigences d'exploitation internes et complexes des logiciels.
Kubernetes peut gérer et mettre à l'échelle des applications stateless, telles que des applications web, des infrastructures back-end mobiles et des services d'API, sans avoir besoin d'informations supplémentaires sur leur fonctionnement. Les fonctions intégrées de Kubernetes sont conçues pour faciliter le traitement de ces tâches.
Pour les applications stateful, comme les bases de données et les systèmes de surveillance, il faut davantage de connaissances spécifiques d'un domaine dont Kubernetes ne dispose pas. Ces informations sont indispensables pour mettre à l'échelle, mettre à niveau et reconfigurer ces applications.
Les opérateurs Kubernetes encodent ces connaissances spécifiques dans des extensions de Kubernetes pour permettre la gestion et l'automatisation du cycle de vie des applications.
En supprimant les tâches manuelles complexes de gestion des applications, les opérateurs Kubernetes standardisent ces processus et les rendent évolutifs et reproductibles.
Pour les équipes de développement d'applications, les opérateurs facilitent le déploiement et l'exécution des services de base dont dépendent les applications.
Pour les équipes d'ingénierie de l'infrastructure et leurs fournisseurs, les opérateurs améliorent la cohérence de la distribution des logiciels dans les clusters Kubernetes et réduisent le besoin d'assistance en identifiant et en corrigeant les problèmes liés aux applications.
Les opérateurs permettent d'écrire du code pour automatiser une tâche, de manière plus complète que les fonctions d'automatisation de base que fournit Kubernetes. Les équipes qui suivent une approche DevOps ou d'ingénierie de la fiabilité des sites peuvent utiliser des opérateurs qui intègrent ces pratiques à Kubernetes.
Le modèle d'opérateur vise à reproduire la façon dont un opérateur humain gère un service. Celui-ci doit savoir comment fonctionne une application ou un service, comment le déployer et comment résoudre les problèmes éventuels.
En général, l'équipe d'exploitation ou d'ingénierie de la fiabilité des sites écrit un logiciel pour gérer une application. De son côté, l'opérateur va encoder les connaissances opérationnelles humaines dans un logiciel afin de gérer et déployer des charges de travail Kubernetes, en éliminant les tâches manuelles.
Il est recommandé de confier l'assemblage d'un opérateur aux spécialistes de la logique métier pour l'installation, l'exécution et la mise à niveau d'une application particulière.
La création d'un opérateur commence souvent par l'automatisation de l'installation et du provisionnement en libre-service de l'application, avant de passer à des fonctionnalités d'automatisation plus complexes.
Il existe également un kit de développement logiciel pour opérateur Kubernetes, qui peut aider les utilisateurs à développer leur propre opérateur. Ce kit fournit des outils d'assemblage, de test et de mise en paquet, et permet d'utiliser aussi bien des charts Helm que des playbooks Ansible ou Golang.
Operator Framework
Le projet Open Source Operator Framework fournit des outils Kubernetes permettant d'accélérer le développement et l'exécution d'opérateurs.
Le projet Operator Framework inclut les outils suivants :
- Operator SDK : aide les équipes de développement à assembler des opérateurs en s'appuyant sur leurs connaissances existantes, sans avoir à maîtriser les aspects complexes de l'API Kubernetes.
- Operator Lifecycle Management : surveille l'installation, les mises à jour et la gestion du cycle de vie de tous les opérateurs exécutés dans un cluster Kubernetes.
- Operator Metering : permet de créer des rapports d'utilisation pour les opérateurs qui fournissent des services spécialisés.
Utilité et intérêt du modèle d'opérateur
Le modèle d'opérateur Kubernetes a été développé pour compenser une importante limite de la technologie Kubernetes standard, qui ne dispose pas de la logique interne nécessaire pour gérer en toute sécurité des systèmes stateful complexes, tels que des bases de données et des files d'attente de messages. Auparavant, pour gérer ces systèmes, les équipes d'ingénierie de la fiabilité des sites devaient exécuter manuellement des playbooks pour les sauvegardes, les mises à niveau et les basculements entre plusieurs nœuds.
Les opérateurs leur simplifient la tâche en encodant les connaissances opérationnelles humaines directement dans les logiciels. Ils associent les ressources personnalisées à des boucles de rapprochement automatisées, transformant ainsi les listes de contrôle utilisées pour l'exploitation manuelle en processus automatisés continus et capables de s'autoréparer. Cette approche offre des avantages considérables aux équipes d'ingénierie, qui peuvent éliminer les écarts de configuration, effectuer des mises à niveau continues sans risque ainsi que déployer des logiciels complexes et hautement disponibles sur tout type de plateforme cloud à l'aide des manifestes YAML déclaratifs et standardisés qu'elles connaissent déjà.
Opérateurs dans Red Hat OpenShift
Les opérateurs Red Hat® OpenShift® sont des extensions de Red Hat OpenShift. Ils peuvent automatiser un workflow personnalisé lié à des ressources OpenShift natives en définissant et en mettant en œuvre les ressources arbitraires et la logique personnalisée qui les accompagnent. Cet article de blog donne des explications plus détaillées.
La solution Red Hat® OpenShift® est une plateforme de conteneurs Kubernetes pour les entreprises qui automatise l'exploitation de l'ensemble de la pile pour la gestion des déploiements multicloud et de cloud hybride.
Red Hat OpenShift utilise des opérateurs Kubernetes pour exécuter l'ensemble de la plateforme de manière autonome, tout en exposant nativement la configuration au moyen des objets Kubernetes. Cette approche permet une installation rapide ainsi que des mises à jour fréquentes et efficaces.
La solution Red Hat OpenShift inclut le registre OperatorHub, qui regroupe des opérateurs certifiés issus d'éditeurs de logiciels et de projets Open Source. Ce registre permet de parcourir et d'installer une bibliothèque d'opérateurs dont la compatibilité avec Red Hat OpenShift a été validée et qui ont été mis en paquets pour faciliter la gestion du cycle de vie.
Accélérez le développement d'applications avec Red Hat OpenShift
Découvrez comment Red Hat OpenShift peut aider votre entreprise à assembler, accélérer et mettre à l'échelle des charges de travail traditionnelles et basées sur l'IA en toute sécurité et conformité.