Obtén acceso a más de 700 labs y cursos

Implementa una aplicación alojada en contenedores en Cloud Run

Lab 1 hora universal_currency_alt 5 créditos show_chart Introductorio
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Obtén acceso a más de 700 labs y cursos

Descripción general

Cloud Run es una plataforma de procesamiento completamente administrada que te permite ejecutar contenedores sin estado que se pueden invocar con solicitudes HTTP. Puedes implementar código escrito en cualquier lenguaje de programación en Cloud Run si puedes crear una imagen de contenedor a partir de él. Puedes usar la opción de implementación basada en la fuente que compila el contenedor por ti cuando desarrollas tu aplicación en Go, Node.js, Python, Java, .NET Core o Ruby.

Cloud Run no tiene servidores y ejecuta tus contenedores en la infraestructura escalable de Google. Se basa en Knative y te permite elegir entre ejecutar tus contenedores completamente administrados con Cloud Run o en tu clúster de Google Kubernetes Engine con Cloud Run en GKE.

Cloud Run funciona bien con otros servicios de Google Cloud, por lo que puedes crear aplicaciones con todas las funciones sin dedicar demasiado tiempo a operar, configurar y escalar tu servicio de Cloud Run.

Objetivos

En este lab, aprenderás a hacer lo siguiente:

  • Usar Cloud Build para crear una imagen de contenedor de Docker para tu aplicación
  • Implementar la imagen de contenedor en Cloud Run
  • Ejecutar y probar la aplicación alojada en contenedores

Proceso de compilación e implementación

Configuración

En cada lab, recibirá un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.

  1. Accede a Qwiklabs desde una ventana de incógnito.

  2. Ten en cuenta el tiempo de acceso del lab (por ejemplo, 1:15:00) y asegúrate de finalizarlo en el plazo asignado.
    No existe una función de pausa. Si lo necesita, puede reiniciar el lab, pero deberá hacerlo desde el comienzo.

  3. Cuando esté listo, haga clic en Comenzar lab.

  4. Anote las credenciales del lab (el nombre de usuario y la contraseña). Las usarás para acceder a la consola de Google Cloud.

  5. Haga clic en Abrir Google Console.

  6. Haga clic en Usar otra cuenta, copie las credenciales para este lab y péguelas en el mensaje emergente que aparece.
    Si usa otras credenciales, se generarán errores o incurrirá en cargos.

  7. Acepta las condiciones y omite la página de recursos de recuperación.

Activa Google Cloud Shell

Google Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud.

Google Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.

  1. En la consola de Cloud, en la barra de herramientas superior derecha, haz clic en el botón Abrir Cloud Shell.

    Ícono de Cloud Shell destacado

  2. Haz clic en Continuar.

El aprovisionamiento y la conexión al entorno demorarán unos minutos. Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. Por ejemplo:

ID del proyecto destacado en la terminal de Cloud Shell

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con el completado de línea de comando.

  • Puedes solicitar el nombre de la cuenta activa con este comando:
gcloud auth list

Resultado:

Credentialed accounts: - @.com (active)

Resultado de ejemplo:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Puedes solicitar el ID del proyecto con este comando:
gcloud config list project

Resultado:

[core] project =

Resultado de ejemplo:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: La documentación completa de gcloud está disponible en la guía de descripción general de gcloud CLI .

Tarea 1: Configura tu proyecto y tu entorno

En esta tarea, configurarás las variables de entorno para tu entorno de Cloud Shell y habilitarás las APIs de Google pertinentes para usarlas en este lab.

  1. Accede a la consola de Google Cloud con tus credenciales de lab y abre la ventana de terminal de Cloud Shell.

  2. Para configurar el ID de tu proyecto y las variables de entorno de la región, en Cloud Shell, ejecuta los siguientes comandos:

    PROJECT_ID=$(gcloud config get-value project) REGION={{{project_0.default_region|Region}}}
  3. Para habilitar las APIs correspondientes, ejecuta el siguiente comando:

    gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com

Para verificar este objetivo, haz clic en Revisar mi progreso. Habilitar las APIs correspondientes.

Tarea 2: Prueba la aplicación de forma local

En esta tarea, copiarás una aplicación de ejemplo de Node.js. Luego, la crearás y ejecutarás de forma local en tu entorno de Cloud Shell.

