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 :
- Par défaut, sous forme de fichiers.
-
En tant que variables d'environnement, après avoir configuré le paramètre
.spec.bindAsFiles
à partir de la ressourceServiceBinding
.
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")
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 :
SERVICE_BINDING_ROOT | Chemin final |
---|---|
Non disponible |
|
|
|
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).
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
-
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. -
Pour projeter les données de liaison en tant que variables d'environnement, définissez la valeur du paramètre
.spec.bindAsFiles
surfalse
à partir de la ressourceServiceBinding
dans la ressource personnalisée (CR).