IBM Cloud Docs
Empezar a migrar de Heroku a Code Engine

Empezar a migrar de Heroku a Code Engine

Bienvenido a los usuarios de Heroku a IBM Cloud® Code Engine.

Code Engine es una plataforma totalmente gestionada y sin servidor que ejecuta sus cargas de trabajo contenerizadas. Code Engine incluso compila imágenes de contenedor automáticamente a partir del código fuente. La experiencia de Code Engine está diseñada para que pueda centrarse en escribir el código, no en la infraestructura necesaria para alojarlo.

Code Engine fue diseñado con los siguientes objetivos clave en mente.

  • Centrarse en su código. Code Engine proporciona una experiencia de desarrollador simplificada. No es necesario conocer ni gestionar la infraestructura subyacente.
  • Dar soporte a las características de ejecución modernas como, por ejemplo, el escalado automático, el escalado a cero cuando está desocupado y una integración perfecta con servicios gestionados y seguridad.
  • Dar soporte a todas las aplicaciones nativas en la nube, ya sean aplicaciones de 12 factores, funciones controladas por sucesos o trabajos por lotes de Ejecutar hasta el final. Si se puede contenerizar, Code Engine puede ejecutarlo.
  • Pagar solo por los recursos que realmente utiliza.

Si vienes de Heroku, muchas de estas características te resultarán familiares. Sin embargo, Code Engine también incluye algunas capacidades nuevas que te permiten ir incluso más allá de lo que Heroku ofrece, incluyendo aplicaciones que pueden escalar a cero y no incurrir en cargos. Además, Code Engine requiere una cuenta de Pago según uso que incluya un nivel gratuito. Por lo tanto, una vez superada la diferencia sintáctica de la experiencia del usuario, usted y sus aplicaciones se sentirán como en casa en Code Engine.

Objetivos

  • Conoce las similitudes entre Code Engine y Heroku.
  • Conozca el proceso general de despliegue de aplicaciones en Code Engine.
  • Despliegue una aplicación a partir de código en el sistema local con Code Engine.

Requisitos previos

Para poder empezar con Code Engine, debe configurar su cuenta e instalar la CLI.

  • Todos los usuarios de Code Engine están obligados a tener una cuenta de pago por uso.

  • Aunque puede utilizar Code Engine a través de la consola, los ejemplos de esta documentación se centran en la línea de mandatos. Por lo tanto, debe instalar la CLI de Code Engine.

    ibmcloud plugin install code-engine
    

    Para obtener más información, consulte Configuración de la CLI de Code Engine. Para obtener más información sobre la CLI, consulte Referencia de CLI de Code Engine.

Comparación de la terminología de Heroku y Code Engine

Antes de empezar a desplegar aplicaciones en Code Engine, aprende lo básico sobre Code Engine. La siguiente tabla describe algunas diferencias terminológicas de alto nivel entre Cloud Foundry y Code Engine.

Terminología
Heroku Code Engine Descripción
N/D Grupo de recursos y proyectos Una agrupación de cargas de trabajo. El usuario define la opción específica de qué carga de trabajo se incluye en cada agrupación. Los "grupos de recursos" son un concepto de IBM Cloud, mientras que los "proyectos" son específicos de Code Engine. Los proyectos proporcionan un nivel de aislamiento entre cargas de trabajo. Consulte Gestión de proyectos.
Dynos Contenedores Un dyno es un contenedor ligero que ejecuta su código Heroku y se gestiona para usted. En Code Engine, los contenedores subyacentes se basan en Kubernetes y se gestionan automáticamente.
Aplicación Aplicación (app) Una carga de trabajo que responde a solicitudes HTTP de una API REST, una solicitud de página web o un suceso, por ejemplo. Code Engine requiere que las aplicaciones incluyan el servidor HTTP como parte del código. Las aplicaciones Code Engine se escalan automáticamente (hacia arriba y hacia abajo) en función de la carga entrante. Puede configurar el escalado mínimo y máximo si es necesario. Por defecto, la aplicación escucha en el puerto 8080. Puede alterar temporalmente este comportamiento utilizando la consola o con el distintivo de CLI --port. Consulte Trabajar con aplicaciones en Code Engine.
N/D Trabajo o trabajo por lotes 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. Consulte Trabajar con trabajos y ejecuciones de trabajos.
heroku create y git push heroku main o heroku container:push web app create El proceso de creación de una aplicación. Con Heroku, creas una app y, a continuación, le envias tu código. El código se crea y se despliega en ese único paso. Con Code Engine, puedes extraer una imagen de contenedor de un repositorio de imágenes, construir tu código fuente desde un repositorio como GitHub, o extraer tu código desde un archivo local en tu sistema, todo desde un único comando. Puedes construir código basado en un Dockerfile o que utilice un buildpack de Paketo. Puede realizar la compilación con un solo paso en la CLI, así como en la consola de Code Engine. Consulte Planificación de la compilación.
Dominios personalizados Correlación de dominios personalizados Ambos servicios le permiten definir y gestionar URL externos para las cargas de trabajo. Code Engine proporciona soporte para correlaciones de dominios personalizadas desde la consola. También puede añadir dominios personalizados a través de IBM Cloud Internet Services o cualquier otro proveedor de dominio de su elección.

