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.

Important

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

  1. Exécutez la commande suivante dans le répertoire du projet de la fonction :

    $ kn func config
    Copy to Clipboard

    Vous pouvez également spécifier le répertoire du projet de la fonction à l'aide de l'option --path ou -p.

  2. 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
    ? 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

    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
    Copy to Clipboard
  3. Facultatif. Déployez la fonction pour que les modifications soient prises en compte :

    $ kn func deploy -p test
    Copy to Clipboard

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>]
    Copy to Clipboard
  • Pour ajouter des variables d'environnement à la configuration de la fonction :

    $ kn func config envs add [-p <function-project-path>]
    Copy to Clipboard
  • Pour supprimer les variables d'environnement de la configuration de la fonction :

    $ kn func config envs remove [-p <function-project-path>]
    Copy to Clipboard
  • Pour dresser la liste des volumes configurés :

    $ kn func config volumes [-p <function-project-path>]
    Copy to Clipboard
  • Pour ajouter un volume à la configuration des fonctions :

    $ kn func config volumes add [-p <function-project-path>]
    Copy to Clipboard
  • Pour supprimer un volume de la configuration des fonctions :

    $ kn func config volumes remove [-p <function-project-path>]
    Copy to Clipboard

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

  1. Ouvrez le fichier func.yaml de votre fonction.
  2. 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
    Copy to Clipboard
    • 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
      Copy to Clipboard
  3. 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

  1. Ouvrez le fichier func.yaml de votre fonction.
  2. 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
    Copy to Clipboard
    • 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
      Copy to Clipboard
  3. 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

  1. Ouvrez le fichier func.yaml de votre fonction.
  2. 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 }}'
    Copy to Clipboard
    • 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 }}'
      Copy to Clipboard
  3. 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

  1. Ouvrez le fichier func.yaml de votre fonction.
  2. 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 }}'
    Copy to Clipboard
    • 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 }}'
      Copy to Clipboard
  3. 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

  1. Ouvrez le fichier func.yaml de votre fonction.
  2. 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 }}' 
    1
    Copy to Clipboard
    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 }}'
    Copy to Clipboard
  3. 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

  1. Ouvrez le fichier func.yaml de votre fonction.
  2. 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 }}' 
    1
    Copy to Clipboard
    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 }}'
    Copy to Clipboard
  3. Enregistrer le fichier.
Retour au début
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. Découvrez nos récentes mises à jour.

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 le Blog 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.

Theme

© 2025 Red Hat