6.2. Comprendre l'opérateur de liaison de service
Les développeurs d'applications ont besoin d'accéder aux services d'appui pour créer et connecter des charges de travail. La connexion des charges de travail aux services d'appui constitue toujours un défi, car chaque fournisseur de services propose une manière différente d'accéder à ses secrets et de les consommer dans une charge de travail. En outre, la configuration et la maintenance manuelles de cette liaison entre les charges de travail et les services d'appui rendent le processus fastidieux, inefficace et sujet aux erreurs.
L'opérateur de liaison de services permet aux développeurs d'applications de lier facilement les charges de travail aux services de soutien gérés par l'opérateur, sans procédures manuelles pour configurer la connexion de liaison.
6.2.1. Terminologie du Service Binding
Cette section résume les termes de base utilisés dans la liaison de service.
Liaison de service | La représentation de l'action de fournir des informations sur un service à une charge de travail. Les exemples incluent l'établissement d'un échange d'informations d'identification entre une application Java et une base de données dont elle a besoin. |
Service de soutien | Tout service ou logiciel que l'application consomme sur le réseau dans le cadre de son fonctionnement normal. Il peut s'agir par exemple d'une base de données, d'un courtier en messages, d'une application avec des points d'extrémité REST, d'un flux d'événements, d'un moniteur de performance d'application (APM) ou d'un module de sécurité matériel (HSM). |
Charge de travail (application) | Tout processus s'exécutant dans un conteneur. Les exemples incluent une application Spring Boot, une application NodeJS Express, ou une application Ruby on Rails. |
Données contraignantes | Informations sur un service que vous utilisez pour configurer le comportement d'autres ressources au sein du cluster. Il peut s'agir par exemple d'informations d'identification, de détails de connexion, de montages de volumes ou de secrets. |
Connexion contraignante | Toute connexion qui établit une interaction entre les composants connectés, tels qu'un service de soutien liant et une application nécessitant ce service de soutien. |
6.2.2. À propos de l'opérateur de reliure de service
L'opérateur de liaison de services se compose d'un contrôleur et d'une définition de ressource personnalisée (CRD) pour la liaison de services. Il gère le plan de données pour les charges de travail et les services d'appui. Le contrôleur de liaison de services lit les données mises à disposition par le plan de contrôle des services d'appui. Il projette ensuite ces données vers les charges de travail conformément aux règles spécifiées dans la ressource ServiceBinding
.
Par conséquent, l'opérateur de liaison de services permet aux charges de travail d'utiliser des services d'appui ou des services externes en collectant et en partageant automatiquement les données de liaison avec les charges de travail. Le processus consiste à rendre le service d'appui liable et à lier la charge de travail et le service ensemble.
6.2.2.1. Rendre liant un service d'appui géré par un opérateur
Pour rendre un service liant, en tant que fournisseur d'un opérateur, vous devez exposer les données de liaison requises par les charges de travail pour se lier aux services fournis par l'opérateur. Vous pouvez fournir les données de liaison sous forme d'annotations ou de descripteurs dans le CRD de l'opérateur qui gère le service d'appui.
6.2.2.2. Lier une charge de travail à un service d'appui
En utilisant l'opérateur de liaison de service, en tant que développeur d'application, vous devez déclarer l'intention d'établir une connexion de liaison. Vous devez créer un CR ServiceBinding
qui fait référence au service d'appui. Cette action déclenche l'opérateur de liaison de service pour projeter les données de liaison exposées dans la charge de travail. Le Service Binding Operator reçoit l'intention déclarée et lie la charge de travail au service d'appui.
Le CRD de l'opérateur de liaison de services prend en charge les API suivantes :
-
Service Binding avec le groupe API
binding.operators.coreos.com
. -
Service Binding (Spec API) avec le groupe API
servicebinding.io
.
Avec Service Binding Operator, vous pouvez :
- Liez vos charges de travail à des services de sauvegarde gérés par l'opérateur.
- Automatiser la configuration des données de liaison.
- Fournir aux opérateurs de services une expérience administrative simple pour fournir et gérer l'accès aux services.
- Enrichissez le cycle de développement avec une méthode de liaison de service cohérente et déclarative qui élimine les divergences dans les environnements en grappe.
6.2.3. Caractéristiques principales
Exposition des données contraignantes des services
- Basé sur les annotations présentes dans le CRD, les ressources personnalisées (CR) ou les ressources.
Projection de la charge de travail
- Projection des données de reliure sous forme de fichiers, avec montage des volumes.
- Projection des données contraignantes sous forme de variables d'environnement.
Options de liaison de service
- Lier les services de soutien dans un espace de noms différent de l'espace de noms de la charge de travail.
- Projeter les données de liaison dans les charges de travail spécifiques des conteneurs.
- Détection automatique des données de liaison à partir des ressources appartenant au service d'appui CR.
- Composer des données de liaison personnalisées à partir des données de liaison exposées.
-
Prise en charge des ressources de charge de travail non conformes à
PodSpec
.
Sécurité
- Prise en charge du contrôle d'accès basé sur les rôles (RBAC).
6.2.4. Différences entre les API
Le CRD de l'opérateur de liaison de services prend en charge les API suivantes :
-
Service Binding avec le groupe API
binding.operators.coreos.com
. -
Service Binding (Spec API) avec le groupe API
servicebinding.io
.
Ces deux groupes d'API présentent des caractéristiques similaires, mais ne sont pas tout à fait identiques. Voici la liste complète des différences entre ces groupes d'API :
Fonctionnalité | Soutenu par le groupe API binding.operators.coreos.com | Soutenu par le groupe API servicebinding.io | Notes |
---|---|---|---|
Liaison avec les services fournis | Oui | Oui | Non applicable (N/A) |
Projection directe du secret | Oui | Oui | Non applicable (N/A) |
Relier comme des fichiers | Oui | Oui |
|
Lier en tant que variables d'environnement | Oui | Oui |
|
Sélection de la charge de travail à l'aide d'un sélecteur d'étiquettes | Oui | Oui | Non applicable (N/A) |
Détection des ressources contraignantes ( | Oui | Non |
Le groupe API |
Stratégies de dénomination | Oui | Non |
Il n'existe actuellement aucun mécanisme au sein du groupe API |
Chemin d'accès au conteneur | Oui | Partiel |
Étant donné qu'une liaison de service du groupe d'API |
Filtrage des noms de conteneurs | Non | Oui |
Le groupe API |
Chemin secret | Oui | Non |
Le groupe API |
Autres sources de liaison (par exemple, données de liaison provenant d'annotations) | Oui | Autorisé par l'opérateur de liaison de service | La spécification exige la prise en charge de l'obtention de données contraignantes à partir de services et de secrets fournis. Cependant, une lecture stricte de la spécification suggère que la prise en charge d'autres sources de données de liaison est autorisée. De ce fait, Service Binding Operator peut extraire les données de liaison de diverses sources (par exemple, extraire les données de liaison des annotations). Service Binding Operator prend en charge ces sources dans les deux groupes d'API. |