Para obtener más términos y prestaciones para Code Engine, consulte Información sobre Code Engine.

Inicie una sesión en IBM Cloud

Siga estos pasos para iniciar una sesión en la cuenta IBM Cloud y especifique un grupo de recursos.

  1. Inicie una sesión en la CLI de IBM Cloud.

    ibmcloud login
    
  2. Puede establecer como destino un grupo de recursos ejecutando el mandato siguiente. Para obtener una lista de los grupos de recursos, ejecute ibmcloud resource groups.

    ibmcloud target -g <resource_group>
    

    Salida de ejemplo

    Targeted resource group default
    

Creación de un proyecto

Un Code Engine "proyecto" agrupa cargas de trabajo relacionadas en una colección lógica. Puede agrupar cargas de trabajo en diferentes proyectos en función de los criterios que tengan sentido para usted, por ejemplo, estructura de la organización de la empresa, dependencias entre las cargas de trabajo, o entornos de desarrollo frente a entornos de prueba frente a entornos de producción. A continuación, puede configurar el acceso a estos proyectos. Tenga en cuenta que las cargas de trabajo dentro de un único proyecto comparten una red privada y están aisladas dentro de los límites de seguridad del proyecto. Todas las cargas de trabajo de un proyecto pueden hablar entre sí libremente sin preocuparse de ser vistas por cargas de trabajo de fuera del clúster. Si las cargas de trabajo de diferentes proyectos desean comunicarse entre sí, la comunicación debe utilizar Internet o una red privada interna de IBM. Para obtener más información, consulte Opciones de visibilidad para una aplicación Code Engine.

Cree un proyecto en Code Engine denominado sample-proj.

ibmcloud ce project create --name sample-proj

Salida de ejemplo

Creating project 'sample-proj'...
ID for project 'sample-proj' is 'abcdabcd-abcd-abcd-abcd-abcd12e3456f7'.
Waiting for project 'sample-proj' to be active...
Now selecting project 'sample-proj'.
OK

Observe que el proyecto también está seleccionado por el contexto, por lo que todos los mandatos posteriores relacionados con la aplicación están dentro del ámbito de este nuevo proyecto sample-proj.

Despliegue de la aplicación

Esta aplicación de ejemplo extrae código del repositorio GitHub de ejemplo. Este código es un simple envío por push del código a Code Engine utilizando el mandato application create. Debe proporcionar un nombre para la aplicación y la ubicación del código fuente. El siguiente ejemplo crea una aplicación llamada myapp que utiliza la estrategia buildpack y proporciona la ubicación para el código fuente en el directorio actual .).

ibmcloud ce app create --name myapp --build-source https://github.com/IBM/heroku-to-code-engine

Salida de ejemplo

Creating application 'myapp'...
Packaging files to upload from source path '.'...
Submitting build run 'myapp-run-220999-210706331'...
Creating image 'private.us.icr.io/ce--6ef04-khxrbwa0lci/app-myapp:220418-0207-askql'...
Waiting for build run to complete...
Build run status: 'Running'
Build run completed successfully.
Run 'ibmcloud ce buildrun get -n myapp-run-220000-210706331' to check the build run status.
Waiting for application 'myapp' to become ready.
Configuration 'myapp' is waiting for a Revision to become ready.
Ingress has not yet been reconciled.
Waiting for load balancer to be ready.
Run 'ibmcloud ce application get -n myapp' to check the application status.
OK

