1. Introducción
Cloud Run es una plataforma administrada que te permite ejecutar contenedores sin estado que se pueden invocar a través de solicitudes HTTP. Cloud Run es una plataforma sin servidores que quita la complejidad de la administración de la infraestructura para que puedas enfocarte en lo que más importa: compilar aplicaciones extraordinarias.
Se basa en Knative, lo que te permite ejecutar tus contenedores completamente administrados con Cloud Run o en el clúster de Google Kubernetes Engine con Cloud Run en GKE.
El objetivo de este codelab es que compiles una imagen de contenedor y la implementes en Cloud Run.
2. Configuración y requisitos
Configuración del entorno de autoaprendizaje
- Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.
- El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una cadena de caracteres que no se utiliza en las APIs de Google. Puedes actualizarla cuando quieras.
- El ID del proyecto es único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). La consola de Cloud genera automáticamente una cadena única. Por lo general, no importa cuál sea. En la mayoría de los codelabs, deberás hacer referencia al ID de tu proyecto (suele identificarse como
PROJECT_ID
). Si no te gusta el ID que se generó, podrías generar otro aleatorio. También puedes probar uno propio y ver si está disponible. No se puede cambiar después de este paso y se usa el mismo durante todo el proyecto. - Recuerda que hay un tercer valor, un número de proyecto, que usan algunas APIs. Obtén más información sobre estos tres valores en la documentación.
- A continuación, deberás habilitar la facturación en la consola de Cloud para usar las APIs o los recursos de Cloud. Ejecutar este codelab no costará mucho, tal vez nada. Para cerrar recursos y evitar que se generen cobros más allá de este instructivo, puedes borrar los recursos que creaste o borrar el proyecto. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de $300.
Google Cloud Shell
Si bien Google Cloud se puede operar de manera remota desde tu laptop, en este codelab usaremos Google Cloud Shell, un entorno de línea de comandos que se ejecuta en la nube.
Cloud Shell es un entorno de desarrollo y operaciones en línea al que puedes acceder desde cualquier lugar con tu navegador. Puedes administrar tus recursos con su terminal en línea precargada con utilidades como la herramienta de línea de comandos de gcloud, kubectl y muchas más. También puedes desarrollar, compilar, implementar y depurar tus apps basadas en la nube con el editor en línea de Cloud Shell.
Esta máquina virtual está cargada con todas las herramientas de desarrollo que necesitas. Ofrece un directorio principal persistente de 5 GB y se ejecuta directamente en Google Cloud, lo que mejora considerablemente el rendimiento de la red y la autenticación. Esto significa que todo lo que necesitarás para este Codelab es un navegador (sí, funciona en una Chromebook).
- Para activar Cloud Shell desde la consola de Cloud, simplemente haz clic en Activar Cloud Shell :
Si es la primera vez que inicias Cloud Shell, verás una pantalla intermedia que describe en qué consiste. Si apareció una pantalla intermedia, haz clic en Continuar.
El aprovisionamiento del entorno solo debería tardar unos segundos :
Una vez que te conectes a Cloud Shell, deberías ver que ya te autenticaste :
gcloud auth list
Resultado del comando
Credentialed Accounts ACTIVE: * ACCOUNT: <my-account>@<mydomain>
El proyecto también debería estar configurado como PROJECT_ID
(suponiendo que seleccionaste un proyecto en la consola web) :
gcloud config list project
Resultado del comando
[core] project = <PROJECT_ID>
Si, por algún motivo, el proyecto no está configurado, solo emite el siguiente comando:
gcloud config set project <PROJECT_ID>
Si no conoce su PROJECT_ID
, Consulta el menú desplegable en la parte superior de la consola de Cloud :
También puedes consultar los detalles de tu proyecto en la sección "Configuración y utilidades" sección:
Cloud Shell también configura algunas variables de entorno de forma predeterminada, lo que puede resultar útil cuando ejecutas comandos futuros.
echo $GOOGLE_CLOUD_PROJECT
Resultado del comando
<PROJECT_ID>
- Por último, puedes configurar la zona predeterminada :
gcloud config set compute/zone us-central1-f
Puedes elegir diferentes zonas. Para obtener más información, consulta Regiones y zonas.
Habilita la API de Cloud Run
En Cloud Shell, habilite la API de Cloud Run:
gcloud services enable run.googleapis.com
Si se realizó correctamente, se mostrará un mensaje similar a este :
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
3. Escriba la aplicación de ejemplo
Compilaremos una aplicación ASP.NET C# simple que responda a las solicitudes HTTP.
Para crear tu aplicación, usa la herramienta de línea de comandos de dotnet
en Cloud Shell:
dotnet new web -o helloworld-csharp
Cambia al directorio helloworld-csharp
:
cd helloworld-csharp
Luego, actualiza Program.cs
para que coincida con lo siguiente:
var builder = WebApplication.CreateBuilder(args); var port = Environment.GetEnvironmentVariable("PORT") ?? "8080"; var url = $"http://0.0.0.0:{port}"; builder.WebHost.UseUrls(url); var app = builder.Build(); app.MapGet("/", () => "Hello World!"); app.Run();
Con este código, se crea un servidor web básico que escucha en el puerto definido por la variable de entorno PORT
y responde con Hello World
.
Para probar la app, ejecútala de forma local en Cloud Shell. Deberías ver que escucha en el puerto 8080:
$ dotnet run Using launch settings from /home/atameldev/helloworld-csharp/Properties/launchSettings.json... Hosting environment: Development Content root path: /home/atameldev/helloworld-csharp Now listening on: http://0.0.0.0:8080 Application started. Press Ctrl+C to shut down.
4. Implementa en Cloud Run
Implementa tu aplicación en Cloud Run con el siguiente comando:
gcloud run deploy hello-world \ --allow-unauthenticated \ --region us-central1 \ --source .
hello-world
es el nombre del servicio.- La marca
allow-unauthenticated
implementa el servicio como un servicio disponible públicamente sin requisitos de autenticación. us-central1
es la región en la que se implementará la app.- La marca
source
determina la ubicación de la fuente que se compilará. Cloud Run usa paquetes de compilación para crear automáticamente un contenedor a partir del código fuente.
Espera algunos minutos hasta que se complete la implementación. Si la operación es exitosa, la línea de comandos mostrará la URL de servicio:
Service [hello-world] revision [hello-world-00001-yos] has been deployed and is serving 100 percent of traffic. Service URL: https://helloworld-wdl7fdwaaa-uc.a.run.app
Ahora puedes abrir la URL de servicio en un navegador web para visitar el contenedor implementado :
¡Felicitaciones! Acabas de implementar una aplicación empaquetada en una imagen de contenedor en Cloud Run. Cloud Run escala la imagen del contenedor automáticamente y de forma horizontal para controlar las solicitudes que se reciben y, luego, reduce la escala cuando disminuye la demanda. Solo debes pagar por la CPU, la memoria y las herramientas de redes que se utilicen durante la administración de la solicitud.
5. Es hora de limpiar
Puedes borrar tu proyecto de GCP para evitar incurrir en cargos, lo que detendrá la facturación de todos los recursos usados en ese proyecto, o simplemente borrar el servicio de Cloud Run:
gcloud run services delete helloworld
6. Próximos pasos
Un buen próximo paso sería Realizar la implementación en Cloud Run en GKE.
Si deseas obtener más información para compilar un contenedor HTTP sin estado adecuado para Cloud Run a partir de código fuente y enviarlo a Container Registry, consulta lo siguiente: