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
- Créez un projet.
- Créez une charge de travail Code Engine pour vous lier à votre instance de service. La charge de travail que vous souhaitez lier à l'instance de service doit exister.
- Créez l'instance de service que vous souhaitez associer à votre charge de travail « Code Engine ».
- Configurer l'accès aux liaisons de service.
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.
- Une fois que votre projet a le statut « Actif », cliquez sur le nom de votre projet sur la page « Projets » d' Code Engine.
- Dans la page Vue d'ensemble, cliquez sur Liaisons de service.
- Dans la page Liaisons de services, cliquez sur Créer pour créer la liaison.
- Sélectionnez l'instance du service « IBM » que vous souhaitez associer à votre application ou tâche Code Engine.
- Sélectionnez l'application ou le travail Code Engine que vous souhaitez lier à l'instance de service; par exemple, sélectionnez l'application
myapp. - 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.
- Sélectionnez le rôle de l'identifiant de l'instance de service.
- Développez Options avancées.
- Pour que Code Engine crée automatiquement l'identifiant de service pour une instance de service IBM Cloud, sélectionnez
Auto-generate. - (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.
- Cliquez sur « Ajouter » pour créer la liaison de service.
- 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.
- Une fois que votre projet a le statut « Actif », cliquez sur le nom de votre projet sur la page « Projets » d' Code Engine.
- Dans la page Vue d'ensemble, cliquez sur Liaisons de service.
- Dans la page Liaisons de services, cliquez sur Créer pour créer la liaison.
- Sélectionnez l'instance du service « IBM » que vous souhaitez associer à votre application ou tâche Code Engine.
- Sélectionnez l'application ou le travail Code Engine que vous souhaitez lier à l'instance de service; par exemple, sélectionnez le travail
myjob. - 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.
- Sélectionnez le rôle de l'identifiant de l'instance de service.
- Développez Options avancées.
- Sélectionnez l'identifiant de service à utiliser avec ce secret d'accès au service.
- (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.
- Cliquez sur « Ajouter » pour créer la liaison de service.
- 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.
- Une fois que votre projet a le statut « Actif », cliquez sur le nom de votre projet sur la page « Projets » d' Code Engine.
- Dans la page Vue d'ensemble, cliquez sur Liaisons de service.
- Dans la page Liaisons de services, cliquez sur Créer pour créer la liaison.
- Sélectionnez l'instance du service « IBM » que vous souhaitez associer à votre application ou tâche Code Engine.
- Sélectionnez l'application ou le job « Code Engine » que vous souhaitez associer à l'instance du service.
- 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.
- Consultez la liste des secrets existants et sélectionnez le secret que vous souhaitez utiliser avec cette liaison de service.
- (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.
- Cliquez sur « Ajouter » pour créer la liaison de service.
- 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
-
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 bindcommande.
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
-
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-instancesExemple de sortie
Name Location State Type Resource Group ID my-object-storage global active service_instance 325d80be5d7945608f6d121712c96ee9 -
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 bindla commande associe l'instance du servicemy-object-storageà l'application nomméemy-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-storageLe tableau ci-dessous récapitule les options utilisées avec la commande
application binddans cet exemple. Pour plus d'informations sur la commande et ses options, voir la commandeibmcloud ce application bind.Options de commande Option Description --nameNom de l'application à lier. Cette valeur est obligatoire. --service-instanceSpé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 -
Vérifiez que les identifiants ont bien été générés à l'aide de la
application get, lejob getou lafunction 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-applicationExemple 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 bindcommande.
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
-
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-instancesExemple de sortie
Name Location State Type Resource Group ID my-object-storage global active service_instance 325d80be5d7945608f6d121712c96ee9 -
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 bindcommande 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 MYPREFIXLe tableau ci-dessous récapitule les options utilisées avec la commande
function binddans cet exemple. Pour plus d'informations sur la commande et ses options, voir la commandeibmcloud ce function bind.Options de commande Option Description --nameNom de la fonction à lier. Cette valeur est obligatoire. --prefixPréfixe des variables d'environnement créées pour cette liaison de service. Par exemple, --prefix MYPREFIXajoute le préfixeMYPREFIXà toutes les variables d'environnement créées pour cette liaison de service. Pour plus d'informations, voir la méthode des préfixes.--service-instanceIndiquez le nom d'une instance de service existante à associer à la fonction. Cette valeur est obligatoire. --roleNom 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,Managerou un rôle propre au service. Si l'option--rolen'est pas spécifiée, la valeur par défaut estManagerou le premier rôle fourni par le service siManagern'est pas pris en charge. Cette option est ignorée si--service-credentialest spécifié.Exemple de sortie
Binding service instance... Status: Done OK -
Vérifiez que les identifiants ont bien été générés à l'aide de la
application get, lajob getcommande ou lafunction getcommande. 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-functionExemple 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
-
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-instancesExemple de sortie
Name Location State Type Resource Group ID my-object-storage global active service_instance 325d80be5d7945608f6d121712c96ee9 -
Recherchez les données d'identification de l'instance de service.
ibmcloud resource service-keys --instance-name INSTANCENAMEExemple de sortie
Name State Created At my-cos-credential active Tue Mar 2 01:15:33 UTC 2021Pour 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écutantibmcloud resource service-keys. -
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-storageavec les données d'identification de service existantes appeléesmy-cos-credentialà un travail existant appelémyjob.ibmcloud ce job bind --name myjob --service-instance my-object-storage --service-credential my-cos-credentialLe tableau ci-dessous récapitule les options utilisées avec la commande
job binddans cet exemple. Pour plus d'informations sur la commande et ses options, voir la commandeibmcloud ce job bind.Options de commande Option Description --nameNom du travail à lier. Cette valeur est obligatoire. --service-instanceIndiquez le nom d'une instance de service existante à lier au travail. Cette valeur est obligatoire. --service-credentialNom des données d'identification de service existantes à lier. -
Vérifiez que les identifiants ont bien été générés à l'aide de la
application get, lejob getou lafunction 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 myjobExemple 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
- Depuis la page « Projets » d' Code Engine, accédez à votre projet.
- 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.
- 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
-
Recherchez la liaison de service que vous souhaitez supprimer à l'aide de la
application get,job getou lafunction get; par exemple,ibmcloud ce application get --name my-applicationExemple 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 [...] -
Supprimez la liaison de service à l'aide de la touche
application unbind,job unbind, oufunction unbindpour supprimer la liaison de service.- Pour retirer une seule liaison, spécifiez les options
--nameet--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 ``` - Pour retirer une seule liaison, spécifiez les options