Référencement de secrets et de mappes de configuration en tant que fichiers montés (Interface CLI)

Dans Code Engine, après avoir créé des secrets et des mappes de configuration, les informations stockées sous forme de paires clé-valeur peuvent être consommées par votre application ou votre charge de travail sous forme de fichier monté. Vous ne pouvez pas utiliser cette méthode avec des fonctions.

L'utilisation de secrets et de mappes de configuration en tant que fichiers montés est similaire à l'utilisation de secrets et de mappes de configuration en tant que variables d'environnement.

Lorsque vous utilisez des secrets, les données sont sauvegardées sous forme de chaîne codée. Les données ne sont pas codées lorsqu'elles sont ajoutées à l'environnement en tant que variable d'environnement ou sous forme de fichier monté.

Référencement d'un secret en tant que fichier monté via l'interface de ligne de commande

Dans ce scénario, créez un secret puis référencez le secret sous la forme d'un fichier monté lorsque vous exécutez une application, qui utilise l'image icr.io/codeengine/ce-secret-vol.

L'exemple d'image, icr.io/codeengine/ce-secret-vol, lit chaque fichier dans le répertoire /mysecrets et imprime le nom du fichier et son contenu dans la sortie standard pour chaque demande de sorte que la sortie se trouve dans les journaux de l'application. Pour plus d'informations sur ce modèle d'application, voir Exemple de secrets en tant que volumes(secrets-vol)dans le référentiel IBM Cloud Code Engine GitHub.

Ce scénario utilise un secret, mais vous pouvez effectuer les mêmes étapes pour référencer une mappe de configuration en tant que fichier monté en remplaçant configmap par secret dans les commandes.

  1. Créez un secret nommé mysecret, puis spécifiez les paires clé-valeur pour le secret à l'aide de l'option --from-literal. Exemple :

    ibmcloud ce secret create -n mysecret --from-literal apikey=abcdefgh
    
  2. Créez l'application myapp qui utilise l'image icr.io/codeengine/ce-secret-vol. Utilisez l'option --mount-secret pour monter le contenu du secret mysecret ou l'ajouter à l'application dans le répertoire /mysecrets. Avec l'option --min-scale=1, l'application a toujours une instance en cours d'exécution et n'est pas mise à l'échelle à zéro. Le fait de configurer l'application afin de toujours avoir une instance en cours d'exécution est utile lorsque vous affichez les journaux. Par exemple :

    ibmcloud ce app create --name myapp --image icr.io/codeengine/ce-secret-vol --mount-secret /mysecrets=mysecret --min-scale 1
    

    Exemple de sortie

    Creating application 'myapp'...
    [...]
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce application get -n myapp' to check the application status.
    OK
    
    https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    
  3. Copiez l'URL depuis la sortie précédente et appelez l'application avec curl. Exemple :

    curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    
  4. Affichez les journaux depuis votre application. Dans cet exemple, l'application myapp utilise l'exemple d'image icr.io/codeengine/ce-secret-vol. Cette application lit chaque fichier dans le répertoire /mysecrets et imprime le nom du fichier et son contenu dans la sortie standard pour chaque demande, afin que la sortie soit contenue dans les journaux de l'application. Le nom du fichier est apikey.

    ibmcloud ce app logs --app myapp
    

    Exemple de sortie

    Getting logs for all instances of application 'myapp'...
    OK
    
    myapp-b3gxd-1-deployment-6f45dcf7f4-nw59z/user-container:
    Listening on port 8080
    apikey: abcdefgh
    
  5. Mettez à jour le secret mysecret afin de changer la valeur pour les paires clé-valeur apikey. Exemple :

    ibmcloud ce secret update -n mysecret --from-literal apikey=qrst
    
  6. Appelez à nouveau l'application.

    curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    
  7. Affichez les journaux depuis votre application.

    ibmcloud ce app logs --app myapp
    

    Exemple de sortie

    Getting logs for all instances of application 'myapp'...
    OK
    
    myapp-b3gxd-1-deployment-6f45dcf7f4-nw59z/user-container:
    Listening on port 8080
    apikey: abcdefgh
    apikey: qrst
    

Vous avez ajouté des données stockées dans des secrets (ou des mappes de configuration) à votre application sous la forme d'un fichier monté, puis vous avez mis à jour les données stockées dans le secret. Il n'est pas nécessaire de redémarrer l'application pour que celle-ci utilise le secret référencé mis à jour.