Jump to section

Un opérateur Kubernetes, qu'est-ce que c'est ?

Copier l'URL

Un opérateur Kubernetes est une méthode qui permet de mettre en paquet, déployer et gérer une application Kubernetes. Une application Kubernetes est déployée sur Kubernetes et gérée à l'aide de l'API (interface de programmation d'application) Kubernetes et des outils de kubectl.

Un opérateur Kubernetes est un contrôleur spécifique à une application qui permet d'étendre les fonctions de l'API Kubernetes afin de créer, configurer et gérer des instances d'applications complexes au nom d'un utilisateur Kubernetes.

Il s'appuie sur les concepts de base de ressource et contrôleur Kubernetes, mais inclut des connaissances spécifiques à une application ou un domaine pour automatiser le cycle de vie complet du logiciel dont il assure la gestion. 

Dans Kubernetes, les contrôleurs du plan de contrôle mettent en œuvre des boucles de contrôle qui comparent en continu l'état actuel du cluster avec son état souhaité. Si l'état souhaité n'est pas atteint, le contrôleur met en œuvre les actions adéquates pour résoudre le problème. 

Un opérateur est un contrôleur Kubernetes sur mesure qui utilise des ressources personnalisées pour gérer des applications et leurs composants. L'utilisateur fournit une configuration et des paramètres de haut niveau par l'intermédiaire d'une ressource personnalisée. L'opérateur Kubernetes traduit alors ces directives de haut niveau en actions de bas niveau, en suivant les bonnes pratiques intégrées à sa logique.

La ressource personnalisée correspond au mécanisme d'extension d'API dans Kubernetes. Une définition de ressource personnalisée (CRD) permet aux utilisateurs de définir une ressource personnalisée. Elle indique tous les éléments de configuration auxquels peuvent accéder les utilisateurs de l'opérateur. 

L'opérateur Kubernetes examine le type de ressource personnalisée et met en œuvre les actions appropriées, spécifiques à l'application, pour faire correspondre l'état actuel avec l'état souhaité de cette ressource.

Les définitions de ressources personnalisées permettent aux opérateurs Kubernetes d'introduire de nouveaux types d'objets. L'API Kubernetes peut les manipuler de la même manière que les objets intégrés. Elle permet, par exemple, d'interagir avec ces définitions via kubectl et de les inclure dans des politiques de contrôle d'accès basé sur les rôles.

Au cours de son exécution, un opérateur Kubernetes continue de surveiller son application et peut automatiser des tâches telles que la sauvegarde des données, la récupération après défaillance, ainsi que la mise à niveau de l'application au fil du temps. 

Mise à l'échelle d'une application complexe, mise à niveau des versions d'applications, gestion des modules de noyau pour des nœuds dans un cluster de calcul avec du matériel spécialisé... Les actions possibles via un opérateur Kubernetes sont quasi illimitées.

Apprenez-en plus sur le fonctionnement des opérateurs Kubernetes, à travers des exemples concrets, ainsi que sur la façon de les créer avec Operator Framework et le kit de développement logiciel.

Kubernetes permet de gérer et de mettre à l'échelle des applications stateless (par exemple, des applications web, des back-ends mobiles et des services d'API), sans connaissances supplémentaires sur leur fonctionnement. Les fonctions intégrées à Kubernetes sont conçues pour simplifier la gestion de ces tâches.

Cependant, les applications avec état, telles que les bases de données et les systèmes de surveillance, nécessitent des connaissances supplémentaires spécifiques à un domaine, que Kubernetes ne possède pas. Des connaissances indispensables pour mettre à l'échelle, mettre à niveau et reconfigurer ces applications.

Les opérateurs Kubernetes encodent ces connaissances spécifiques à un domaine dans les extensions Kubernetes pour pouvoir gérer et automatiser le cycle de vie d'une application.

En éliminant les tâches manuelles de gestion d'application, particulièrement compliquées, les opérateurs Kubernetes permettent de standardiser ces processus et de les rendre évolutifs et reproductibles.

Pour les développeurs d'applications, les opérateurs facilitent le déploiement et l'exécution des services de base dont dépendent leurs applications. 

Pour les ingénieurs et les fournisseurs d'infrastructures, les opérateurs fournissent une solution cohérente pour distribuer des logiciels sur des clusters Kubernetes et permettent d'alléger le travail des services d'assistance en identifiant et en corrigeant les problèmes des applications. 

