Preguntas frecuentes sobre la migración de aplicaciones de Cloud Foundry a Code Engine
Respuestas a preguntas comunes sobre la migración de las aplicaciones de Cloud Foundry a Code Engine.
¿Puedo utilizar un URL personalizado con Code Engine?
¡Sí! Puede correlacionar su propio URL personalizado con una aplicación Code Engine creando una correlación de dominios personalizada desde la consola de Code Engine. También puede asignar un URL personalizado a través de un proveedor de servicios de Internet, como por ejemplo IBM Cloud Internet Services. Para obtener más información sobre el despliegue de una app con un dominio personalizado a través de IBM Cloud Internet Services, consulte Configuración de una aplicación de alta disponibilidad. Para obtener más información sobre el despliegue de una aplicación con un dominio personalizado a través de Cloudflare, consulte el blog Configurar un dominio personalizado para su aplicación IBM Cloud Code Engine.
Mi app contiene una ruta específica. ¿Puedo utilizar la misma ruta?
Puede utilizar la misma ruta personalizada o dominio siempre que lo controle. Si la ruta es de otro origen, por ejemplo, una ruta proporcionada por IBMcomo mybluemix.net
, debe utilizar el dominio proporcionado por Code Engine o,
de lo contrario, correlacionar un nuevo dominio personalizado con la app.
¿Puedo detener mi aplicación?
No puede detener la app directamente, pero puede impedir que la app reciba tráfico estableciendo su visibilidad en project
y permitiéndole escalar a 0. Para obtener más información, consulte ¿Cómo puedo impedir que mi app reciba tráfico?
¿Por qué tengo tantas instancias de app?
Al actualizar la app, Code Engine crea automáticamente una nueva revisión. Cuando la revisión está disponible, el tráfico se direcciona a las nuevas instancias. Mientras la revisión se escala y el tráfico se transfiere a ella, la instancia de la app original continúa manejando el tráfico. Cuando la revisión se escala hacia arriba y todo el tráfico se direcciona a ella, la app original se reduce. La app también se escala automáticamente hacia arriba y hacia abajo según lo requiera el tráfico. Vuelva a comprobar más adelante para asegurarse de que la app está ejecutando el número correcto de instancias. Para obtener más información, consulte Configuración del escalado de una aplicación.
¿Por qué mis aplicaciones tardan en responder?
Su aplicación se escala a cero por defecto y por lo tanto puede ser más lenta para responder mientras se escala de nuevo. Puede cambiar este comportamiento actualizando la aplicación y estableciendo la escala mínima en 1
en la consola
o en la CLI.
Por ejemplo, para establecer la escala mínima en 1
para una aplicación denominada myapp
desde la CLI,
ibmcloud ce app update --name myapp --min-scale 1
Después de las actualizaciones de la aplicación, siempre se está ejecutando una instancia individual. Tenga en cuenta que es posible que se apliquen cargos. Para obtener más información, consulte Precios de Code Engine.
¿Puedo direccionar solicitudes a una instancia de aplicación específica?
No, esta funcionalidad no está soportada actualmente. Puede aproximar esta funcionalidad utilizando División de tráfico de Knative. Para más información sobre el uso de Knative con ' Code Engine, consulte ' Uso de Knative con " Code Engine.
Utilizo un equilibrador de carga global con mi app Cloud Foundry. ¿Puedo migrarlo a Code Engine?
Sí, puede actualizar el equilibrador de carga global para que apunte a la app Code Engine, si puede acceder a la cadena de certificados y a la clave privada correspondiente. Los pasos siguientes presuponen que está utilizando Cloud Internet Services (CIS); sin embargo, puede adaptar estos pasos para su propio equilibrador de carga global.
Estos pasos utilizan la consola.
-
Cree una correlación de dominio para la app. Cuando cree la correlación de dominios, proporcione la clave privada y la cadena de certificados completa de los dominios. Para obtener más información, consulte Configuración de correlaciones de dominio personalizadas para la app. Espere hasta que las correlaciones de dominio en todos los proyectos muestren un estado
Ready
. -
Abra los detalles de cada correlación de dominio y anote el valor de
CNAME
, por ejemplo,custom.<your-random-id>.us-south.codeengine.appdomain.cloud
ocustom.<your-other-random-id>.us-east.codeengine.appdomain.cloud
. -
Vaya a la página de detalles de cada aplicación y seleccione el separador Correlaciones de dominio y, a continuación, seleccione
No external system domain mapping
en la sección de correlaciones de dominio del sistema. Este paso garantiza que las aplicaciones solo sean accesibles a través de los dominios personalizados cuando se llaman desde fuera de este proyecto. -
En la instancia de Cloud Internet Services (CIS), vaya a Reliability. > Equilibradores de carga globales > Agrupaciones de origen y edite las agrupaciones de origen existentes cambiando la dirección de origen por la
CNAME
que ha registrado anteriormente.
El equilibrador de carga global ahora apunta a la app Code Engine.
¿Es necesario que mi aplicación siga alguna especificación?
La app debe seguir la metodología de la app de 12 factores.
¿Qué tipos de cargas de trabajo están disponibles con Code Engine?
Code Engine admite dos tipos de cargas de trabajo: Aplicaciones y Trabajos por lotes.
Una aplicación, o app, ejecuta el código para servir solicitudes HTTP. Además de las solicitudes HTTP tradicionales, IBM Cloud® Code Engine también da soporte a aplicaciones que utilizan WebSockets como protocolo de comunicaciones. El número de instancias en ejecución de una aplicación se amplía o reduce automáticamente (hasta cero) en función de las solicitudes entrantes y de los ajustes de configuración. Una app contiene una o varias revisiones. Una revisión representa una versión inmutable de las propiedades de configuración de la app. Cada actualización de una propiedad de configuración de la app crea una nueva revisión de la app.
Un trabajo ejecuta una o más instancias de su código ejecutable en paralelo. A diferencia de las aplicaciones, que gestionan solicitudes HTTP, los trabajos se han diseñado para que se ejecuten una vez y se salga. Cuando crea un trabajo, puede especificar la información de configuración de carga de trabajo que se utiliza cada vez que se ejecuta el trabajo.
Determinar el tipo de cargas de trabajo que desea
La mayoría de las aplicaciones de Cloud Foundry se pueden migrar a Code Engine. Sin embargo, si la aplicación de Cloud Foundry no espera una solicitud HTTP entrante, probablemente los trabajos sean la mejor opción. Para obtener más información y ejemplos, consulte Planificación de Code Engine.
Utilizo archivos de manifiesto. ¿Hay opciones similares disponibles con Code Engine?
Si utiliza archivos de manifiesto para las aplicaciones de Cloud Foundry, correlacione los atributos de manifiesto con las características o la opción de CLI de Code Engine correspondientes.
Atributo de manifiesto | Equivalente de Code Engine en los mandatos ibmcloud ce app create o app update |
---|---|
command |
Opción --command |
disk_quota |
Establecida implícitamente por Code Engine. |
docker |
No es necesario en Code Engine. |
health-check-http-endpoint |
No es necesario en Code Engine. De forma predeterminada, se utiliza un analizador TCP para saber cuándo la aplicación está en buen estado y lista. |
health-check-invocation-timeout |
No es necesario en Code Engine. |
instances |
Opciones --min-scale y --max-scale |
memory |
Opción --memory |
metadata |
No soportado actualmente. |
no-route |
Con la opción " --cluster-local ", la aplicación sigue siendo accesible desde otras cargas de trabajo dentro del proyecto, pero no incluye una URL accesible desde Internet asociada a la aplicación. |
path |
No aplicable actualmente. |
processes |
No es necesario en Code Engine. La aplicación puede crear procesos adicionales en tiempo de ejecución. |
random-route |
No es necesario en Code Engine. Cada proyecto tiene un subdominio exclusivo y puesto que el nombre de la aplicación forma parte del URL, se garantiza que el URL es exclusivo. |
routes |
Las rutas personalizadas no están soportadas actualmente, pero puede utilizar IBM Cloud Internet Service(CIS)o Cloudflare para frontal de la aplicación con un dominio personalizado. |
sidecars |
No soportado actualmente. |
stack |
Gestionado implícitamente por Code Engine. |
timeout |
No es necesario en Code Engine. |
Variables de entorno | Opción -env |
Servicios | Consulte el mandato ibmcloud ce app bind . |
Code Engine admite muchas opciones que no están disponibles en Cloud Foundry, como por ejemplo la gestión del escalado automático. Consulte Trabajar con aplicaciones en Code Engine y Configuración del escalado de aplicaciones.
Sé cómo desplegar una aplicación con Cloud Foundry. ¿Qué necesito saber para desplegar una aplicación en Code Engine?
Si sabe cómo desplegar una aplicación con Cloud Foundry, aquí encontrará lo que necesita saber para desplegar una aplicación en Code Engine.
Código de envío
Con Code Engine, puede compilar el código que se obtiene de un repositorio Git o de un sistema local (solo con la CLI). Asimismo, como con Cloud Foundry (cf push
), puede compilar y desplegar la aplicación en un solo paso con la
CLI y la consola de Code Engine. Para obtener más información, consulte ¿Cómo hacer que mi código se ejecute como un componente de aplicación de Code Engine?
Contexto de despliegue
Cloud Foundry requiere un Org
y un Space
para enviar el código a una aplicación. Todos los usuarios de Cloud Foundry, de forma predeterminada, reciben un Org
y un Space
que se crean para
ellos. Sin embargo, para añadir otros nuevos, debe configurar un Org
y un Space
de destino de forma similar al ejemplo siguiente.
ibmcloud cf create-org MyOrg
ibmcloud target -o <ORGNAME>
ibmcloud target -s dev
Cuando despliegue una aplicación con Cloud Foundry, ese Org
y Space
son el destino del despliegue.
Code Engine utiliza el concepto de grupo de recursos de IBM Cloud y proyecto de Code Engine.
ibmcloud target -g <RESOURCE-GROUP>
ibmcloud ce project create --name <PROJECTNAME>
Estos mandatos no sólo crean un proyecto, sino que también "destinos". Todos los mandatos de Code Engine posteriores se ejecutan en el contexto de este proyecto hasta que se marca como destino otro proyecto diferente utilizando el
mandato project select
. Para obtener más información, consulte Gestión de proyectos.
Registros
Code Engine proporciona registros para aplicaciones, trabajos y compilaciones para ayudarle a determinar qué ha ocurrido cuando los despliegues no se ejecutan correctamente. Puede encontrar registros ejecutando mandatos similares a los ejemplos siguientes.
ibmcloud ce app logs -n <APPNAME>
ibmcloud ce jobrun logs -n <JOBRUN-NAME>
ibmcloud ce buildrun logs -n <BUILDRUN_NAME>
También puede utilizar el servicio IBM Cloud Logs, que está disponible para la persistencia a más largo plazo de los mensajes de registro. Para obtener más información, consulte Visualización de registros.
Creación de un servicio
La creación de una instancia de un servicio gestionado es similar en Cloud Foundry y Code Engine.
Para crear un nuevo servicio para utilizar con su aplicación de Cloud Foundry, utilice el mandato siguiente.
ibmcloud cf create-service cloudantNoSQLDB lite myNameCloudant
Para crear un nuevo servicio para utilizar con aplicaciones de Code Engine,
ibmcloud resource service-instance-create myNameCOS cloud-object-storage lite global
Enlaces de servicio
Después de crear la aplicación, puede "enlazar" la aplicación al servicio.
Con Cloud Foundry, ejecute el siguiente mandato.
ibmcloud cf bind-service appName instanceName
Con Code Engine,
ibmcloud ce app bind --name appName --service-instance instanceName
Las credenciales de la instancia de servicio (coordenadas) se inyectan en la aplicación (o trabajo) utilizando variables de entorno. El equivalente de Cloud Foundry para VCAP_SERVICES
en Code Engine es CE_SERVICES
.
Para obtener más información, consulte Integración del servicio IBM Cloud con enlaces de servicio.
Actualización de una aplicación o un trabajo
Después de crear la aplicación o el trabajo, puede actualizar las propiedades de la carga de trabajo utilizando el mandato update. Por ejemplo, para actualizar una aplicación en Code Engine,
ibmcloud ce app update --name <APPNAME> ...
Puede actualizar cualquiera de las propiedades que hay disponibles al crear una aplicación o un trabajo. Para obtener más información, consulte los temas siguientes.
Soporte para tiempos de ejecución
Code Engine soporta muchos de los tiempos de ejecución que soporta Cloud Foundry. Para obtener una lista de tiempos de ejecución soportados por Code Engine, consulte Cloud Native buildpacks. Si desea utilizar un tiempo de ejecución que no es compatible, por ejemplo, ' Swift o Liberty, puede empaquetar su aplicación como una imagen de contenedor usted mismo y ' desplegar esa imagen en ' Code Engine sin construir la imagen directamente desde ' Code Engine.
Próximos pasos
- ¿Está empezando la migración? Consulte Iniciación.
- Comparar la terminología de Cloud Foundry con Code Engine.
- Pruebe Code Engine con una guía de aprendizaje de compilación local.
- ¿Su aplicación utiliza enlaces de servicio? Consulte Migración de los enlaces de servicio.
- Obtenga información sobre el escalado y la gestión del tráfico.
- Busque Equivalentes de Code Engine a los mandatos de Cloud Foundry.
- Migración de aplicaciones Cloud Foundry a Code Engine FAQ (página actual)
Información adicional
- Obtenga información sobre los Precios de Code Engine.
- Pruebe otras guías de aprendizaje deCode Engine.
- Explore otros Temas de Code Engine.