https://myapp.abcdbwa0lci.us-south.codeengine.appdomain.cloud

Y eso es todo. Ahora tiene una aplicación orientada a Internet. El código en la aplicación en sí es el mismo que se utiliza para una aplicación Heroku, es sólo el Code Engine comandos que son ligeramente diferentes.

Vamos a examinar detenidamente el mandato app create anterior. Observa que la salida del comando app create proporciona información sobre la progresión de la ejecución de la compilación antes de que se cree y despliegue la aplicación.

  1. Code Engine recibe una solicitud para crear una aplicación a partir del código fuente (en lugar de extraerla directamente de una imagen).
  2. Code Engine comprueba si hay un ID de servicio IAM y una clave API asociados al proyecto seleccionado. Este ID de servicio debe estar autorizado para leer y escribir en IBM Cloud Container Registry. Si no existe ningún ID de servicio, Code Engine crea uno automáticamente. Tenga en cuenta que este ID de servicio se utiliza en las siguientes solicitudes de compilación de Code Engine que se ejecutan desde el mismo proyecto.
  3. Este ejemplo crea código a partir de un repositorio público GitHub--build-source https://github.com/IBM/heroku-to-code-engine). El código fuente se empaqueta en un archivo de almacenamiento y se carga en un espacio de nombres gestionado dentro de la instancia IBM Cloud Container Registry de su cuenta. Tenga en cuenta que solo puede especificar IBM Cloud Container Registry como destino para las compilaciones locales. Para obtener más información sobre IBM Container Registry, incluida información sobre los límites de cuota y el acceso, consulte Cómo empezar con IBM Cloud Container Registry.
  4. Code Engine compila el código fuente en una imagen. La imagen de origen se crea en el mismo espacio de nombres que el archivo de archivado de origen.
  5. Una vez completada la compilación, la aplicación se despliega. Puede acceder a la aplicación desde el URL proporcionado.

Con Code Engine, obtendrá automáticamente muchas de las mismas funciones que Heroku, como el autoescalado y el despliegue azul-verde de actualizaciones, pero también disfrutará de las ventajas de funciones más nuevas, como el escalado a cero, que garantiza que no se le cobrará si su aplicación no está activa.

¿Desea obtener más información sobre sus opciones para compilar el código fuente? Consulte los mandatos application create y job create.

¿Desea obtener más información sobre las aplicaciones y los trabajos? Consulte Trabajar con aplicaciones en Code Engine y Trabajar con trabajos y ejecuciones de trabajo.

Limpieza

Cuando finalice esta guía de aprendizaje, puede limpiar los recursos que ha creado con los mandatos siguientes.

Suprimir la aplicación

ibmcloud ce app delete --name myapp

Cuando suprime la aplicación, también se suprimen los archivos de compilación asociados.

Por último, suprima las imágenes que la compilación ha creado en IBM Cloud Container Registry.

  1. Vaya a Registry en la consola de IBM Cloud.
  2. Busque el archivo y la imagen que están asociados con la aplicación buscando el nombre de la aplicación.
  3. Seleccione el archivo y la imagen y suprímalos.

Transcripción del vídeo

Hola, mi nombre es JJ Asghar y soy un desarrollador defensor de IBM Cloud. Recientemente, usted podría haber oído acerca de Heroku cambiar su política en libre-el nivel libre. Está causando un reto para muchos desarrolladores, por lo que quiero pasar un puñado de momentos aquí para mostrarle cómo puede migrar de Heroku a Code Engine desde IBM Cloud en un puñado de pasos. Así que vamos a seguir adelante y empezar a jugar con él y ver lo rápido que realmente puede hacer que su sistema funcione.

Así que lo primero, si no lo has visto esta es la línea real dentro del blog oficial de Heroku, a partir del 28 de noviembre de 2022, planeamos dejar de ofrecer gratis los planes de productos gratuitos y planear el cierre de los dynos gratuitos y los servicios de datos. Enviaremos una serie de comunicaciones por correo electrónico a los usuarios afectados. Esto es un reto para una gran cantidad de principiantes de aplicaciones web principiantes. Sé por un hecho personal que usé Heroku cuando empecé por primera vez en el día así que este es un éxito bastante grande para mucha gente y quiero mostrarle lo fácil que es convertir de Heroku a Code Engine.