Copia la aplicación

  1. Crea un directorio app y conviértelo en el directorio de trabajo actual:

    mkdir app && cd app
  2. Para copiar la app de Cloud Storage y extraer sus archivos, ejecuta el siguiente comando:

    gsutil cp gs://cloud-training/CBL515/sample-apps/sample-node-app.zip . && unzip sample-node-app

Instala dependencias de la aplicación

  1. Cambia al directorio de la app:

    cd sample-node-app
  2. Para ver el código fuente de la aplicación, consulta el contenido del archivo server.js en el directorio de nivel superior:

    cat server.js Este es el punto de entrada principal de la aplicación. Esta aplicación de ejemplo es un servicio básico de venta minorista que proporciona una API que devuelve datos de productos cuando se hacen solicitudes a la aplicación a través de HTTP.
  3. Para instalar los módulos de dependencia de la app de forma local, ejecuta el siguiente comando:

    npm install

Prueba la aplicación

  1. Para ejecutar la app de manera local, utiliza el siguiente comando:

    npm start

    Deberías ver el siguiente resultado:

    > sample-node-app@1.0.0 start > node server.js Sample-node-app listening on port 8080!
  2. Para abrir una segunda ventana de terminal de Cloud Shell, en la barra de navegación de Cloud Shell, haz clic en (Agregar).

  3. Prueba la API de ejemplo haciendo algunas solicitudes HTTP a la aplicación:

    curl http://localhost:8080/service/products | jq Usamos la herramienta de línea de comandos jq para analizar y dar formato a la respuesta JSON de la aplicación.

    La aplicación debería responder con una lista de productos:

    [ { "id": "1YMWWN1N4O", "name": "Home Barista Kit", "description": "Always wanted to brew coffee with Chemex and Aeropress at home?", "picture": "static/img/products/barista-kit.jpg", "cost": 124, "categories": [ "cookware" ] }, { "id": "L9ECAV7KIM", "name": "Terrarium", "description": "This terrarium will look great in your white painted living room.", "picture": "static/img/products/terrarium.jpg", "cost": 36.45, "categories": [ "gardening" ] }, { "id": "2ZYFJ3GM2N", "name": "Film Camera", "description": "This camera looks like it's a film camera, but it's actually digital.", "picture": "static/img/products/film-camera.jpg", "cost": 2245, "categories": [ "photography", "vintage" ] }, { "id": "LS4PSXUNUM", "name": "Metal Camping Mug", "description": "You probably don't go camping that often but this is better than plastic cups.", "picture": "static/img/products/camp-mug.jpg", "cost": 24.33, "categories": [ "cookware" ] }, { "id": "9SIQT8TOJO", "name": "City Bike", "description": "This single-gear bike probably cannot climb the hills of San Francisco.", "picture": "static/img/products/city-bike.jpg", "cost": 789.5, "categories": [ "cycling" ] }, { "id": "6E92ZMYYFZ", "name": "Air Plant", "description": "Have you ever wondered whether air plants need water? Buy one and figure out.", "picture": "static/img/products/air-plant.jpg", "cost": 12.3, "categories": [ "gardening" ] } ]
  4. Haz una segunda solicitud a la API para recuperar un producto específico por ID:

    curl http://localhost:8080/service/products/1YMWWN1N4O | jq

    La aplicación debería responder con detalles sobre el producto específico:

    { "id": "1YMWWN1N4O", "name": "Home Barista Kit", "description": "Always wanted to brew coffee with Chemex and Aeropress at home?", "picture": "static/img/products/barista-kit.jpg", "cost": 124, "categories": [ "cookware" ] }
  5. Para salir de la aplicación, en la primera ventana de terminal de Cloud Shell, escribe Ctrl + C.

Tarea 3: Aloja la aplicación en contenedores con Cloud Build

Cloud Build es un servicio que ejecuta tus compilaciones en Google Cloud. Con Cloud Build, puedes crear, probar e implementar tu aplicación de forma continua con una canalización de integración y entrega continuas (CI/CD).

Para proporcionar instrucciones a Cloud Build, crea un archivo de configuración de compilación que contenga un conjunto de tareas. Estas instrucciones pueden configurar compilaciones para que recuperen dependencias, ejecuten pruebas de unidades y de integración, realicen análisis estáticos y creen artefactos con herramientas de compilación como Docker, Gradle, Maven y otras.

