Subir y Ejecutar Aplicaciones en Contenedores de Google Cloud
Resumen
¿Cómo gestionar proyectos en Google Cloud Platform?
Google Cloud Platform (GCP) es un poderoso entorno que proporciona múltiples herramientas para que los desarrolladores y profesionales de IT puedan gestionar aplicaciones en la nube. Comprender cómo ajustar estos servicios a tus necesidades, maximizar la eficiencia del proyecto y asegurar que el código funcione sin problemas, es fundamental.
¿Qué es un proyecto en GCP?
En GCP, un proyecto es el contenedor que alberga todos los recursos como computadoras, redes, discos y máquinas virtuales. Estos elementos residen dentro de un proyecto que precisa ser creado inicialmente para poder trabajar en él. Este proyecto no solo organiza, sino que también controla el acceso, los permisos y el presupuesto.
¿Cómo descargar y preparar la aplicación?
En este contexto, el uso de aplicaciones ya construidas permite un enfoque hacia el despliegue y la operación en lugar de la construcción del código desde cero.
Clonación del repositorio: Utilizar repositorios como GitHub para clonar el proyecto existente.
git clone <URL_DEL_REPOSITORIO>
Esto descarga el proyecto, que en este caso específico, es una sencilla aplicación de Flask escrita en Python.
Explorando el código: Navegar por la estructura del proyecto para identificar las carpetas y archivos relevantes, como app y function. Esto es crucial para entender cómo el código maneja las operaciones principales: la versión raíz, subida de archivos y manejo de errores.
¿Cómo configurar y construir un contenedor en GCP?
La construcción de un contenedor es uno de los procesos esenciales en el despliegue de aplicaciones.
Configuración del entorno GCP:
Asegúrate de que tu proyecto GCP esté configurado correctamente usando gcloud.
gcloud config set project <ID_DEL_PROYECTO>
Verifica que el ID sea exacto, ya que es único para cada proyecto.
Construcción y subida del contenedor:
Utiliza el Dockerfile para construir y enviar el contenedor al Container Registry de GCP.
Este comando compila y etiqueta el contenedor con una versión específica, asegurando que esté listo para la ejecución.
¿Qué sigue después de construir el contenedor?
Con el contenedor manejado en el Container Registry, puedes implementarlo en varios servicios como Compute Engine, Kubernetes Engine, Cloud Run, Cloud Functions o incluso App Engine. Estas plataformas ofrecen distintos ambientes para correr tu aplicación de manera eficiente y escalable.
Consejos prácticos para la gestión en GCP
Automatización: Aprovecha las herramientas GCP para automatizar tareas de despliegue y mantenimiento.
Monitoreo y ajustes: Usa las capacidades de monitoreo de GCP para realizar ajustes según el rendimiento y la demanda.
Experimentación con diversas plataformas: Evalúa cuál de las plataformas en las que puedes ejecutar tu aplicación se ajusta mejor a tus necesidades específicas de carga y costo.
Es importante explorar continuamente la documentación de GCP e interactuar con sus comunidades para aprender de otros usuarios. La práctica constante y el aprendizaje continuo son claves para dominar y optimizar el uso de GCP en la gestión de tus proyectos en la nube.
Creo que nadie ha reportado que gclod pida un log in. En mi caso sucedió.
Para hacer log in se hace con el siguiente comando
gcloud auth login --no-launch-browser
Copian la URL, la pegan un un navegador, seleccionan la cuanta con la que se registraron en GCP, copian el token de autorización, lo pegan en la consola, y listo, debería quedar listo.
Esto lo deben de hacer antes de iniciar cualquier configuración del proyecto.
para clonar luego que me saliera el error fue copiar del enlace directo de github:
Muchas gracias por tu aporte, ya lo añadimos también a los recursos de la clase 😄
super, solo faltaba ese pequeño detalle, jajajajaja
Creación de la docker image en el container registry
clonar el repo:
configurar el proyecto: gcloud config set project project_id
en el repo, donde esta el docker file, construir la imagen de docker: gcloud builds submit --tag gcr.io/project_id/webapp:0.0.1
NOTA: Sigan exactamente las instrucciones no me salía al principio y es porque no había entrado a la carpeta app 🤦♂️ hahaha.
Hasta este punto vamos viento en popa, hasta aqui mi reporte Joaquin xD
Nunca mencionaron si se debe clonar el repo a la maquina virtual de GCP o a mi equipo local.
Gracias por el curso, interesante y práctico.
Yo utilicé el Cloud Shell, allí encontré un problema, que al realizar el git clone da el siguiente error:
hdomin@cloudshell:~(big-moments-dev-live-324917)$ git clone git@github.com:jdaroesti/google-photos-clon.gitCloning into 'google-photos-clon'...git@github.com:Permissiondenied(publickey).fatal:Could not read from remote repository.
Lo resolví clonando el proyecto a mi computadora y luego cargándo el .zip a la consola.
Me pasó exactamente lo mismo! =(
Luego quise correr el comando "git" en la consola de cloud de google instalada windows y me tiraba el error de que no reconocía el comando.
Lo solucioné descargando y descomprimiendo el proyecto de Git en mi computadora y con la consola de google cloud instalada me coloqué en el directorio de mi equipo ya descomprimido y funciono perfecto! :D
El comando para hacer el contenedor (debes estar en la carpeta app):
gcloud config set project <id-del-proyecto>
alguien me podría ayudar? que CLI uso el profe? el cmd de la compu? Google sheld? o Linux? no entendí que CLI uso el profe
el sheld de google en la plataforma
No se puede presentar el examen, se repite la ultima clase de forma indefinida
Hola. Los cursos de Google no tiene examen habilitado, todavía.
no me dejo generar el clone del proyecto de google photos.
Buen día. Estimados, les comento que he padecido bastante con esta práctica, pues desafortunadamente no quería instalar configurar el contenedor por terminal, ya que mi sistema tiene dos versiones de pip. El problema es que me pedía siempre actualización de la versión de pip a 22.2.1 y lo realicé con la mala suerte que la configuración siempre se encontraba con la versión no actualizada 22.0.4. Intenté de todo, pero lo único que me funcionó fue instalar todos los componentes de google cloud, es decir, los que encontramos en: gcloud components list y los instalé con gcloud components install "Nombre_del_SDK". Si les pasa, espero les sirva, de lo contrario, gracias por escuchar o leer.
No dejen de revisar el id del proyecto en el administrador de recursos.
En mi caso personal el proyecto tenia un nombre y por alguna razon, el id del proyecto tenia este mismo nombre pero incluia un codigo numerico adicional,
Luego de ello, todo fluyo sin problemas
Muchas gracias, ya lo añadimos también a los recursos de la clase :D
Hola , trate de enviar CSS y JS al contenedor con el mismo comando pero no me funciono, sigue enviando los mismo archivos originales que enviamos en esta clase. ¿Cómo hago para enviar mas archivos en la imagen?
Antes de enviarlo a la nube, prueba ejecutando tu contenedor con tus modificaciones de forma local y si todo sale bien lo subes a gcp.
no se podria hacer todo esto directamente desde el panel de google cloud directamente? por que hacerlo desde la terminal cuando no se vio durante todo el curso nada desde la terminal? saludos
tengo problemas para salir de la visualización del código Python y volver a la consola, alguien sabe cómo debería hacer?
Por qué el código en GitHub está escrito en Python en lugar de Go ?
ERROR: (gcloud.builds.submit) The user is forbidden from accessing the bucket [big-moments-dev-live-463302_cloudbuild]. Please check your organization's policy or if the user has the "serviceusage.services.use" permission. Giving the user Owner, Editor, or Viewer roles may also fix this issue. Alternatively, use the --no-source option and access your source code via a different method.
Verificar el Estado de la Compilación:
Después de enviar la compilación, Cloud Build comenzará a construir tu contenedor. Puedes verificar el estado de la compilación y ver los registros de la compilación utilizando la consola de Cloud Build o el comando gcloud builds list.
Una vez que la compilación se complete con éxito, tu contenedor estará disponible en Google Container Registry bajo la etiqueta especificada (gcr.io/my-project/my-container en el ejemplo). Puedes usar este contenedor para desplegar tu aplicación en Google Kubernetes Engine u otros entornos que admitan contenedores Docker.