6.7. Projeter des données contraignantes


Cette section fournit des informations sur la manière dont vous pouvez consommer les données de liaison.

6.7.1. Consommation de données contraignantes

Une fois que le service de soutien expose les données de liaison, pour qu'une charge de travail accède à ces données et les consomme, vous devez les projeter dans la charge de travail à partir d'un service de soutien. Service Binding Operator projette automatiquement cet ensemble de données dans la charge de travail selon les méthodes suivantes :

  1. Par défaut, sous forme de fichiers.
  2. En tant que variables d'environnement, après avoir configuré le paramètre .spec.bindAsFiles à partir de la ressource ServiceBinding.

6.7.2. Configuration du chemin d'accès au répertoire pour projeter les données de liaison à l'intérieur du conteneur de charge de travail

Par défaut, Service Binding Operator monte les données de liaison sous forme de fichiers dans un répertoire spécifique de votre ressource de charge de travail. Vous pouvez configurer le chemin d'accès au répertoire à l'aide de la variable d'environnement SERVICE_BINDING_ROOT dans le conteneur où s'exécute votre charge de travail.

Exemple : Liaison de données montées sous forme de fichiers

$SERVICE_BINDING_ROOT 1
├── account-database 2
│   ├── type 3
│   ├── provider 4
│   ├── uri
│   ├── username
│   └── password
└── transaction-event-stream 5
    ├── type
    ├── connection-count
    ├── uri
    ├── certificates
    └── private-key

1
Répertoire racine.
2 5
Répertoire qui stocke les données de liaison.
3
Identifiant obligatoire qui identifie le type de données de reliure projetées dans le répertoire correspondant.
4
Facultatif : Identifiant permettant d'identifier le fournisseur afin que l'application puisse identifier le type de service de soutien auquel elle peut se connecter.

Pour consommer les données de liaison en tant que variables d'environnement, utilisez la fonction de langage intégrée du langage de programmation de votre choix qui peut lire les variables d'environnement.

Exemple : Utilisation du client Python

import os
username = os.getenv("USERNAME")
password = os.getenv("PASSWORD")

Avertissement

Pour utiliser le nom du répertoire des données contraignantes pour rechercher les données contraignantes

Service Binding Operator utilise le nom de la ressource ServiceBinding (.metadata.name) comme nom du répertoire des données de liaison. La spécification fournit également un moyen de remplacer ce nom par le champ .spec.name. Par conséquent, il existe un risque de collision entre les noms des données de liaison s'il y a plusieurs ressources ServiceBinding dans l'espace de noms. Cependant, en raison de la nature du montage de volume dans Kubernetes, le répertoire de données de liaison contiendra des valeurs provenant d'une seule des ressources Secret.

6.7.2.1. Calcul du chemin final pour la projection des données de liaison sous forme de fichiers

Le tableau suivant résume la configuration du calcul du chemin final pour la projection des données de reliure lorsque les fichiers sont montés dans un répertoire spécifique :

Tableau 6.5. Résumé du calcul du chemin final
SERVICE_BINDING_ROOTChemin final

Non disponible

/bindings/<ServiceBinding_ResourceName>

dir/path/root

dir/path/root/<ServiceBinding_ResourceName>

Dans le tableau précédent, l'entrée <ServiceBinding_ResourceName> indique le nom de la ressource ServiceBinding que vous configurez dans la section .metadata.name de la ressource personnalisée (CR).

Note

Par défaut, les fichiers projetés ont des permissions de 0644. Service Binding Operator ne peut pas définir de permissions spécifiques en raison d'un bogue dans Kubernetes qui cause des problèmes si le service attend des permissions spécifiques telles que 0600. Comme solution de contournement, vous pouvez modifier le code du programme ou de l'application qui s'exécute à l'intérieur d'une ressource de charge de travail pour copier le fichier dans le répertoire /tmp et définir les autorisations appropriées.

Pour accéder aux données de liaison et les utiliser dans la variable d'environnement existante SERVICE_BINDING_ROOT, utilisez la fonction de langage intégrée du langage de programmation de votre choix qui peut lire les variables d'environnement.

Exemple : Utilisation du client Python

from pyservicebinding import binding
try:
    sb = binding.ServiceBinding()
except binding.ServiceBindingRootMissingError as msg:
    # log the error message and retry/exit
    print("SERVICE_BINDING_ROOT env var not set")
sb = binding.ServiceBinding()
bindings_list = sb.bindings("postgresql")

Dans l'exemple précédent, la variable bindings_list contient les données de liaison pour le type de service de base de données postgresql.

6.7.3. Projeter les données contraignantes

En fonction des exigences de votre charge de travail et de votre environnement, vous pouvez choisir de projeter les données de liaison sous forme de fichiers ou de variables d'environnement.

Conditions préalables

  • Vous comprenez les concepts suivants :

    • L'environnement et les exigences de votre charge de travail, et la manière dont elle fonctionne avec les services fournis.
    • Consommation des données de liaison dans votre ressource de charge de travail.
    • Configuration de la manière dont le chemin final pour la projection des données est calculé pour la méthode par défaut.
  • Les données de liaison sont exposées à partir du service d'appui.

Procédure

  1. Pour projeter les données de liaison sous forme de fichiers, déterminez le dossier de destination en vous assurant que la variable d'environnement SERVICE_BINDING_ROOT est présente dans le conteneur où s'exécute votre charge de travail.
  2. Pour projeter les données de liaison en tant que variables d'environnement, définissez la valeur du paramètre .spec.bindAsFiles sur false à partir de la ressource ServiceBinding dans la ressource personnalisée (CR).

6.7.4. Ressources complémentaires

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.