En esta tarea, usarás Cloud Build para crear un contenedor de Docker para tu aplicación y enviar la imagen de contenedor resultante a un repositorio en Artifact Registry.

Crea el repositorio

  1. En el campo Buscar de la barra de título de la consola de Google Cloud, escribe Artifact Registry, haz clic en Buscar y, luego, en Artifact Registry.

  2. Haz clic en el ícono Fijar (Fijar) junto a Artifact Registry.

  3. Haz clic en Crear repositorio.

  4. En la página Crear repositorio, proporciona la siguiente información y deja el resto de la configuración con los valores predeterminados:

    Nombre

    my-repo

    Formato

    Docker

    Tipo de ubicación

    Región

    Región

  5. Haz clic en Crear y espera a que se cree el repositorio.

Autentica a Docker para usar el repositorio

Antes de poder enviar imágenes al repositorio, debes configurar Docker para que autentique solicitudes al repositorio en Artifact Registry.

  1. Para configurar la autenticación en los repositorios de Docker de la región , ejecuta el siguiente comando en Cloud Shell:

    gcloud auth configure-docker ${REGION}-docker.pkg.dev
  2. Cuando se te solicite, escribe Y.

Crea el archivo de configuración de compilación

Para proporcionar instrucciones a Cloud Build, crea un archivo de configuración de compilación que contenga un conjunto de tareas. Estas instrucciones pueden configurar compilaciones para que recuperen dependencias, ejecuten pruebas de unidades y de integración, realicen análisis estáticos y creen artefactos con compiladores como Docker, Gradle, Maven y otros.

  1. Establece una variable de entorno para el nombre del repositorio:

    REPO=${REGION}-docker.pkg.dev/${PROJECT_ID}/my-repo
  2. Crea el archivo de configuración de compilación:

    cat > cloudbuild.yaml <<EOF steps: - name: 'gcr.io/cloud-builders/docker' args: [ 'build', '-t', '${REPO}/sample-node-app-image', '.' ] images: - '${REPO}/sample-node-app-image' EOF
  3. Consulta el archivo cloudbuild.yaml:

    cat cloudbuild.yaml El paso de compilación compila una imagen de contenedor con el compilador Docker a partir del código fuente y el Dockerfile, que se encuentran en el directorio actual. Luego, la imagen compilada se envía al repositorio en Artifact Registry.

Crea el contenedor

  1. Para crear el contenedor con Cloud Build, ejecuta el siguiente comando:

    gcloud builds submit --region=$REGION --config=cloudbuild.yaml

    Este es un resultado similar (parcial) del comando:

    ... ... b3389e626b47: Pushed 38610c0cfc18: Pushed latest: digest: sha256:b6007afa5e8fb05d8ac617ddf5fee8d58cc6ba8901038c97f8e360520c5fdbf4 size: 3051 DONE ---------------------------------------------------------------------------------------------------------------------------------------- ID: f803a828-dc50-41cb-bc94-71dfb8c83648 CREATE_TIME: 2023-02-28T18:28:41+00:00 DURATION: 1M23S SOURCE: gs://qwiklabs-gcp-02-26de4317fac8_cloudbuild/source/1677608919.352478-c157fa4ae8544b3dbba23b5f29145286.tgz IMAGES: asia-east1-docker.pkg.dev/qwiklabs-gcp-02-26de4317fac8/my-repo/sample-node-app-image (+1 more) STATUS: SUCCESS

    Cloud Build primero sube el código fuente de tu aplicación y otros archivos del directorio especificado a Cloud Storage. Luego, compila la imagen de contenedor que contiene tu aplicación a partir de las instrucciones especificadas en la configuración de compilación y el Dockerfile, etiqueta la imagen con el nombre de imagen especificado y la envía al repositorio en Artifact Registry.

Consulta el historial de compilaciones

  1. En el campo Buscar de la barra de título de la consola de Google Cloud, escribe Cloud Build, haz clic en Buscar y, luego, en Cloud Build.

  2. En Región, selecciona .

  3. Haz clic en el ID de la compilación que se encuentra al principio de la lista.

    Se mostrarán los detalles de la compilación, incluido su registro.

