Lier une instance de service à une charge de travail d'application, de travail ou de fonction

Vous pouvez intégrer une instance de service IBM Cloud aux ressources d'un projet IBM Cloud® Code Engine en utilisant des liaisons de service.

Après avoir déterminé l'instance de service que vous souhaitez lier à votre charge de travail Code Engine et vous être assuré que vous avez configuré l'accès pour les liaisons de service, vous êtes prêt à lier l'instance de service à votre charge de travail d'application, de travail ou de fonction Code Engine.

Avant de commencer

L'accès aux liaisons de services doit être configuré avant de pouvoir lier une instance de service à une application, un travail ou une charge de travail de fonction sur le site Code Engine. Configurez l'accès aux liaisons de service selon que vous souhaitez que Code Engine crée et gère automatiquement l'identifiant de service pour vous ou que vous souhaitiez utiliser un identifiant de service que vous gérez.

Lorsque vous travaillez avec des liaisons de service, quelle est la relation entre l'identifiant du service, les secrets d'accès au service et les informations d'identification du service?

Dans Code Engine, une liaison de service est la relation entre une application, un travail ou une charge de travail de fonction et un autre service IBM Cloud. Code Engine utilise un identifiant de service pour créer des informations d'identification pour une instance de service IBM Cloud spécifique. Ces identifiants sont des identifiants de service et sont utilisés par votre projet Code Engine pour interagir avec l'instance de service. Les informations d'identification du service sont stockées dans un secret d'accès au service. Un secret d'accès au service est accessible par une application, un travail ou une fonction avec les informations d'identification du service et est utilisé pour interagir avec l'instance de service.

Lorsque vous créez votre instance de service IBM Cloud, vous pouvez choisir de créer l'identifiant de service pour cette instance de service. Ou, lorsque vous créez une liaison de service, vous pouvez choisir que Code Engine crée automatiquement l'identifiant de l'instance de service pour vous si vous avez configuré l'accès pour les liaisons de service.

Que vous choisissiez Code Engine pour créer automatiquement l'identifiant de service ou que vous créiez manuellement l'identifiant de service pour une instance de service spécifique, vous devez spécifier le rôle Identity and Access Management (IAM) pour l'identifiant de service. Le rôle que vous spécifiez définit l'interaction autorisée avec l'instance de service spécifique et l'application, le travail ou la fonction liés à Code Engine. Par exemple, si vous créez un lien de service de Code Engine vers une instance de service IBM Cloudant et que vous souhaitez que l'application, le travail ou la fonction ne lise que la base de données IBM Cloudant, sélectionnez le rôle Reader.

Lier une instance de service à une application ou un travail Code Engine à partir de la console

Vous pouvez créer un lien de service qui lie une instance de service existante à une application ou un travail Code Engine en utilisant la console. Pour créer une liaison de service pour une fonction, vous devez utiliser l'interface de programmation.

Liaison d'une instance de service avec un nouveau secret d'accès au service (avec un identifiant autogénéré Code Engine )

