6.10. Accès aux secrets et aux cartes de configuration à partir de fonctions
Une fois que vos fonctions ont été déployées dans le cluster, elles peuvent accéder aux données stockées dans les secrets et les cartes de configuration. Ces données peuvent être montées en tant que volumes ou assignées à des variables d'environnement. Vous pouvez configurer cet accès de manière interactive en utilisant le CLI Knative, ou manuellement en éditant le fichier YAML de configuration de la fonction.
Pour accéder aux secrets et aux cartes de configuration, la fonction doit être déployée sur le cluster. Cette fonctionnalité n'est pas disponible pour une fonction exécutée localement.
Si une valeur de secret ou de carte de configuration n'est pas accessible, le déploiement échoue avec un message d'erreur spécifiant les valeurs inaccessibles.
6.10.1. Modifier l'accès des fonctions aux secrets et aux cartes de configuration de manière interactive
Vous pouvez gérer les secrets et les cartes de configuration auxquels votre fonction accède en utilisant l'utilitaire interactif kn func config
. Les opérations disponibles comprennent l'énumération, l'ajout et la suppression des valeurs stockées dans les cartes de configuration et les secrets en tant que variables d'environnement, ainsi que l'énumération, l'ajout et la suppression des volumes. Cette fonctionnalité vous permet de gérer les données stockées sur le cluster qui sont accessibles à votre fonction.
Conditions préalables
- L'opérateur OpenShift Serverless et Knative Serving sont installés sur le cluster.
-
Vous avez installé le CLI Knative (
kn
). - Vous avez créé une fonction.
Procédure
Exécutez la commande suivante dans le répertoire du projet de la fonction :
kn func config
$ kn func config
Copy to Clipboard Copied! Vous pouvez également spécifier le répertoire du projet de la fonction à l'aide de l'option
--path
ou-p
.Utilisez l'interface interactive pour effectuer l'opération nécessaire. Par exemple, l'utilisation de l'utilitaire pour dresser la liste des volumes configurés produit un résultat similaire à celui-ci :
kn func config
$ kn func config ? What do you want to configure? Volumes ? What operation do you want to perform? List Configured Volumes mounts: - Secret "mysecret" mounted at path: "/workspace/secret" - Secret "mysecret2" mounted at path: "/workspace/secret2"
Copy to Clipboard Copied! Ce schéma montre toutes les opérations disponibles dans l'utilitaire interactif et comment y accéder :
kn func config ├─> Environment variables │ ├─> Add │ │ ├─> ConfigMap: Add all key-value pairs from a config map │ │ ├─> ConfigMap: Add value from a key in a config map │ │ ├─> Secret: Add all key-value pairs from a secret │ │ └─> Secret: Add value from a key in a secret │ ├─> List: List all configured environment variables │ └─> Remove: Remove a configured environment variable └─> Volumes ├─> Add │ ├─> ConfigMap: Mount a config map as a volume │ └─> Secret: Mount a secret as a volume ├─> List: List all configured volumes └─> Remove: Remove a configured volume
kn func config ├─> Environment variables │ ├─> Add │ │ ├─> ConfigMap: Add all key-value pairs from a config map │ │ ├─> ConfigMap: Add value from a key in a config map │ │ ├─> Secret: Add all key-value pairs from a secret │ │ └─> Secret: Add value from a key in a secret │ ├─> List: List all configured environment variables │ └─> Remove: Remove a configured environment variable └─> Volumes ├─> Add │ ├─> ConfigMap: Mount a config map as a volume │ └─> Secret: Mount a secret as a volume ├─> List: List all configured volumes └─> Remove: Remove a configured volume
Copy to Clipboard Copied! Facultatif. Déployez la fonction pour que les modifications soient prises en compte :
kn func deploy -p test
$ kn func deploy -p test
Copy to Clipboard Copied!
6.10.2. Modifier l'accès des fonctions aux secrets et aux cartes de configuration de manière interactive en utilisant des commandes spécialisées
Chaque fois que vous lancez l'utilitaire kn func config
, vous devez parcourir l'ensemble de la boîte de dialogue pour sélectionner l'opération dont vous avez besoin, comme indiqué dans la section précédente. Pour gagner du temps, vous pouvez exécuter directement une opération spécifique en lançant une forme plus spécifique de la commande kn func config
:
Pour dresser la liste des variables d'environnement configurées :
kn func config envs [-p <function-project-path>]
$ kn func config envs [-p <function-project-path>]
Copy to Clipboard Copied! Pour ajouter des variables d'environnement à la configuration de la fonction :
kn func config envs add [-p <function-project-path>]
$ kn func config envs add [-p <function-project-path>]
Copy to Clipboard Copied! Pour supprimer les variables d'environnement de la configuration de la fonction :
kn func config envs remove [-p <function-project-path>]
$ kn func config envs remove [-p <function-project-path>]
Copy to Clipboard Copied! Pour dresser la liste des volumes configurés :
kn func config volumes [-p <function-project-path>]
$ kn func config volumes [-p <function-project-path>]
Copy to Clipboard Copied! Pour ajouter un volume à la configuration des fonctions :
kn func config volumes add [-p <function-project-path>]
$ kn func config volumes add [-p <function-project-path>]
Copy to Clipboard Copied! Pour supprimer un volume de la configuration des fonctions :
kn func config volumes remove [-p <function-project-path>]
$ kn func config volumes remove [-p <function-project-path>]
Copy to Clipboard Copied!
6.10.3. Ajout d'un accès fonctionnel aux secrets et aux cartes de configuration manuellement
Vous pouvez ajouter manuellement la configuration pour accéder aux secrets et aux cartes de configuration à votre fonction. Cela peut être préférable à l'utilisation de l'utilitaire et des commandes interactives kn func config
, par exemple lorsque vous disposez d'un extrait de configuration existant.
6.10.3.1. Montage d'un secret en tant que volume
Vous pouvez monter un secret comme un volume. Une fois qu'un secret est monté, vous pouvez y accéder à partir de la fonction comme un fichier normal. Cela vous permet de stocker sur le cluster des données nécessaires à la fonction, par exemple une liste d'URI auxquels la fonction doit accéder.
Conditions préalables
- L'opérateur OpenShift Serverless et Knative Serving sont installés sur le cluster.
-
Vous avez installé le CLI Knative (
kn
). - Vous avez créé une fonction.
Procédure
-
Ouvrez le fichier
func.yaml
de votre fonction. Pour chaque secret que vous souhaitez monter en tant que volume, ajoutez le fichier YAML suivant à la section
volumes
:name: test namespace: "" runtime: go ... volumes: - secret: mysecret path: /workspace/secret
name: test namespace: "" runtime: go ... volumes: - secret: mysecret path: /workspace/secret
Copy to Clipboard Copied! -
Remplacer
mysecret
par le nom du secret cible. Remplacez
/workspace/secret
par le chemin où vous souhaitez monter le secret.Par exemple, pour monter le secret
addresses
, utilisez le langage YAML suivant :name: test namespace: "" runtime: go ... volumes: - configMap: addresses path: /workspace/secret-addresses
name: test namespace: "" runtime: go ... volumes: - configMap: addresses path: /workspace/secret-addresses
Copy to Clipboard Copied!
-
Remplacer
- Sauvegarder la configuration.
6.10.3.2. Montage d'une carte de configuration en tant que volume
Vous pouvez monter une carte de configuration comme un volume. Une fois qu'une carte de configuration est montée, vous pouvez y accéder à partir de la fonction comme un fichier normal. Cela vous permet de stocker sur le cluster les données nécessaires à la fonction, par exemple une liste d'URI auxquels la fonction doit accéder.
Conditions préalables
- L'opérateur OpenShift Serverless et Knative Serving sont installés sur le cluster.
-
Vous avez installé le CLI Knative (
kn
). - Vous avez créé une fonction.
Procédure
-
Ouvrez le fichier
func.yaml
de votre fonction. Pour chaque carte de configuration que vous souhaitez monter en tant que volume, ajoutez le fichier YAML suivant à la section
volumes
:name: test namespace: "" runtime: go ... volumes: - configMap: myconfigmap path: /workspace/configmap
name: test namespace: "" runtime: go ... volumes: - configMap: myconfigmap path: /workspace/configmap
Copy to Clipboard Copied! -
Remplacez
myconfigmap
par le nom de la carte de configuration cible. Remplacez
/workspace/configmap
par le chemin où vous souhaitez monter la carte de configuration.Par exemple, pour monter la carte de configuration
addresses
, utilisez le fichier YAML suivant :name: test namespace: "" runtime: go ... volumes: - configMap: addresses path: /workspace/configmap-addresses
name: test namespace: "" runtime: go ... volumes: - configMap: addresses path: /workspace/configmap-addresses
Copy to Clipboard Copied!
-
Remplacez
- Sauvegarder la configuration.
6.10.3.3. Définition d'une variable d'environnement à partir d'une valeur clé définie dans un secret
Vous pouvez définir une variable d'environnement à partir d'une valeur clé définie comme un secret. Une valeur précédemment stockée dans un secret peut alors être accédée en tant que variable d'environnement par la fonction au moment de l'exécution. Cela peut être utile pour accéder à une valeur stockée dans un secret, comme l'identifiant d'un utilisateur.
Conditions préalables
- L'opérateur OpenShift Serverless et Knative Serving sont installés sur le cluster.
-
Vous avez installé le CLI Knative (
kn
). - Vous avez créé une fonction.
Procédure
-
Ouvrez le fichier
func.yaml
de votre fonction. Pour chaque valeur d'une paire clé-valeur secrète que vous souhaitez affecter à une variable d'environnement, ajoutez le fichier YAML suivant à la section
envs
:name: test namespace: "" runtime: go ... envs: - name: EXAMPLE value: '{{ secret:mysecret:key }}'
name: test namespace: "" runtime: go ... envs: - name: EXAMPLE value: '{{ secret:mysecret:key }}'
Copy to Clipboard Copied! -
Remplacez
EXAMPLE
par le nom de la variable d'environnement. -
Remplacer
mysecret
par le nom du secret cible. Remplacer
key
par la clé correspondant à la valeur cible.Par exemple, pour accéder à l'identifiant de l'utilisateur stocké dans
userdetailssecret
, utilisez le langage YAML suivant :name: test namespace: "" runtime: go ... envs: - value: '{{ configMap:userdetailssecret:userid }}'
name: test namespace: "" runtime: go ... envs: - value: '{{ configMap:userdetailssecret:userid }}'
Copy to Clipboard Copied!
-
Remplacez
- Sauvegarder la configuration.
6.10.3.4. Définition d'une variable d'environnement à partir d'une valeur clé définie dans une carte de configuration
Vous pouvez définir une variable d'environnement à partir d'une valeur clé définie dans une carte de configuration. Une valeur précédemment stockée dans une carte de configuration peut alors être accédée en tant que variable d'environnement par la fonction au moment de l'exécution. Cela peut être utile pour accéder à une valeur stockée dans une carte de configuration, telle que l'identifiant d'un utilisateur.
Conditions préalables
- L'opérateur OpenShift Serverless et Knative Serving sont installés sur le cluster.
-
Vous avez installé le CLI Knative (
kn
). - Vous avez créé une fonction.
Procédure
-
Ouvrez le fichier
func.yaml
de votre fonction. Pour chaque valeur d'une paire clé-valeur de la carte de configuration que vous souhaitez affecter à une variable d'environnement, ajoutez le fichier YAML suivant à la section
envs
:name: test namespace: "" runtime: go ... envs: - name: EXAMPLE value: '{{ configMap:myconfigmap:key }}'
name: test namespace: "" runtime: go ... envs: - name: EXAMPLE value: '{{ configMap:myconfigmap:key }}'
Copy to Clipboard Copied! -
Remplacez
EXAMPLE
par le nom de la variable d'environnement. -
Remplacez
myconfigmap
par le nom de la carte de configuration cible. Remplacer
key
par la clé correspondant à la valeur cible.Par exemple, pour accéder à l'identifiant de l'utilisateur stocké dans
userdetailsmap
, utilisez le langage YAML suivant :name: test namespace: "" runtime: go ... envs: - value: '{{ configMap:userdetailsmap:userid }}'
name: test namespace: "" runtime: go ... envs: - value: '{{ configMap:userdetailsmap:userid }}'
Copy to Clipboard Copied!
-
Remplacez
- Sauvegarder la configuration.
6.10.3.5. Définition de variables d'environnement à partir de toutes les valeurs définies dans un secret
Vous pouvez définir une variable d'environnement à partir de toutes les valeurs définies dans un secret. Les valeurs précédemment stockées dans un secret peuvent alors être accédées en tant que variables d'environnement par la fonction au moment de l'exécution. Cela peut être utile pour accéder simultanément à une collection de valeurs stockées dans un secret, par exemple, un ensemble de données relatives à un utilisateur.
Conditions préalables
- L'opérateur OpenShift Serverless et Knative Serving sont installés sur le cluster.
-
Vous avez installé le CLI Knative (
kn
). - Vous avez créé une fonction.
Procédure
-
Ouvrez le fichier
func.yaml
de votre fonction. Pour chaque secret pour lequel vous souhaitez importer toutes les paires clé-valeur en tant que variables d'environnement, ajoutez le YAML suivant à la section
envs
:name: test namespace: "" runtime: go ... envs: - value: '{{ secret:mysecret }}'
name: test namespace: "" runtime: go ... envs: - value: '{{ secret:mysecret }}'
1 Copy to Clipboard Copied! - 1
- Remplacer
mysecret
par le nom du secret cible.
Par exemple, pour accéder à toutes les données de l'utilisateur qui sont stockées dans
userdetailssecret
, utilisez le langage YAML suivant :name: test namespace: "" runtime: go ... envs: - value: '{{ configMap:userdetailssecret }}'
name: test namespace: "" runtime: go ... envs: - value: '{{ configMap:userdetailssecret }}'
Copy to Clipboard Copied! - Sauvegarder la configuration.
6.10.3.6. Définition de variables d'environnement à partir de toutes les valeurs définies dans une carte de configuration
Vous pouvez définir une variable d'environnement à partir de toutes les valeurs définies dans une carte de configuration. Les valeurs précédemment stockées dans une carte de configuration peuvent alors être accédées en tant que variables d'environnement par la fonction au moment de l'exécution. Cela peut être utile pour accéder simultanément à une collection de valeurs stockées dans une carte de configuration, par exemple, un ensemble de données relatives à un utilisateur.
Conditions préalables
- L'opérateur OpenShift Serverless et Knative Serving sont installés sur le cluster.
-
Vous avez installé le CLI Knative (
kn
). - Vous avez créé une fonction.
Procédure
-
Ouvrez le fichier
func.yaml
de votre fonction. Pour chaque carte de configuration pour laquelle vous souhaitez importer toutes les paires clé-valeur en tant que variables d'environnement, ajoutez le YAML suivant à la section
envs
:name: test namespace: "" runtime: go ... envs: - value: '{{ configMap:myconfigmap }}'
name: test namespace: "" runtime: go ... envs: - value: '{{ configMap:myconfigmap }}'
1 Copy to Clipboard Copied! - 1
- Remplacez
myconfigmap
par le nom de la carte de configuration cible.
Par exemple, pour accéder à toutes les données de l'utilisateur qui sont stockées dans
userdetailsmap
, utilisez le langage YAML suivant :name: test namespace: "" runtime: go ... envs: - value: '{{ configMap:userdetailsmap }}'
name: test namespace: "" runtime: go ... envs: - value: '{{ configMap:userdetailsmap }}'
Copy to Clipboard Copied! - Enregistrer le fichier.