Consulta la imagen de contenedor en Artifact Registry

  1. Después de que se complete el comando de compilación, en el menú de navegación (menú de navegación) de la consola de Google Cloud, haz clic en Artifact Registry > Repositorios.

  2. Haz clic en el repositorio my-repo para mostrar la imagen de contenedor sample-node-app-image.

Para verificar este objetivo, haz clic en Revisar mi progreso. Crear una imagen de contenedor con Cloud Build.

Tarea 4: Implementar el contenedor en Cloud Run

Con la imagen de contenedor creada, ahora puedes implementarla en Cloud Run. Hay dos enfoques para las implementaciones en Cloud Run:

  • Cloud Run administrado: Un modelo de servicio completamente administrado en el que Cloud Run administra todo el ciclo de vida del contenedor. En este lab, usarás este enfoque.

  • Cloud Run en Anthos: Cloud Run con una capa adicional de control. Esto te permite traer tus propios clústeres y Pods de GKE.

En esta tarea, implementarás tu imagen de contenedor en el servicio de Cloud Run completamente administrado en Google Cloud.

  1. Para implementar la imagen de contenedor, ejecuta el siguiente comando en Cloud Shell:

    gcloud run deploy sample-node-app --image ${REPO}/sample-node-app-image --region $REGION --allow-unauthenticated La opción allow-unauthenticated permite acceder al servicio sin necesidad de autenticación.
  2. Una vez que se complete el comando, en el menú de navegación (menú de navegación) de la consola de Google Cloud, haz clic en Cloud Run.

  3. Para mostrar los detalles del servicio de Cloud Run, haz clic en el nombre del servicio sample-node-app.

Para verificar este objetivo, haz clic en Revisar mi progreso. Implementar la imagen de contenedor en Cloud Run.

Tarea 5: Prueba la aplicación en Cloud Run

  1. Para verificar que el servicio se esté ejecutando y esté disponible para aceptar solicitudes, ejecuta el siguiente comando en Cloud Shell:

    gcloud run services list

    El resultado del comando es similar al siguiente:

    ✔ SERVICE: sample-node-app REGION: asia-east1 URL: https://sample-node-app-dduno3adrq-uc.a.run.app LAST DEPLOYED BY: student-04-329a97f025fd@qwiklabs.net LAST DEPLOYED AT: 2023-02-28T22:21:04.803928Z
  2. En el resultado del comando, copia el valor de la URL, pégalo en el comando curl y agrega service/products al final de la URL, como se muestra a continuación. Redirige el resultado al comando jq con una barra lateral y presiona Intro:

    curl https://sample-node-app-dduno3adrq-uc.a.run.app/service/products | jq

    El resultado debería ser similar al que recibiste de la aplicación cuando la ejecutaste de forma local en una tarea anterior.

Para verificar este objetivo, haz clic en Revisar mi progreso. Probar la aplicación implementada en Cloud Run

¡Felicitaciones!

En este lab:

  • Usaste Cloud Build para crear una imagen de contenedor de Docker para tu aplicación e implementaste esta imagen en Cloud Run.
  • También probaste la aplicación de forma local y en Cloud Run para verificar que funcionara según lo esperado.

Próximos pasos / Más información

Para obtener más información, consulta la documentación sobre lo siguiente:

Copyright 2020 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.

Antes de comenzar

  1. Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
  2. .
  3. Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
  4. En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar

Usa la navegación privada

  1. Copia el nombre de usuario y la contraseña proporcionados para el lab
  2. Haz clic en Abrir la consola en modo privado

Accede a la consola

  1. Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
  2. Acepta las condiciones y omite la página de recursos de recuperación
  3. No hagas clic en Finalizar lab, a menos que lo hayas terminado o quieras reiniciarlo, ya que se borrará tu trabajo y se quitará el proyecto

Este contenido no está disponible en este momento

Te enviaremos una notificación por correo electrónico cuando esté disponible

¡Genial!

Nos comunicaremos contigo por correo electrónico si está disponible

Un lab a la vez

Confirma para finalizar todos los labs existentes y comenzar este

Usa la navegación privada para ejecutar el lab

Usa una ventana de navegación privada o de Incógnito para ejecutar el lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.