Créons une liaison de service pour lier une instance de service à une application ou à un travail avec un nouveau secret d'accès au service qui utilise un identifiant de service généré automatiquement par Code Engine. Pour cet exemple, créez une liaison de service à partir de la console pour l'application myapp et choisissez pour Code Engine de créer automatiquement l'identifiant de service pour une instance de service IBM Cloud. Avant que Code Engine puisse créer automatiquement l'identifiant de service, assurez-vous que vous avez configuré l'accès pour que Code Engine puisse créer et gérer automatiquement l'identifiant de service pour les liaisons de service.

  1. Une fois que votre projet a le statut « Actif », cliquez sur le nom de votre projet sur la page « Projets » d' Code Engine.
  2. Dans la page Vue d'ensemble, cliquez sur Liaisons de service.
  3. Dans la page Liaisons de services, cliquez sur Créer pour créer la liaison.
  4. Sélectionnez l'instance du service « IBM » que vous souhaitez associer à votre application ou tâche Code Engine.
  5. Sélectionnez l'application ou le travail Code Engine que vous souhaitez lier à l'instance de service; par exemple, sélectionnez l'application myapp.
  6. Spécifiez le secret d'accès au service à utiliser avec cette liaison. Le secret d'accès au service stocke les informations d'identification pour la liaison au service. Notez que tout identifiant de service précédemment défini pour votre instance de service spécifique, qui n'est pas associé à l'application ou à l'emploi que vous avez sélectionné, est répertorié. Si aucun secret d'accès au service n'existe actuellement, vous créez un nouveau secret. Si un secret d'accès au service existe, pour créer un nouveau secret d'accès au service avec un nouvel identifiant de service pour cette liaison, sélectionnez Nouveau secret. Procédez comme suit.
    1. Sélectionnez le rôle de l'identifiant de l'instance de service.
    2. Développez Options avancées.
    3. Pour que Code Engine crée automatiquement l'identifiant de service pour une instance de service IBM Cloud, sélectionnez Auto-generate.
    4. (facultatif) Spécifiez un préfixe personnalisé pour la liaison du service. Si vous ne spécifiez pas de préfixe personnalisé, Code Engine génère automatiquement un préfixe. Le préfixe est utilisé pour distinguer les variables d'environnement qui sont créées pour cette liaison de service.
  7. Cliquez sur « Ajouter » pour créer la liaison de service.
  8. Maintenant que votre liaison de service avec votre application ou votre travail est créée à partir de la console, vous pouvez afficher une liste de toutes les liaisons de service définies entre les instances de service et les applications et travaux Code Engine à partir de la page Liaisons de service.

Vous pouvez également créer et gérer des liaisons de service avec des applications et des travaux spécifiques à partir de la page de l'application ou du travail spécifique Code Engine dans la console. Pour utiliser les liaisons de service dans le contexte de votre application ou de votre travail, accédez à l'onglet Liaisons de service de votre application ou de votre travail spécifique.