Grâce aux opérateurs, vous pouvez rédiger du code pour automatiser une tâche, au-delà des fonctions d'automatisation de base fournies dans Kubernetes. Les opérateurs ont été développés pour intégrer les pratiques d'ingénierie de la fiabilité des sites (SRE) à Kubernetes, pour les équipes qui suivent une approche DevOps ou SRE. 

Le modèle de l'opérateur a pour fonction de s'approprier l'intention d'un opérateur humain dans sa façon de gérer un service. Un opérateur humain doit avoir une compréhension totale du fonctionnement d'une application ou d'un service, de son déploiement, ainsi que de la résolution des problèmes qui peuvent se présenter.

Le logiciel qui sert à gérer une application est généralement développé par les équipes d'exploitation ou l'ingénieur en fiabilité de site. Le rôle de l'opérateur est donc de s'approprier les connaissances humaines liées à l'exploitation et de les intégrer au logiciel, afin de gérer et déployer des charges de travail Kubernetes, et éliminer ainsi ces tâches manuelles. 

Les spécialistes de la logique métier liée à l'installation, à l'exécution et à la mise à niveau d'une application spécifique sont les plus à même de créer les opérateurs.

La création d'un opérateur commence souvent par l'automatisation de l'installation et de provisionnement en libre-service d'une application, pour ensuite intégrer des capacités d'automatisation plus complexes.

Il existe également un kit de développement logiciel (SDK) pour vous aider à développer vos propres opérateurs Kubernetes. Le SDK fournit les outils nécessaires pour créer, tester et mettre en paquet des opérateurs, en vous laissant le choix d'utiliser les charts Helm, les playbooks Ansible ou Golang.

Operator Framework est un projet Open Source qui fournit, aux développeurs et à l'environnement d'exécution, les outils Kubernetes pour accélérer le développement d'un opérateur.

Le projet Operator Framework inclut :

  • Operator SDK : permet aux développeurs de créer des opérateurs sur la base de leurs connaissances, sans avoir à apprendre les subtilités des API Kubernetes.
  • Operator Lifecycle Manager : supervise l'installation, les mises à jour et la gestion du cycle de vie de tous les opérateurs exécutés au sein d'un cluster Kubernetes.
  • Operator Metering : permet de générer des rapports concernant les opérateurs qui fournissent des services spécifiques.

La solution Red Hat® OpenShift® est une plateforme de conteneurs Kubernetes pour les entreprises qui automatise l'exploitation de toute la pile pour la gestion des déploiements multicloud et de clouds hybrides.

Red Hat OpenShift utilise les opérateurs Kubernetes pour exécuter toute la plateforme de manière autonome, tout en rendant la configuration nativement disponible grâce aux objets Kubernetes, ce qui permet d'effectuer des installations rapides et des mises à jour fréquentes et fiables. 

Intégré à Red Hat OpenShift, OperatorHub est un registre d'opérateurs certifiés provenant de fournisseurs de logiciels et de projets Open Source. Dans OperatorHub, vous pouvez parcourir et installer une bibliothèque d'opérateurs certifiés compatibles avec Red Hat OpenShift et mis en paquets pour une gestion du cycle de vie simplifiée.

Pour aller plus loin

ARTICLE

Conteneurs et machines virtuelles

Les conteneurs Linux et les machines virtuelles sont des environnements informatiques en paquets qui associent divers composants et les isolent du reste du système.

ARTICLE

L'orchestration des conteneurs, qu'est-ce que c'est ?

L'orchestration des conteneurs permet d'automatiser le déploiement, la gestion, la mise à l'échelle et la mise en réseau des conteneurs.

ARTICLE

Un conteneur Linux, qu'est-ce que c'est ?

Un conteneur Linux est un ensemble de processus isolés du système. Un conteneur s'exécute à partir d'une image distincte qui fournit tous les fichiers nécessaires à la prise en charge des processus qu'il contient.

En savoir plus sur les conteneurs

Produits

Une plateforme d'applications d'entreprise comprenant un ensemble unifié de services testés conçus pour distribuer des applications sur votre choix d'infrastructure.

Ressources

Formations

Cours gratuit

Présentation technique de l'exécution de conteneurs avec Red Hat

Cours gratuit

Présentation technique du déploiement d'applications conteneurisées

Cours gratuit

Développement d'applications cloud-native avec des architectures de microservices