Migración del enlace de servicio

A partir de una aplicación nativa en la nube que sigue los principios de la aplicación de 12 factores, vamos a simplificar y actualizar el código y, a continuación, crearemos una versión de Cloud Foundry y una versión de Code Engine. Estas versiones sirven de ejemplo para la discusión de los pasos de migración y los aspectos de despliegue.

La aplicación de ejemplo es una aplicación web típica que está escrita en Node.jsJavaScript) y utiliza el framework web Express. Una base de datos IBM Cloudant NoSQL sirve como servicio de respaldo para almacenar los datos visualizados por la aplicación. Como es típico en las aplicaciones nativas en la nube de 12 factores, la aplicación de ejemplo se basa en componentes discretos y reutilizables que actúan como microservicios para formar la aplicación general. Tanto el programa Node.js desplegado como la base de datos se pueden escalar, mejorar o incluso sustituir de manera independiente. Los componentes funcionan juntos debido a la forma en la que están configurados y utilizando API bien definidas.

App nativa en la nube simple con servicio de base de datos de fondo.
Simple cloud-native app with backend database service.

La base de datos IBM Cloudant se puede configurar para que funcione como un recurso adjunto con las versiones de la app que se despliegan en Cloud Foundry y Code Engine. Para simplificar, la solución se reduce a estos dos componentes.

Creación del enlace de servicio

Esta aplicación de ejemplo requiere una base de datos Cloudant para almacenar contenido. Puede configurar el acceso a Cloudant mediante la inyección manual de variables de entorno, pero el proceso típico es a través de enlaces de servicio. La relación entre la aplicación y sus servicios de respaldo se establece explícitamente, por lo que se crean credenciales y se inyectan automáticamente en el entorno de ejecución. Cloud Foundry proporciona las credenciales como parte del objeto VCAP_SERVICES. Code Engine imita este objeto a través de su variable de entorno CE_SERVICES.

Tanto la aplicación Cloud Foundry como la aplicación Code Engine se conectan al servicio de base de datos. El código desplegado en Code Engine puede considerarse una versión diferente y más reciente de la aplicación de Cloud Foundry. Sigue estando enlazado al mismo servicio de base de datos, pero a través de otros medios.

Para vincular la versión Code Engine de la aplicación a un servicio,

  1. Acceda a la instancia de base de datos de Cloudant. Si no tiene una, créela.
  2. Cree credenciales de servicio (clave de servicio de IAM) para la instancia de Cloudant con un nombre descriptivo. Especifique el rol IAM Manager, Writer o Reader) para su aplicación. Elija un rol con el mínimo nivel de privilegio necesario para la aplicación.
  3. Enlace el servicio a la app utilizando la credencial existente. Code Engine puede crear credenciales al enlazar un servicio. Sin embargo, al crear su propia credencial, puede realizar un seguimiento e incluso cambiar el privilegio independientemente de Code Engine.

Para esta aplicación de ejemplo con Cloudant como servicio de base de datos, ejecute los siguientes mandatos para crear la clave de servicio Cloudant-CF2CE-Manager con el rol Manager y, a continuación, utilícela para enlazar el servicio.

ibmcloud resource service-key-create Cloudant-CF2CE-Manager Manager --instance-name Cloudant-CF2CE
ibmcloud ce app bind --name cf2ce-app --service-instance Cloudant-CF2CE --service-credential Cloudant-CF2CE-Manager

Si la app de Cloud Foundry se conecta a un servicio a través de un servicio proporcionado por el usuario, cree una app que utilice secrets o configmaps para Code Engine. Mediante el uso de secretos y configmaps, puede inyectar las credenciales de servicio en el entorno de ejecución y gestionarlas como un objeto con nombre dentro del proyecto Code Engine.

Migración del código

Normalmente, la migración del código es sencilla. Por ejemplo, en lugar de leer de una variable de entorno que se llama VCAP_SERVICES para Cloud Foundry, su código debe leer de CE_SERVICES para Code Engine. Además, tenga en cuenta las sutiles diferencias en la forma en que se nombran los servicios debido al método por el que los servicios están disponibles a través de brokers para Cloud Foundry y a través de la gestión de recursos basada en IAM para Code Engine.

En función del lenguaje de programación, el código puede utilizar una biblioteca de códigos o un módulo para acceder al entorno de ejecución de Cloud Foundry, la configuración inyectada localmente ("dotenv"), etc. Hay que adaptar esas secciones.

Compare el código del archivo server.js en estos dos ejemplos de aplicación.

Transferencia de la migración de aplicaciones

Si la aplicación no puede estar desactivada cuando se traslada desde Cloud Foundry a Code Engine, se recomienda realizar la migración de código con un paso intermedio.

  • 1cloudfoundry_base: la base de código de Cloud Foundry como origen inicial. Esta aplicación solo se ejecuta en Cloud Foundry.
  • 2cf_ce_intermediate_hybrid: añada código para dar soporte también a un despliegue de Code Engine. Esta aplicación se ejecuta en Cloud Foundry y Code Engine.
  • 3codeengine_target: Por último, mueva a una base de código Code Enginesólo después de que se haya completado la migración real del proyecto. Esta aplicación solo se ejecuta en Code Engine.

Este enfoque es beneficioso porque puede continuar manteniendo o mejorando la base de código durante el proceso de migración, independientemente del entorno de despliegue.

Creación del código y ejecución de la aplicación

Cuando haya terminado de configurar el enlace de servicio, migrar el código y prepararse para transferir la migración, es hora de compilar el código. Siga los pasos de la primera guía de aprendizaje de migración para compilar el código a partir de un código fuente local. Si quieres usar la consola para construir tu código, tu código debe estar en Git. Para obtener más información, consulte Despliegue de la aplicación a partir del código fuente.

Próximos pasos

  1. ¿Está empezando la migración? Consulte Iniciación.
  2. Comparar la terminología de Cloud Foundry con Code Engine.
  3. Pruebe Code Engine con una guía de aprendizaje de compilación local.
  4. Migración del enlace de servicio (página actual)
  5. Obtenga información sobre el escalado y la gestión del tráfico.
  6. Busque Equivalentes de Code Engine a los mandatos de Cloud Foundry.
  7. ¿Le queda alguna duda? Pruebe las Preguntas frecuentes sobre la migración de aplicaciones de Cloud Foundry a Code Engine.

Información adicional