Liaison d'une instance de service avec un nouveau secret d'accès au service (avec un justificatif d'identité existant)

Supposons que vous souhaitiez créer une liaison de service pour lier une instance de service à une application ou à un travail avec un nouveau secret d'accès au service qui utilise un justificatif d'identité de service existant. L'identifiant de service existant peut avoir été généré automatiquement par Code Engine, ou l'identifiant de service peut avoir été créé manuellement. Pour cet exemple, créez une liaison de service pour le travail myjob, avec un nouveau secret d'accès au service qui utilise un identifiant de service existant.

  1. Une fois que votre projet a le statut « Actif », cliquez sur le nom de votre projet sur la page « Projets » d' Code Engine.
  2. Dans la page Vue d'ensemble, cliquez sur Liaisons de service.
  3. Dans la page Liaisons de services, cliquez sur Créer pour créer la liaison.
  4. Sélectionnez l'instance du service « IBM » que vous souhaitez associer à votre application ou tâche Code Engine.
  5. Sélectionnez l'application ou le travail Code Engine que vous souhaitez lier à l'instance de service; par exemple, sélectionnez le travail myjob.
  6. Spécifiez le secret d'accès au service à utiliser avec cette liaison. Le secret d'accès au service stocke les informations d'identification pour la liaison au service. Notez que tout identifiant de service précédemment défini pour votre instance de service spécifique, qui n'est pas associé à l'application ou à l'emploi que vous avez sélectionné, est répertorié. Si aucun secret d'accès au service n'existe actuellement, vous créez un nouveau secret. Si un secret d'accès au service existe, pour créer un nouveau secret d'accès au service avec un nouvel identifiant de service pour cette liaison, sélectionnez Nouveau secret. Procédez comme suit.
    1. Sélectionnez le rôle de l'identifiant de l'instance de service.
    2. Développez Options avancées.
    3. Sélectionnez l'identifiant de service à utiliser avec ce secret d'accès au service.
    4. (facultatif) Spécifiez un préfixe personnalisé pour la liaison du service. Si vous ne spécifiez pas de préfixe personnalisé, Code Engine génère automatiquement un préfixe. Le préfixe est utilisé pour distinguer les variables d'environnement qui sont créées pour cette liaison de service.
  7. Cliquez sur « Ajouter » pour créer la liaison de service.
  8. Maintenant que votre liaison de service avec votre application ou votre travail est créée à partir de la console, vous pouvez afficher une liste de toutes les liaisons de service définies entre les instances de service et les applications et travaux Code Engine à partir de la page Liaisons de service.

Vous pouvez également créer et gérer des liaisons de service avec des applications et des travaux spécifiques à partir de la page de l'application ou du travail spécifique Code Engine dans la console. Pour utiliser les liaisons de service dans le contexte de votre application ou de votre travail, accédez à l'onglet Liaisons de service de votre application ou de votre travail spécifique.

Liaison d'une instance de service avec un secret d'accès au service existant

Vous pouvez réutiliser les secrets d'accès aux services dans les liaisons de services. Pour une instance de service IBM Cloud spécifique, vous pouvez réutiliser les secrets d'accès au service avec différentes applications ou tâches. Vous ne pouvez pas réutiliser un secret d'accès à un service pour la même application ou le même travail que celui pour lequel le secret d'accès à un service a été créé à l'origine. Étant donné que le justificatif de service est stocké dans le secret d'accès au service, il est important de tenir compte des points suivants :

  • Vous pouvez avoir plusieurs applications ou travaux liés à la même instance de service IBM Cloud avec le même secret d'accès au service.

  • Un secret d'accès à un service ne peut pas être réutilisé dans une liaison de service pour la même application ou le même travail. Toutefois, vous pouvez réutiliser le même secret d'accès au service dans une autre application ou un autre travail. Étant donné qu'un secret d'accès au service est associé à une instance de service IBM Cloud spécifique, vous ne pouvez réutiliser que le secret d'accès au service dans une autre application ou un autre travail, si vous vous liez à la même instance de service.

Créons une liaison de service pour lier une instance de service à un travail qui utilise un secret d'accès au service existant. Par exemple, créez une liaison de service pour le travail myjob et sélectionnez un secret d'accès au service existant pour une instance de service spécifique.

  1. Une fois que votre projet a le statut « Actif », cliquez sur le nom de votre projet sur la page « Projets » d' Code Engine.
  2. Dans la page Vue d'ensemble, cliquez sur Liaisons de service.
  3. Dans la page Liaisons de services, cliquez sur Créer pour créer la liaison.
  4. Sélectionnez l'instance du service « IBM » que vous souhaitez associer à votre application ou tâche Code Engine.
  5. Sélectionnez l'application ou le job « Code Engine » que vous souhaitez associer à l'instance du service.
  6. Vous pouvez réutiliser un justificatif d'identité existant pour le secret d'accès au service pour une liaison de service à une instance de service IBM Cloud spécifique avec une application ou un travail différent. Dans ce cas, sélectionnez Secret existant. Vous remarquerez que tout identifiant de service précédemment défini pour votre instance de service spécifique est répertorié, alors qu'il n'est pas associé à l'application ou à l'emploi que vous avez sélectionné. Procédez comme suit.
    1. Consultez la liste des secrets existants et sélectionnez le secret que vous souhaitez utiliser avec cette liaison de service.
    2. (facultatif) Spécifiez un préfixe personnalisé pour la liaison du service. Si vous ne spécifiez pas de préfixe personnalisé, Code Engine génère automatiquement un préfixe. Le préfixe est utilisé pour distinguer les variables d'environnement qui sont créées pour cette liaison de service.
  7. Cliquez sur « Ajouter » pour créer la liaison de service.
  8. Maintenant que votre liaison de service avec votre application ou votre travail est créée à partir de la console, vous pouvez afficher une liste de toutes les liaisons de service définies entre les instances de service et les applications et travaux Code Engine à partir de la page Liaisons de service.

Vous pouvez également créer et gérer des liaisons de service avec des applications et des travaux spécifiques à partir de la page de l'application ou du travail spécifique Code Engine dans la console. Pour utiliser les liaisons de service dans le contexte de votre application ou de votre travail, accédez à l'onglet Liaisons de service de votre application ou de votre travail spécifique.

Lier une instance de service à une application, un travail ou une fonction de Code Engine avec le CLI

Vous pouvez créer une liaison de service qui lie une instance de service existante à une application, un travail ou une fonction Code Engine à l'aide de l'interface CLI.

Avant de commencer

  • Créez et utilisez un projet.

  • Configurez votre environnement d'interface de ligne de commande Code Engine.

  • Créez l'instance de service que vous souhaitez associer à votre charge de travail « Code Engine ».

    Par exemple, pour créer une instance de service IBM Cloud Object Storage (plan Lite) :

    ibmcloud resource service-instance-create my-object-storage cloud-object-storage lite global -g Default
    
  • Créer une charge de travail « Code Engine ».

Liaison d'une instance de service avec de nouvelles données d'identification

  • Pour lier votre nouvelle instance de service à votre application Code Engine et générer de nouvelles données d'identification de service, utilisez la commande ibmcloud ce application bind.
  • Pour lier votre instance de service à un travail Code Engine, utilisez la commande ibmcloud ce job bind.
  • Pour lier votre instance de service à une fonction Code Engine, utilisez la commande ibmcloud ce function bind commande.

Pour créer une application à utiliser pour ces étapes, exécutez la commande suivante.

ibmcloud ce application create --name my-application --image icr.io/codeengine/hello
  1. Indiquez le nom de l'instance de service que vous souhaitez associer à votre application, tâche ou fonction. Vous pouvez trouver toutes les instances de service qui se trouvent dans votre compte pour votre groupe de ressources en cours en exécutant la commande ibmcloud resource service-instances ; par exemple,

    ibmcloud resource service-instances
    

    Exemple de sortie

    Name                               Location   State    Type               Resource Group ID
    my-object-storage                  global     active   service_instance   325d80be5d7945608f6d121712c96ee9
    
  2. Associez votre instance de service à votre application, tâche ou fonction Code Engine, puis générez de nouveaux identifiants de service avec le rôle de service par défaut. Le rôle de service par défaut est le rôle Manager (responsable) ou le premier rôle indiqué par le service si le rôle Manager n'est pas pris en charge. Dans l'exemple suivant, application bind la commande associe l'instance du service my-object-storage à l'application nommée my-application. De nouvelles données d'identification de service avec le rôle Manager (responsable) sont générées pour cette action de liaison.

    ibmcloud ce application bind --name my-application --service-instance my-object-storage
    

    Le tableau ci-dessous récapitule les options utilisées avec la commande application bind dans cet exemple. Pour plus d'informations sur la commande et ses options, voir la commande ibmcloud ce application bind.

    Options de commande
    Option Description
    --name Nom de l'application à lier. Cette valeur est obligatoire.
    --service-instance Spécifiez le nom d'une instance de service existante à lier à l'application. Cette valeur est obligatoire.

    Exemple de sortie

    Binding service instance...
    Status: Done
    Waiting for application revision to become ready...
    The Configuration is still working to reflect the latest desired specification.
    Traffic is not yet migrated to the latest revision.
    Ingress has not yet been reconciled.
    Waiting for load balancer to be ready.
    OK
    
  3. Vérifiez que les identifiants ont bien été générés à l'aide de la application get, le job get ou la function get. Dans l'exemple ci-après, vérifiez que les données d'identification qui ont été créées dans l'exemple précédent ont été créées.

    ibmcloud ce application get --name my-application
    

    Exemple de sortie

    [...]
    Service Bindings:
    Name                                         ID                                    Service Instance      Service Type          Role / Credential  Environment Variable Prefix
    my-application-app-ce-service-binding-abcde  abcde5d3-dfc3-4f52-b133-b869b5eabcde  my-object-storage     cloud-object-storag   Writer             CLOUD_OBJECT_STORAGE
    [...]
    

Associer une instance de service à un rôle spécifique

  • Pour lier votre nouvelle instance de service à votre application Code Engine et générer de nouvelles données d'identification de service, utilisez la commande ibmcloud ce application bind.
  • Pour lier votre instance de service à un travail Code Engine, utilisez la commande ibmcloud ce job bind.
  • Pour lier votre instance de service à une fonction Code Engine, utilisez la commande ibmcloud ce function bind commande.

Pour créer une fonction à utiliser pour ces étapes, exécutez la commande suivante.

ibmcloud ce function create --name myfun --runtime nodejs --build-source https://github.com/IBM/CodeEngine --build-context-dir /helloworld-samples/function-codebundle-nodejs
  1. Indiquez le nom de l'instance de service que vous souhaitez associer à votre application, tâche ou fonction. Vous pouvez trouver toutes les instances de service qui se trouvent dans votre compte pour votre groupe de ressources en cours en exécutant la commande ibmcloud resource service-instances ; par exemple,

    ibmcloud resource service-instances
    

    Exemple de sortie

    Name                               Location   State    Type               Resource Group ID
    my-object-storage                  global     active   service_instance   325d80be5d7945608f6d121712c96ee9
    
  2. Associez votre instance de service à votre application, tâche ou fonction Code Engine, puis générez de nouveaux identifiants de service associés à un rôle de service spécifique. Pour plus d'informations sur les rôles de service IAM, voir la rubrique décrivant les rôles d'accès au service. Dans l'exemple suivant, la function bind commande lie l’instance du service « my-object-storage » à la fonction « my-function » à l’aide du rôle de service « Writer ». De nouvelles données d'identification de service avec le rôle Writer (auteur) est générée pour cette action de liaison. En spécifiant l'option --prefix, un préfixe est ajouté aux variables d'environnement créées par les liaisons de service.

    ibmcloud ce function bind --name my-function --service-instance my-object-storage --role Writer --prefix MYPREFIX
    

    Le tableau ci-dessous récapitule les options utilisées avec la commande function bind dans cet exemple. Pour plus d'informations sur la commande et ses options, voir la commande ibmcloud ce function bind.

    Options de commande
    Option Description
    --name Nom de la fonction à lier. Cette valeur est obligatoire.
    --prefix Préfixe des variables d'environnement créées pour cette liaison de service. Par exemple, --prefix MYPREFIX ajoute le préfixe MYPREFIX à toutes les variables d'environnement créées pour cette liaison de service. Pour plus d'informations, voir la méthode des préfixes.
    --service-instance Indiquez le nom d'une instance de service existante à associer à la fonction. Cette valeur est obligatoire.
    --role Nom d'un rôle de service pour les nouvelles données d'identification de service créées pour cette liaison de service. Les valeurs valides sont Reader, Writer, Manager ou un rôle propre au service. Si l'option --role n'est pas spécifiée, la valeur par défaut est Manager ou le premier rôle fourni par le service si Manager n'est pas pris en charge. Cette option est ignorée si --service-credential est spécifié.

    Exemple de sortie

    Binding service instance...
    Status: Done
    OK
    
  3. Vérifiez que les identifiants ont bien été générés à l'aide de la application get, la job get commande ou la function get commande. Dans l'exemple ci-après, vérifiez que les données d'identification qui ont été créées dans l'exemple précédent ont été créées.

    ibmcloud ce function get --name my-function
    

    Exemple de sortie

    [...]
    Service Bindings:
    Name                                  ID                                    Service Instance      Service Type          Role / Credential  Environment Variable Prefix
    my-function-ce-service-binding-abcde  abcde5d3-dfc3-4f52-b133-b869b5eabcde  my-object-storage     cloud-object-storage  Writer             MYPREFIX                     30s
    [...]
    

Liaison d'une instance de service avec des données d'identification existantes

Si vous avez déjà créé des données d'identification pour votre instance de service et souhaitez les utiliser pour votre liaison de service, ajoutez l'option --service-credentials.

Pour créer un travail à utiliser pour ces étapes, exécutez la commande suivante.

ibmcloud ce job create --name my-job --image icr.io/codeengine/hello
  1. Indiquez le nom de l'instance de service que vous souhaitez associer à votre application, tâche ou fonction. Vous pouvez trouver toutes les instances de service qui se trouvent dans votre compte pour votre groupe de ressources en cours en exécutant la commande ibmcloud resource service-instances ; par exemple,

    ibmcloud resource service-instances
    

    Exemple de sortie

    Name                               Location   State    Type               Resource Group ID
    my-object-storage                  global     active   service_instance   325d80be5d7945608f6d121712c96ee9
    
  2. Recherchez les données d'identification de l'instance de service.

    ibmcloud resource service-keys --instance-name INSTANCENAME
    

    Exemple de sortie

    Name                State    Created At
    my-cos-credential   active   Tue Mar  2 01:15:33 UTC 2021
    

    Pour afficher les détails de données d'identification de service, exécutez la commande ibmcloud resource service-key KEYNAME. Vous pouvez rechercher toutes les clés de service dans votre groupe de ressources en exécutant ibmcloud resource service-keys.

  3. Associez l'instance du service à l'application, au job ou à la fonction à l'aide des identifiants existants. Par exemple, la commande**job bind** suivante lie l'instance de servicemy-object-storage avec les données d'identification de service existantes appelées my-cos-credentialà un travail existant appelémyjob.

    ibmcloud ce job bind --name myjob --service-instance my-object-storage --service-credential my-cos-credential
    

    Le tableau ci-dessous récapitule les options utilisées avec la commande job bind dans cet exemple. Pour plus d'informations sur la commande et ses options, voir la commande ibmcloud ce job bind.

    Options de commande
    Option Description
    --name Nom du travail à lier. Cette valeur est obligatoire.
    --service-instance Indiquez le nom d'une instance de service existante à lier au travail. Cette valeur est obligatoire.
    --service-credential Nom des données d'identification de service existantes à lier.
  4. Vérifiez que les identifiants ont bien été générés à l'aide de la application get, le job get ou la function get. Dans l'exemple ci-après, vérifiez que les données d'identification qui ont été créées dans l'exemple précédent ont été créées.

    ibmcloud ce job get --name myjob
    

    Exemple de sortie

    [...]
    Service Bindings:
    Name                                 ID                                    Service Instance      Service Type          Role / Credential  Environment Variable Prefix
    myjob-ce-service-binding-abcde       abcde645-d3f9-407d-b964-6c3ae69abcde  my-object-storage  cloud-object-storage  my-cos-credential  CLOUD_OBJECT_STORAGE
    [...]
    

Annulation de la liaison d'instances de service

La dissociation d'instances de service d'une application, d'un travail ou d'une fonction supprime les liaisons de service existantes.

Lorsque vous délier (ou supprimer) une liaison de service, vous supprimez l'association de l'application, du travail ou de la charge de travail de la fonction avec le secret d'accès au service, de sorte que la charge de travail n'a plus accès au service IBM Cloud précédemment lié.

Une fois qu'une liaison de service est définie entre votre application et une instance de service, la liaison de service est active tant que l'application et l'instance de service sont actives, ou que vous n'avez pas effectué une opération de déliaison pour supprimer la liaison de service. Si l'instance de service est supprimée, vous devrez supprimer manuellement la liaison de service.

Désenregistrer une instance de service de la console

  1. Depuis la page « Projets » d' Code Engine, accédez à votre projet.
  2. Dans la page Vue d'ensemble, cliquez sur Liaisons de service pour afficher une liste de toutes les liaisons de service définies. Ou, si vous souhaitez gérer les liaisons de service dans le contexte de votre application ou de votre travail, dans la page Vue d'ensemble, cliquez sur Applications ou Travaux et cliquez sur le nom de votre application ou de votre travail. À partir de la page de l'application ou du travail spécifique, accédez à l'onglet Liaisons de service.
  3. Dans la liste des liaisons de service, supprimez la liaison que vous souhaitez retirer de votre application ou de votre tâche. Cliquez sur l'icône Actions > Supprimer pour supprimer la liaison de service.

Dissociation d'une instance de service avec l'interface de gestion

  1. Recherchez la liaison de service que vous souhaitez supprimer à l'aide de la application get, job get ou la function get ; par exemple,

    ibmcloud ce application get --name my-application
    

    Exemple de sortie

    [...]
    Service Bindings:
    Name                                         ID                                    Service Instance      Service Type          Role / Credential  Environment Variable Prefix
    my-application-app-ce-service-binding-abcde  abcde5d3-dfc3-4f52-b133-b869b5eabcde  my-object-storage     cloud-object-storage  Writer             CLOUD_OBJECT_STORAGE
    [...]
    
  2. Supprimez la liaison de service à l'aide de la touche application unbind, job unbind, ou function unbind pour supprimer la liaison de service.

    • Pour retirer une seule liaison, spécifiez les options --name et --binding.
        ibmcloud ce application unbind --name APPLICATION_NAME --binding BINDING_NAME
        ```
    * Pour annuler la liaison de toutes les instances de service, utilisez l'option`--all`.
    
    ```txt {: pre}
        ibmcloud ce job unbind --name JOB_NAME --all
        ```