Guía de inicio rápido: Crea y despliega una aplicación web en Ruby en Cloud Run

Aprende a usar un solo comando para crear y desplegar una aplicación web de "Hola, mundo" a partir de un código de ejemplo en Google Cloud con Cloud Run.

Si sigues los pasos de esta guía de inicio rápido, Cloud Run creará automáticamente un Dockerfile cuando despliegues desde el código fuente.

Antes de empezar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.

  5. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  6. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Verify that billing is enabled for your Google Cloud project.

  9. Install the Google Cloud CLI.

  10. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  11. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  12. Para definir el proyecto predeterminado de tu servicio de Cloud Run, sigue estos pasos:
     gcloud config set project PROJECT_ID
    Sustituye PROJECT_ID por el ID de tu proyecto. Google Cloud
  13. Si tu proyecto está sujeto a una política de organización de restricción de dominio que restringe las invocaciones no autenticadas, tendrás que acceder al servicio desplegado tal como se describe en la sección Probar servicios privados.

  14. Habilita las APIs Admin de Cloud Run y Cloud Build:

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

    Una vez que se haya habilitado la API Cloud Run Admin, se creará automáticamente la cuenta de servicio predeterminada de Compute Engine.

  15. Concede a la cuenta de servicio de Cloud Build el siguiente rol de gestión de identidades y accesos.

    Haz clic para ver los roles necesarios de la cuenta de servicio de Cloud Build

    Cloud Build usa automáticamente la cuenta de servicio predeterminada de Compute Engine como cuenta de servicio predeterminada de Cloud Build para compilar tu código fuente y tu recurso de Cloud Run, a menos que anules este comportamiento. Para que Cloud Build compile tus fuentes, pide a tu administrador que conceda el rol Compilador de Cloud Run (roles/run.builder) a la cuenta de servicio predeterminada de Compute Engine de tu proyecto:

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
          --role=roles/run.builder
      

    Sustituye PROJECT_NUMBER por el número de tu proyecto Google Cloud y PROJECT_ID por el ID de tu proyecto Google Cloud. Para obtener instrucciones detalladas sobre cómo encontrar el ID y el número de tu proyecto, consulta el artículo Crear y gestionar proyectos.

    La concesión del rol de compilador de Cloud Run a la cuenta de servicio predeterminada de Compute Engine tarda un par de minutos en propagarse.

  16. Escribir la aplicación de ejemplo

    Para escribir una aplicación Ruby, sigue estos pasos:

    1. Crea un directorio llamado helloworld y cambia al directorio:

      mkdir helloworld
      cd helloworld
      
    2. Crea un archivo llamado app.rb y pega el siguiente código en él:

      require "sinatra"
      
      set :bind, "0.0.0.0"
      port = ENV["PORT"] || "8080"
      set :port, port
      
      get "/" do
        name = ENV["NAME"] || "World"
        "Hello #{name}!"
      end

      Este código crea un servidor web básico que escucha el puerto definido por la variable de entorno PORT.

    3. Crea un nombre de archivoGemfile y copia lo siguiente en él:

      source "https://rubygems.org"
      
      gem "sinatra", "~>3.1"
      gem "thin"
      
      group :test do
        gem "rack-test"
        gem "rest-client"
        gem "rspec"
        gem "rspec_junit_formatter"
        gem "rspec-retry"
        gem "rubysl-securerandom"
      end
      
      gem "puma", "~> 6.6"
      gem "rackup", "~> 1.0"
      
    4. Si no tienes instalada la versión 2.0 de Bundler o una posterior, instala Bundler.

    5. Genera un archivo Gemfile.lock ejecutando el siguiente comando:

      bundle install

    6. Crea un archivo llamado Dockerfile en el mismo directorio que los archivos de origen:

      
      # Use the official Ruby image.
      # https://hub.docker.com/_/ruby
      FROM ruby:3.4
      
      # Install production dependencies.
      WORKDIR /usr/src/app
      COPY Gemfile Gemfile.lock ./
      ENV BUNDLE_FROZEN=true
      RUN gem install bundler && bundle config set --local without 'test'
      
      # Copy local code to the container image.
      COPY . ./
      RUN bundle install
      
      # Run the web service on container startup.
      CMD ["ruby", "./app.rb"]
      
    7. Añade un archivo .dockerignore para excluir archivos de tu imagen de contenedor.

      Dockerfile
      README.md
      .ruby-version
      .bundle/
      vendor/
      

    Tu aplicación está terminada y lista para desplegarse.

    Desplegar en Cloud Run desde el código fuente

    Importante: En esta guía de inicio rápido se da por hecho que tienes el rol de propietario o editor en el proyecto que vas a usar. De lo contrario, consulta los permisos necesarios para implementar un recurso de Cloud Run desde el origen.

    La opción Desplegar desde la fuente compila automáticamente una imagen de contenedor a partir del código fuente y la despliega.

    Para desplegar desde el código fuente, sigue estos pasos:

    1. En el directorio del código fuente, despliega la carpeta actual con el siguiente comando:

      gcloud run deploy --source .
      1. Cuando se te pida el nombre del servicio, pulsa Intro para aceptar el nombre predeterminado, por ejemplo, helloworld.

      2. Si se te pide que habilites APIs adicionales en el proyecto, como la API de Artifact Registry, responde pulsando y.

      3. Cuando se te pida que elijas una región, selecciona la región que quieras, por ejemplo, europe-west1.

      4. Si se te pide que crees un repositorio en la región especificada, responde pulsando y.

      5. Si se te pide que permitas el acceso público: responde y. Es posible que no veas esta petición si hay una política de organización de restricción de dominio que lo impida. Para obtener más información, consulta la sección Antes de empezar.

      A continuación, espera unos instantes hasta que se complete el despliegue. Si la operación se realiza correctamente, la línea de comandos mostrará la URL del servicio.

    2. Visita el servicio implementado abriendo la URL del servicio en un navegador web.

    Ubicaciones de Cloud Run

    Cloud Run es regional, lo que significa que la infraestructura que ejecuta tus servicios de Cloud Run se encuentra en una región específica y Google la gestiona para que esté disponible de forma redundante en todas las zonas de esa región.

    Cumplir tus requisitos de latencia, disponibilidad o durabilidad son factores primordiales para seleccionar la región en la que se ejecutan tus servicios de Cloud Run. Por lo general, puedes seleccionar la región más cercana a tus usuarios, pero debes tener en cuenta la ubicación de los otros Google Cloudproductos que utiliza tu servicio de Cloud Run. Usar Google Cloud productos juntos en varias ubicaciones puede afectar a la latencia y al coste de tu servicio.

    Cloud Run está disponible en las siguientes regiones:

    Con sujeción a los precios del nivel 1

    • asia-east1 (Taiwán)
    • asia-northeast1 (Tokio)
    • asia-northeast2 (Osaka)
    • asia-south1 (Bombay, la India)
    • europe-north1 (Finlandia) icono de una hoja CO2 bajo
    • europe-north2 (Estocolmo) icono de una hoja CO2 bajo
    • europe-southwest1 (Madrid) icono de una hoja CO2 bajo
    • europe-west1 (Bélgica) icono de una hoja CO2 bajo
    • europe-west4 (Países Bajos) icono de una hoja CO2 bajo
    • europe-west8 (Milán)
    • europe-west9 (París) icono de una hoja CO2 bajo
    • me-west1 (Tel Aviv)
    • northamerica-south1 (México)
    • us-central1 (Iowa) icono de una hoja CO2 bajo
    • us-east1 (Carolina del Sur)
    • us-east4 (Norte de Virginia)
    • us-east5 (Columbus)
    • us-south1 (Dallas) icono de una hoja CO2 bajo
    • us-west1 (Oregón) icono de una hoja CO2 bajo

    Con sujeción a los precios del nivel 2

    • africa-south1 (Johannesburgo)
    • asia-east2 (Hong Kong)
    • asia-northeast3 (Seúl, Corea del Sur)
    • asia-southeast1 (Singapur)
    • asia-southeast2 (Yakarta)
    • asia-south2 (Delhi, la India)
    • australia-southeast1 (Sídney)
    • australia-southeast2 (Melbourne)
    • europe-central2 Varsovia (Polonia)
    • europe-west10 (Berlín) icono de una hoja CO2 bajo
    • europe-west12 (Turín)
    • europe-west2 (Londres, Reino Unido) icono de una hoja CO2 bajo
    • europe-west3 (Fráncfort, Alemania)
    • europe-west6 (Zúrich, Suiza) icono de una hoja CO2 bajo
    • me-central1 (Doha)
    • me-central2 (Dammam)
    • northamerica-northeast1 (Montreal) icono de una hoja CO2 bajo
    • northamerica-northeast2 (Toronto) icono de una hoja CO2 bajo
    • southamerica-east1 (São Paulo, Brasil) icono de una hoja CO2 bajo
    • southamerica-west1 (Santiago, Chile) icono de una hoja CO2 bajo
    • us-west2 (Los Ángeles)
    • us-west3 (Salt Lake City)
    • us-west4 (Las Vegas)

    Si ya has creado un servicio de Cloud Run, puedes ver la región en el panel de control de Cloud Run de la Google Cloud consola.

    Limpieza

    Eliminar el proyecto de prueba

    Aunque Cloud Run no aplica cargos cuando el servicio no se está usando, es posible que se te cobre por almacenar la imagen de contenedor en Artifact Registry. Puede eliminar su imagen de contenedor o su proyecto Google Cloud para evitar que se le apliquen cargos. Al eliminar tu Google Cloud proyecto, se detendrá la facturación de todos los recursos utilizados en ese proyecto.

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    Siguientes pasos

    Para obtener más información sobre cómo crear un contenedor a partir del código fuente y enviarlo a un repositorio, consulta los siguientes enlaces: