Saltar al contenido

Contenedores de aplicaciones de Google App Engine para Cloud Run

Google App Engine header


Publicado por Wesley Chun (@wescpy), Abogado desarrollador, Google Cloud

Encabezados de Google App Engine

Una migración opcional

Estación de migración sin servidor es una miniserie de videos de Expediciones sin servidor se centra en ayudar a los desarrolladores a modernizar sus aplicaciones que se ejecutan en un Plataforma informática sin servidor desde la nube de google. Los episodios anteriores le mostraron cómo migrar de los servicios de App Engine más antiguos y obsoletos (entorno predeterminado) a equivalentes de Google Cloud independientes más nuevos, como Cloud Datastore. El episodio de cruce de productos de hoy es ligeramente diferente de este en que difiere completamente de App Engine y contiene esas aplicaciones para Cloud Run.

No hay duda de que la industria se ha movido hacia la contenedorización como el mecanismo de entrega de aplicaciones durante la última década. Sin embargo, Docker y el uso de contenedores no estaban disponibles para los primeros desarrolladores de App Engine hasta que su entorno flexible estuvo disponible años más tarde. Avance rápido a los tiempos de hoy, cuando los desarrolladores tienen muchas más opciones para elegir de una Google Cloud cada vez más abierta. Google ha expresado Asistencia a largo plazo para App Enginey los usuarios no necesitan contener sus aplicaciones, por lo que esta es una Opcional Migración. Está destinado principalmente a aquellos que han decidido agregar la contenedorización a su estrategia de entrega de aplicaciones y desean migrar explícitamente a Cloud Run.

Si está pensando en la contenedorización de aplicaciones, el video cubre algunas de las principales razones por las que debe considerar esto: no está sujeto a las restricciones tradicionales sin servidor como el lenguaje de desarrollo o el uso de binarios (flexibilidad); Si su código, dependencias y pasos para crear e implementar contenedores no han cambiado, puede recrear la misma imagen con confianza (reproducibilidad). Su aplicación se puede implementar en otro lugar o revertir a una imagen de trabajo anterior si es necesario (reutilizable); y tienes muchas más opciones para alojar tu aplicación (portabilidad).

Migración y contenedorización

Servicios de App Engine heredados están disponibles a través de una serie de API empaquetadas patentadas. Como puede adivinar, estos servicios no están disponibles en Cloud Run. Por lo tanto, si desea convertir su aplicación en contenedores para Cloud Run, debe estar «lista para funcionar». migrado a equivalentes independientes de Google Cloud u otras alternativas de terceros. Por ejemplo en un ultimo episodio, mostramos cómo hacerlo Migrar de App Engine NDB a Cloud NDB para acceder al almacenamiento de datos.

Si bien recientemente comenzamos a producir videos para tales migraciones, los desarrolladores ya pueden acceder a ellos. Muestras de código y tutoriales de Codelab los guía a través de una variedad de migraciones. En el video de hoy, tenemos aplicaciones de muestra de Python 2 y Python 3 que han sido vendidas por servicios heredados y están listas para ser almacenadas en contenedores para Cloud Run. Es más probable que se utilicen las aplicaciones de App Engine de Python 2 que acceden al almacén de datos NDB en la nube si bien sería Cloud Datastore para usuarios de Python 3, este es el punto de partida para esta migración.

Dado que «solo» estamos cambiando de plataforma de ejecución, no hay cambios en el código de la aplicación en sí. Toda esta migración se basa completamente en cambiar las configuraciones de las aplicaciones de App Engine a Cloud Run. Específicamente, artefactos de App Engine como app.yaml, appengine_config.py, y el lib Las carpetas no se utilizan en Cloud Run y ​​se eliminarán. SOBRE Dockerfile se implementa para crear su contenedor. Aplicaciones con configuraciones más complejas en su app.yaml Es probable que los archivos necesiten un equivalente service.yaml Archivo para Cloud Run: si es así, lo encontrará esta herramienta de conversión app.yaml-to-service.yaml prácticamente. Si sigue las mejores prácticas, también lo será .dockerignore Archivo.

App Engine y Cloud Functions se basan en fuentes, y Google Cloud utiliza automáticamente un servidor HTTP estándar como. proporciona gunicorn. Cloud Run es un poco más «DIY», ya que los usuarios deben proporcionar una imagen de contenedor, es decir, agrupar nuestro propio servidor. En este caso elegimos gunicorn explícitamente agregándolo al comienzo del existente requirements.txt archivo (s) de paquete requerido como puede ver en la captura de pantalla a continuación. También se ilustra Dockerfile Dónde gunicorn comienza como el último paso para implementar su aplicación. Las únicas diferencias para el equivalente de Python 2 Dockerfile son: a) requieren el paquete Cloud NDB (google-cloud-ndb) en lugar de Cloud Datastore yb) comience con una imagen base de Python 2.

Imagen de The Python 3 Requirements.txt y Dockerfile

El Python 3 requirements.txt y Dockerfile

Próximos pasos

Para guiar a los desarrolladores a través de las migraciones, siempre «COMENZAMOS» con una aplicación en funcionamiento y luego realizamos las actualizaciones necesarias, que culminan en una aplicación «FINALIZADA» en funcionamiento. Para esta migración, la aplicación de muestra Python 2 COMIENZA con el Código del módulo 2a y termina con el Código del módulo 4a. Asimismo, la aplicación Python 3 COMIENZA con el Código del módulo 3b y termina con el Código del módulo 4b. De esta manera, si algo sale mal durante la migración, siempre puede volver a INICIAR o comparar su solución con nuestra FINALIZACIÓN. Si está considerando esta migración para sus propias aplicaciones, le recomendamos que la pruebe con una aplicación de muestra como la nuestra antes de considerarla para la suya. SOBRE Codelab correspondiente Además del video que puede usar como guía, lo guiará paso a paso a través de este ejercicio.

Todos los módulos de migración, sus videos (si están publicados), los tutoriales de Codelab, el código START y FINISH, etc.se pueden encontrar en el Repositorio de migración. Esperamos que algún día podamos manejar otros tiempos de ejecución heredados como Java 8, así que estad atentos. Continuaremos nuestro camino desde App Engine hasta Cloud Run en el Módulo 5, pero sin conocimiento explícito de contenedores, Docker o DockerfileS. Modernizar su flujo de trabajo de desarrollo para usar contenedores y mejores prácticas como construir una canalización de CI / CD no siempre es fácil. ¡Esperamos que contenido como este te ayude a avanzar en esa dirección!



Source link