Así que lo primero, en realidad vamos a ver una pequeña aplicación agradable que he creado. Si sigo adelante y llevo a cabo mi solicitud aquí, tenemos una pequeña aplicación de matraz. Si no sabes lo que es python o lo que es flask, es un formato para que python pueda ejecutar una aplicación en un puerto estándar. Así que digamos que tenemos esta aplicación; dice "¡Hola Mundo!". Ya lo he desplegado y podemos consultar aquí mismo Tenemos nuestra increíble app de producción en heroku.com. Dice "hola mundo" y queremos seguir adelante y cambiarlo. Queríamos actualizarlo, así que voy a seguir adelante y actualizarlo rápidamente a "Hello Moving from Heroku to Code Engine".

Sigamos adelante y salgamos de ella. git add . git commit -m “update hello line”. Entonces voy a seguir adelante y empujar y al igual que lo haría normalmente para empujar código a Heroku. Quiero mostrarle que este es exactamente el mismo proceso dentro de Code Engine. Lo que haremos es crear un nuevo ... primero iniciaremos sesión en IBM Cloud y, a partir de ahí, crearemos un nuevo proyecto y, a continuación, seguiremos adelante y lo desplegaremos para ver si funciona.

Así que ahí vamos, hemos seguido adelante y lo hemos desplegado en Heroku primero, solo para asegurarnos de que todos tenemos nuestro código de trabajo y yo sigo adelante y volver a cargar esto y ahí vamos nos estamos moviendo de Heroku a Code Engine para que sepamos que nuestro código funciona. Esto es genial.

Por lo tanto, ahora vamos a obtener Code Engine como parte de esto, por lo que lo primero es que primero tenemos que iniciar sesión en IBM Cloud. Así que voy a seguir adelante e iniciar sesión en IBM Cloud. Si no ha configurado el vídeo de IBM Cloud o si no ha configurado su cuenta de IBM Cloud, si mira más arriba, debería ver un enlace a él, que pondré en el vídeo.

Voy a seguir adelante y copiar mi nombre aquí y luego voy a tomar mi contraseña, iniciar sesión muy bien, que es genial para ver, perfecto. Y ahora lo que haré es ibmcloud ce project create —name amazing product production app. Así que esto crea nuestro agradable, poco ... En primer lugar, el destino. Obtendré mi grupo de recursos predeterminado y luego continuaré y crearé el proyecto. Ahí vamos. Sólo debe tomar un momento-perfecto. Ahora puedes cambiar tu nombre a lo que quieras. Esto es sólo un catch-all para su proyecto, que es útil. A continuación, tomaré el siguiente mandato, que es ibmcloud ce app create —name pythonbackend — build-source . —strategy build packs

Ahora porque ya tengo un requirements.txt, esto será, esta aplicación es lo suficientemente inteligente como para averiguar, " hey es una aplicación python! Así que vamos a seguir adelante y construirlo! ", que es agradable. Así que como puedes ver, está dando el paso uno aquí. Está ejecutando la compilación, lo cual es bueno. Crea una imagen agradable y privada para nosotros también, lo cual es útil. Toma un par de momentos. Ahí vamos y ahora vemos que si queríamos hacer esto sin esperar, que es el -nw, en realidad podemos poner esto en segundo plano y esperar a que aparezca y luego podemos comprobarlo a través de este build run get el nombre real. Siendo que vamos a estar mirando este vivo, vamos a seguir adelante y hacer esto aquí.

¡Perfecto! Así que ahora voy a seguir adelante y abrir esta URL aquí y vino aquí y como se puede ver

"hola, pasando de Heroku a Code Engine"

Y eso es todo. Tomé exactamente el mismo código que hice de Heroku. Creé un nuevo proyecto y luego creé una aplicación y lo acabo de empujar y acaba de funcionar así que imagina lo que puedes hacer con eso por ti mismo. Esto muestra la potencia que es Code Engine y en un nivel gratuito es verdaderamente libre-al igual que Heroku era o será o no será en el futuro. Code Engine es gratuito para siempre, lo que es genial y es de esperar que te haga la vida un poco más fácil.

Muchas gracias por ver y si tienes alguna pregunta, mi cuenta de Twitter es @jjasghar o eres más que bienvenido a enviarme un correo electrónico a awesome@ibm.com. Mi trabajo es ser un nerd personable así que nunca dude en llegar.

Muchas gracias.

Adiós a todos.