Vinculación de una instancia de servicio a una carga de trabajo de aplicación, trabajo o función
Puede integrar una instancia de servicio IBM Cloud en los recursos de un proyecto IBM Cloud® Code Engine utilizando enlaces de servicio.
Tras determinar la instancia de servicio que desea vincular a su carga de trabajo de Code Engine y asegurarse de que ha configurado el acceso para las vinculaciones de servicio, estará listo para vincular la instancia de servicio a su carga de trabajo de aplicación, trabajo o función de Code Engine.
Antes de empezar
- Crear un proyecto.
- Cree una carga de trabajo Code Engine para vincularla a su instancia de servicio. La carga de trabajo que desea vincular a la instancia de servicio debe existir.
- Crea la instancia del servicio que desees vincular a tu carga de trabajo de « Code Engine ».
- Configurar el acceso para los enlaces de servicio.
El acceso para las vinculaciones de servicio debe configurarse antes de poder vincular una instancia de servicio a una carga de trabajo de aplicación, trabajo o función de Code Engine. Configure el acceso para los enlaces de servicio en función de si desea que Code Engine cree y gestione automáticamente el ID de servicio por usted o si desea utilizar un ID de servicio que usted gestione.
- Cuando se trabaja con enlaces de servicio, ¿cuál es la relación entre el ID de servicio, los secretos de acceso al servicio y las credenciales de servicio?
-
En Code Engine, una vinculación de servicio es la relación entre una carga de trabajo de aplicación, trabajo o función y otro servicio IBM Cloud. Code Engine utiliza un ID de servicio para crear credenciales para una instancia de servicio IBM Cloud específica. Estas credenciales son credenciales de servicio y son utilizadas por su proyecto Code Engine para interactuar con la instancia de servicio. Las credenciales de servicio se almacenan en un secreto de acceso al servicio. Una aplicación, trabajo o función puede acceder a un secreto de acceso al servicio con las credenciales del servicio y se utiliza para interactuar con la instancia del servicio.
-
Cuando cree su instancia de servicio IBM Cloud, puede elegir crear la credencial de servicio para esa instancia de servicio. O bien, al crear un enlace de servicio, puede elegir que Code Engine cree automáticamente la credencial de instancia de servicio por usted si ha configurado el acceso para enlaces de servicio.
-
Tanto si elige que Code Engine cree automáticamente la credencial de servicio por usted como si crea manualmente la credencial de servicio para una instancia de servicio específica, debe especificar el rol Identity and Access Management (IAM) para la credencial de servicio. El rol que especifique define la interacción que se permite con la instancia de servicio específica y la aplicación, trabajo o función vinculada Code Engine. Por ejemplo, si crea un enlace de servicio desde Code Engine a una instancia de servicio IBM Cloudant y desea que la aplicación, trabajo o función sólo lea de la base de datos IBM Cloudant, seleccione el rol
Reader.
Vinculación de una instancia de servicio a una aplicación o trabajo de Code Engine desde la consola
Puede crear una vinculación de servicio que vincule una instancia de servicio existente a una aplicación o trabajo de Code Engine utilizando la consola. Para crear un enlace de servicio para una función, debe utilizar la CLI.
Vinculación de una instancia de servicio con un nuevo secreto de acceso al servicio (con una credencial autogenerada Code Engine )
Vamos a crear una vinculación de servicio para vincular una instancia de servicio a una aplicación o trabajo con un nuevo secreto de acceso al servicio que utiliza una credencial de servicio generada automáticamente por Code Engine. Para este
ejemplo, cree un enlace de servicio desde la consola para la aplicación myapp y elija que Code Engine cree automáticamente la credencial de servicio a una instancia de servicio IBM Cloud. Antes de que Code Engine pueda crear
automáticamente la credencial de servicio, asegúrese de configurar el acceso para que Code Engine cree y gestione automáticamente el ID de servicio para los enlaces de servicio.
- Una vez que tu proyecto esté en estado «Activo», haz clic en el nombre del mismo en la página «Proyectos» de Code Engine.
- En la página Descripción general, haga clic en Vinculaciones de servicio.
- En la página Enlaces de servicio, haga clic en Crear para crear el enlace.
- Selecciona la instancia del servicio « IBM » que desees vincular a tu aplicación o tarea de « Code Engine ».
- Seleccione la aplicación Code Engine o el trabajo que desea vincular a la instancia de servicio; por ejemplo, seleccione la aplicación
myapp. - Especifique el secreto de acceso al servicio que se utilizará con esta vinculación. El secreto de acceso al servicio almacena las credenciales para la vinculación del servicio. Observe que cualquier credencial de servicio previamente definida
para su instancia de servicio específica, que no esté asociada con la aplicación o el trabajo que ha seleccionado, aparece en la lista. Si actualmente no existe ningún secreto de acceso al servicio, entonces está creando un nuevo secreto.
Si existe un secreto de acceso al servicio, para crear un nuevo secreto de acceso al servicio con una nueva credencial de servicio para esta vinculación, seleccione Nuevo secreto. Realice los siguientes pasos.
- Seleccione la función para la credencial de instancia de servicio.
- Expanda Opciones avanzadas.
- Para que Code Engine cree automáticamente la credencial de servicio para una instancia de servicio de IBM Cloud, seleccione
Auto-generate. - (opcional) Especifica un prefijo personalizado para el enlace del servicio. Si no especifica un prefijo personalizado, Code Engine genera automáticamente un prefijo. El prefijo se utiliza para distinguir las variables de entorno que se crean para este enlace de servicio.
- Haz clic en «Añadir» para crear el enlace de servicio.
- Ahora que la vinculación del servicio a su aplicación o trabajo está creada desde la consola, puede ver una lista de todas las vinculaciones de servicio definidas entre instancias de servicio y aplicaciones y trabajos de Code Engine desde la página Vinculaciones de servicio.
Alternativamente, también puede crear y gestionar enlaces de servicio a aplicaciones y trabajos específicos desde la página de aplicaciones o trabajos específicos de Code Engine en la consola. Para trabajar con service bindings en el contexto de tu aplicación o trabajo, ve a la pestaña Service bindings para tu aplicación o trabajo específico.
Vinculación de una instancia de servicio con un nuevo secreto de acceso al servicio (con una credencial existente)
Supongamos que desea crear una vinculación de servicio para vincular una instancia de servicio a una aplicación o trabajo con un nuevo secreto de acceso al servicio que utiliza una credencial de servicio existente. La credencial de servicio
existente podría haber sido generada automáticamente por Code Engine, o la credencial de servicio podría haber sido generada manualmente. Para este ejemplo, cree un enlace de servicio para el trabajo myjob, con un nuevo secreto
de acceso al servicio que utilice una credencial de servicio existente.
- Una vez que tu proyecto esté en estado «Activo», haz clic en el nombre del mismo en la página «Proyectos» de Code Engine.
- En la página Descripción general, haga clic en Vinculaciones de servicio.
- En la página Enlaces de servicio, haga clic en Crear para crear el enlace.
- Selecciona la instancia del servicio « IBM » que desees vincular a tu aplicación o tarea de « Code Engine ».
- Seleccione la aplicación Code Engine o el trabajo que desea vincular a la instancia de servicio; por ejemplo, seleccione el trabajo
myjob. - Especifique el secreto de acceso al servicio que se utilizará con esta vinculación. El secreto de acceso al servicio almacena las credenciales para la vinculación del servicio. Observe que cualquier credencial de servicio previamente definida
para su instancia de servicio específica, que no esté asociada con la aplicación o el trabajo que ha seleccionado, aparece en la lista. Si actualmente no existe ningún secreto de acceso al servicio, entonces está creando un nuevo secreto.
Si existe un secreto de acceso al servicio, para crear un nuevo secreto de acceso al servicio con una nueva credencial de servicio para esta vinculación, seleccione Nuevo secreto. Realice los siguientes pasos.
- Seleccione la función para la credencial de instancia de servicio.
- Expanda Opciones avanzadas.
- Seleccione la credencial de servicio que se utilizará con este secreto de acceso al servicio.
- (opcional) Especifica un prefijo personalizado para el enlace del servicio. Si no especifica un prefijo personalizado, Code Engine genera automáticamente un prefijo. El prefijo se utiliza para distinguir las variables de entorno que se crean para este enlace de servicio.
- Haz clic en «Añadir» para crear el enlace de servicio.
- Ahora que la vinculación del servicio a su aplicación o trabajo está creada desde la consola, puede ver una lista de todas las vinculaciones de servicio definidas entre instancias de servicio y aplicaciones y trabajos de Code Engine desde la página Vinculaciones de servicio.
Alternativamente, también puede crear y gestionar enlaces de servicio a aplicaciones y trabajos específicos desde la página de aplicaciones o trabajos específicos de Code Engine en la consola. Para trabajar con service bindings en el contexto de tu aplicación o trabajo, ve a la pestaña Service bindings para tu aplicación o trabajo específico.
Vinculación de una instancia de servicio con un secreto de acceso al servicio existente
Puede reutilizar los secretos de acceso a los servicios en los enlaces de servicio. Para una instancia específica del servicio IBM Cloud, puede reutilizar los secretos de acceso al servicio con diferentes aplicaciones o trabajos. No se puede reutilizar un secreto de acceso a servicio para la misma aplicación o trabajo para el que se creó originalmente el secreto de acceso a servicio. Dado que la credencial de servicio se almacena dentro del secreto de acceso al servicio, es importante tener en cuenta los siguientes puntos:
-
Puede tener más de una aplicación o trabajo vinculado a la misma instancia de servicio IBM Cloud con el mismo secreto de acceso al servicio.
-
Un secreto de acceso a un servicio no puede reutilizarse en un enlace de servicio para la misma aplicación o trabajo. Sin embargo, puedes reutilizar el mismo secreto de acceso al servicio en una aplicación o trabajo diferente. Dado que un secreto de acceso al servicio está asociado a una instancia de servicio específica de IBM Cloud, sólo puede reutilizar el secreto de acceso al servicio en una aplicación o trabajo diferente, si se está vinculando a la misma instancia de servicio.
Vamos a crear un enlace de servicio para enlazar una instancia de servicio a un trabajo que utiliza un secreto de acceso de servicio existente. Por ejemplo, cree un enlace de servicio para el trabajo myjob y elija un secreto de
acceso de servicio existente para una instancia de servicio específica.
- Una vez que tu proyecto esté en estado «Activo», haz clic en el nombre del mismo en la página «Proyectos» de Code Engine.
- En la página Descripción general, haga clic en Vinculaciones de servicio.
- En la página Enlaces de servicio, haga clic en Crear para crear el enlace.
- Selecciona la instancia del servicio « IBM » que desees vincular a tu aplicación o tarea de « Code Engine ».
- Selecciona la aplicación o el trabajo de « Code Engine » que quieras vincular a la instancia del servicio.
- Puede reutilizar una credencial existente para el secreto de acceso al servicio para un enlace de servicio a una instancia de servicio IBM Cloud específica con una aplicación o trabajo diferente. En este caso, seleccione Secreto existente.
Observe que aparece cualquier credencial de servicio previamente definida para su instancia de servicio específica, que no está asociada con la aplicación o el trabajo que ha seleccionado. Realice los siguientes pasos.
- Revise la lista de secretos existentes y seleccione el secreto que desea utilizar con esta vinculación de servicio.
- (opcional) Especifica un prefijo personalizado para el enlace del servicio. Si no especifica un prefijo personalizado, Code Engine genera automáticamente un prefijo. El prefijo se utiliza para distinguir las variables de entorno que se crean para este enlace de servicio.
- Haz clic en «Añadir» para crear el enlace de servicio.
- Ahora que la vinculación del servicio a su aplicación o trabajo está creada desde la consola, puede ver una lista de todas las vinculaciones de servicio definidas entre instancias de servicio y aplicaciones y trabajos de Code Engine desde la página Vinculaciones de servicio.
Alternativamente, también puede crear y gestionar enlaces de servicio a aplicaciones y trabajos específicos desde la página de aplicaciones o trabajos específicos de Code Engine en la consola. Para trabajar con service bindings en el contexto de tu aplicación o trabajo, ve a la pestaña Service bindings para tu aplicación o trabajo específico.
Vinculación de una instancia de servicio a una aplicación, trabajo o función de Code Engine con la CLI
Puede crear una vinculación de servicio que vincule una instancia de servicio existente a una aplicación, trabajo o función de Code Engine con la CLI.
Antes de empezar
-
Configure su entorno de CLI de Code Engine.
-
Crea la instancia del servicio que desees vincular a tu carga de trabajo de « Code Engine ».
Por ejemplo, para crear una instancia de servicio de IBM Cloud Object Storage (plan Lite):
ibmcloud resource service-instance-create my-object-storage cloud-object-storage lite global -g Default -
Crea una carga de trabajo de « Code Engine ».
Enlace de una instancia de servicio con una credencial nueva
- Para enlazar la nueva instancia de servicio a la aplicación de Code Engine y generar una credencial de servicio nueva, utilice el mandato
ibmcloud ce application bind. - Para enlazar la instancia de servicio a un trabajo de Code Engine, utilice el mandato
ibmcloud ce job bind. - Para vincular su instancia de servicio a una función Code Engine, utilice el comando
ibmcloud ce function bindcomando
Para crear una aplicación que se utilizará para estos pasos, ejecute el siguiente comando.
ibmcloud ce application create --name my-application --image icr.io/codeengine/hello
-
Indica el nombre de la instancia del servicio que deseas vincular a tu aplicación, tarea o función. Puede encontrar todas las instancias de servicio que hay en su cuenta para el grupo de recursos actual ejecutando el mandato
ibmcloud resource service-instances; por ejemplo,ibmcloud resource service-instancesSalida de ejemplo
Name Location State Type Resource Group ID my-object-storage global active service_instance 325d80be5d7945608f6d121712c96ee9 -
Vincula tu instancia de servicio a tu aplicación, tarea o función de Code Engine y genera unas nuevas credenciales de servicio con el rol de servicio predeterminado. El rol de servicio predeterminado es el Gestor o el primer rol que proporciona el servicio si el Gestor no recibe soporte. En el siguiente ejemplo,
application bindcomando vincula la instancia del serviciomy-object-storagecon la aplicación denominadamy-application. Se genera una nueva credencial de servicio con el rol Gestor para esta acción de enlace.ibmcloud ce application bind --name my-application --service-instance my-object-storageEn la tabla siguiente se resumen las opciones que se utilizan con el mandato
application binden este ejemplo. Para obtener más información sobre el mandato y sus opciones, consulte el mandatoibmcloud ce application bind.Opciones de mandato Opción Descripción --nameEl nombre de la aplicación que se va a enlazar. Este valor es obligatorio. --service-instanceEspecifique el nombre de una instancia de servicio existente que se va a enlazar con la aplicación. Este valor es obligatorio. Salida de ejemplo
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 -
Comprueba que las credenciales se hayan generado mediante el uso de
application get, eljob get, o elfunction getcomando . En el ejemplo siguiente, verifique que se han creado las credenciales creadas en el ejemplo anterior.ibmcloud ce application get --name my-applicationSalida de ejemplo
[...] 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 [...]
Asignación de una instancia de servicio a un rol específico
- Para enlazar la nueva instancia de servicio a la aplicación de Code Engine y generar una credencial de servicio nueva, utilice el mandato
ibmcloud ce application bind. - Para enlazar la instancia de servicio a un trabajo de Code Engine, utilice el mandato
ibmcloud ce job bind. - Para vincular su instancia de servicio a una función Code Engine, utilice el comando
ibmcloud ce function bindcomando
Para crear una función que se utilizará para estos pasos, ejecute el siguiente comando.
ibmcloud ce function create --name myfun --runtime nodejs --build-source https://github.com/IBM/CodeEngine --build-context-dir /helloworld-samples/function-codebundle-nodejs
-
Indica el nombre de la instancia del servicio que deseas vincular a tu aplicación, tarea o función. Puede encontrar todas las instancias de servicio que hay en su cuenta para el grupo de recursos actual ejecutando el mandato
ibmcloud resource service-instances; por ejemplo,ibmcloud resource service-instancesSalida de ejemplo
Name Location State Type Resource Group ID my-object-storage global active service_instance 325d80be5d7945608f6d121712c96ee9 -
Vincula tu instancia de servicio a tu aplicación, tarea o función de Code Engine y genera unas nuevas credenciales de servicio con un rol de servicio específico. Para obtener más información sobre los roles de servicio de IAM, consulte Roles de acceso al servicio. En el siguiente ejemplo, el
function bindcomando vincula la instancia del servicio «my-object-storage» a la función denominada «my-function» utilizando el rol de servicio «Writer». Se genera una nueva credencial de servicio con el rol Escritor para esta acción de enlace. Al especificar la opción--prefix, se añade un prefijo a las variables de entorno creadas por los enlaces de servicio.ibmcloud ce function bind --name my-function --service-instance my-object-storage --role Writer --prefix MYPREFIXEn la tabla siguiente se resumen las opciones que se utilizan con el mandato
function binden este ejemplo. Para obtener más información sobre el mandato y sus opciones, consulte el mandatoibmcloud ce function bind.Opciones de mandato Opción Descripción --nameEl nombre de la función a enlazar. Este valor es obligatorio. --prefixEl prefijo de las variables de entorno que se crean para esta vinculación de servicio. Por ejemplo, --prefix MYPREFIXañade el prefijoMYPREFIXa cualquier variable de entorno que se cree para este enlace de servicio. Para más información, consulte el método del prefijo.--service-instanceEspecifica el nombre de una instancia de servicio existente a la que vincular la función. Este valor es obligatorio. --roleEl nombre de un rol de servicio para la credencial de servicio nueva que se ha creado para este enlace de servicio. Los valores válidos son Reader,Writer,Managero un rol específico del servicio. Si no se especifica la opción--role, el valor predeterminado esManagero el primer rol que proporciona el servicio siManagerno recibe soporte. Esta opción se omite si se especifica--service-credential.Salida de ejemplo
Binding service instance... Status: Done OK -
Comprueba que las credenciales se hayan generado mediante el uso de
application get, eljob getcomando o elfunction getcomando. En el ejemplo siguiente, verifique que se han creado las credenciales creadas en el ejemplo anterior.ibmcloud ce function get --name my-functionSalida de ejemplo
[...] 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 [...]
Enlace de una instancia de servicio con credenciales existentes
Si ya ha creado una credencial para la instancia de servicio y desea utilizarla para el enlace de servicio, añada la opción --service-credentials.
Para crear un trabajo que se utilizará para estos pasos, ejecute el siguiente comando.
ibmcloud ce job create --name my-job --image icr.io/codeengine/hello
-
Indica el nombre de la instancia del servicio que deseas vincular a tu aplicación, tarea o función. Puede encontrar todas las instancias de servicio que hay en su cuenta para el grupo de recursos actual ejecutando el mandato
ibmcloud resource service-instances; por ejemplo,ibmcloud resource service-instancesSalida de ejemplo
Name Location State Type Resource Group ID my-object-storage global active service_instance 325d80be5d7945608f6d121712c96ee9 -
Localice las credenciales de la instancia de servicio.
ibmcloud resource service-keys --instance-name INSTANCENAMESalida de ejemplo
Name State Created At my-cos-credential active Tue Mar 2 01:15:33 UTC 2021Para ver detalles de una credencial de servicio, ejecute
ibmcloud resource service-key KEYNAME. Puede encontrar todas las claves de servicio del grupo de recursos ejecutandoibmcloud resource service-keys. -
Vincula la instancia del servicio a la aplicación, el trabajo o la función con las credenciales existentes. Por ejemplo, el siguiente mandato de
job bindenlaza la instancia de servicio demy-object-storagecon credenciales de servicio existentes denominadasmy-cos-credentiala un trabajo existente denominadomyjob.ibmcloud ce job bind --name myjob --service-instance my-object-storage --service-credential my-cos-credentialEn la tabla siguiente se resumen las opciones que se utilizan con el mandato
job binden este ejemplo. Para obtener más información sobre el mandato y sus opciones, consulte el mandatoibmcloud ce job bind.Opciones de mandato Opción Descripción --nameEl nombre del trabajo que se va a enlazar. Este valor es obligatorio. --service-instanceEspecifique el nombre de una instancia de servicio existente que se va a enlazar con el trabajo. Este valor es obligatorio. --service-credentialEl nombre de la credencial de servicio existente que se va a enlazar. -
Comprueba que las credenciales se hayan generado mediante el uso de
application get, eljob get, o elfunction getcomando . En el ejemplo siguiente, verifique que se han creado las credenciales creadas en el ejemplo anterior.ibmcloud ce job get --name myjobSalida de ejemplo
[...] 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 [...]
Desenlace de instancias de servicio
Al desvincular instancias de servicio de una aplicación, un trabajo o una función, se eliminan los enlaces de servicio existentes.
Cuando se desvincula (o elimina) una vinculación de servicio, se elimina la asociación de la carga de trabajo de aplicación, trabajo o función con el secreto de acceso al servicio, de modo que la carga de trabajo ya no tiene acceso al servicio IBM Cloud vinculado previamente.
Una vez definida una vinculación de servicio entre la aplicación y una instancia de servicio, la vinculación de servicio estará activa mientras la aplicación y la instancia de servicio estén activas o no se haya completado una operación de desvinculación para eliminar la vinculación de servicio. Si se elimina la instancia de servicio, tendrá que eliminar manualmente la vinculación del servicio.
Desvincular una instancia de servicio de la consola
- Desde la página «Proyectos» de Code Engine, accede a tu proyecto.
- En la página Descripción general, haga clic en Enlaces de servicio para ver una lista de todos los enlaces de servicio definidos. O bien, si desea gestionar los enlaces de servicio desde el contexto de su aplicación o trabajo, en la página Descripción general, haga clic en Aplicaciones o Trabajos y haga clic en el nombre de su aplicación o trabajo. Desde la página específica de la aplicación o del trabajo, vaya a la pestaña Service bindings>.
- En la lista de enlaces de servicio, elimina el enlace que desees eliminar de tu aplicación o trabajo. Haga clic en el icono Acciones
> Borrar para eliminar el enlace de servicio.
Desvinculación de una instancia de servicio con la CLI
-
Busca el enlace de servicio que deseas eliminar con el
application get,job get, o elfunction getcomando ; por ejemplo,ibmcloud ce application get --name my-applicationSalida de ejemplo
[...] 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 [...] -
Elimine la vinculación del servicio mediante el botón
application unbind,job unbindofunction unbind.- Para eliminar un enlace único, especifique las opciones
--namey--binding.
ibmcloud ce application unbind --name APPLICATION_NAME --binding BINDING_NAME ``` * Para desenlazar todas las instancias de servicio, utilice la opción `--all`. ```txt {: pre} ibmcloud ce job unbind --name JOB_NAME --all ``` - Para eliminar un enlace único, especifique las opciones