Guía de inicio rápido para implementar un servicio de Ruby en Cloud Run

Aprende a crear una aplicación simple de Hello World, empaquetarla en una imagen de contenedor, subirla a Artifact Registry y, luego, implementarla en Cloud Run.

Antes de comenzar

  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. Make sure that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

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

    Go to project selector

  7. Make sure that billing is enabled for your Google Cloud project.

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. Para configurar el proyecto predeterminado para tu servicio de Cloud Run:
     gcloud config set project PROJECT_ID
    reemplaza PROJECT_ID por el nombre del proyecto que creaste para esta guía de inicio rápido.
  11. Si estás bajo una política de la organización de restricción de dominios que restringe las invocaciones no autenticadas para tu proyecto, deberás acceder al servicio implementado como se describe en Prueba servicios privados.

Escriba la aplicación de ejemplo

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

  1. Crea un directorio nuevo llamado helloworld y usa el comando de cambio de directorio en él:

    mkdir helloworld
    cd helloworld
    
  2. Crea un archivo llamado app.rb y pega el código siguiente 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

    Con este código, se crea un servidor web básico que escucha en el puerto definido por la variable de entorno PORT.

  3. Crea un archivo llamado Gemfile y copia el siguiente código 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
    
  4. Si no tienes instalado Bundler 2.0 o superior, instala Bundler.

  5. Genera un archivo Gemfile.lock mediante la ejecución del siguiente comando:

    bundle install

  6. Crea un archivo nuevo llamado Dockerfile en el mismo directorio que los archivos fuente:

    
    # Use the official Ruby image.
    # https://hub.docker.com/_/ruby
    FROM ruby:3.2-buster
    
    # 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. Agrega un archivo .dockerignore para excluir archivos de tu imagen de contenedor.

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

La app está lista para implementarse.

Implementa en Cloud Run desde la fuente

Importante: En esta guía de inicio rápido, se supone que tienes roles de propietario o de editor en el proyecto que usas para la guía de inicio rápido. De lo contrario, consulta el rol de desarrollador de Cloud Run para conocer los permisos necesarios para implementar un recurso de Cloud Run desde la fuente.

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

Para implementar desde la fuente, realiza estas acciones:

  1. En el directorio del código fuente, implementa desde la fuente con el siguiente comando:

    gcloud run deploy

    Si se te solicita que habilites la API, presiona y para habilitarla.

    1. Cuando se te solicite la ubicación del código fuente, presiona Intro para implementar la carpeta actual.

    2. Cuando se te solicite el nombre del servicio, presiona Intro para aceptar el nombre predeterminado, por ejemplo, helloworld.

    3. Si se te solicita que habilites la API de Artifact Registry o que permitas la creación del repositorio de Artifact Registry, presiona y para responder.

    4. Cuando se te solicite la región, selecciona la región que prefieras, por ejemplo, us-central1.

    5. Se te solicitará permitir invocaciones no autenticadas; responde y.

    Luego, espera un momento a que finalice la implementación. Si la operación se completa de forma correcta, la línea de comandos mostrará la URL de servicio.

  2. Abre la URL de servicio en un navegador web para visitar el servicio implementado.

Ubicaciones de Cloud Run

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

El cumplimiento de los requisitos de latencia, disponibilidad o durabilidad es el factor principal para seleccionar la región en la que se ejecutan los servicios de Cloud Run. Por lo general, puedes seleccionar la región más cercana a los usuarios, pero debes considerar la ubicación de los otros productos de Google Cloud que usa el servicio de Cloud Run. Si usas productos de Google Cloud en varias ubicaciones, la latencia y el costo del servicio pueden verse afectados.

Cloud Run está disponible en las siguientes regiones:

Sujetas a los Precios del nivel 1

  • asia-east1 (Taiwán)
  • asia-northeast1 (Tokio)
  • asia-northeast2 (Osaka)
  • europe-north1 (Finlandia) ícono de hoja Bajo nivel de CO2
  • europe-southwest1 (Madrid)
  • europe-west1 (Bélgica) ícono de hoja Bajo nivel de CO2
  • europe-west4 (Países Bajos)
  • europe-west8 (Milán)
  • europe-west9 (París) ícono de hoja Bajo nivel de CO2
  • me-west1 (Tel Aviv)
  • us-central1 (Iowa) ícono de hoja Bajo nivel de CO2
  • us-east1 (Carolina del Sur)
  • us-east4 (Virginia del Norte)
  • us-east5 (Columbus)
  • us-south1 (Dallas)
  • us-west1 (Oregón) ícono de hoja Bajo nivel de CO2

Sujetas 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-south1 (Bombay, India)
  • asia-south2 Delhi (India)
  • australia-southeast1 (Sídney)
  • australia-southeast2 (Melbourne)
  • europe-central2 (Varsovia, Polonia)
  • europe-west10 (Berlín)
  • europe-west12 (Turín)
  • europe-west2 (Londres, Reino Unido) ícono de hoja Bajo nivel de CO2
  • europe-west3 (Fráncfort, Alemania) ícono de hoja Bajo nivel de CO2
  • europe-west6 (Zúrich, Suiza) ícono de hoja Bajo nivel de CO2
  • me-central1 (Doha)
  • me-central2 (Dammam)
  • northamerica-northeast1 (Montreal) ícono de hoja Bajo nivel de CO2
  • northamerica-northeast2 (Toronto) ícono de hoja Bajo nivel de CO2
  • southamerica-east1 (São Paulo, Brasil) ícono de hoja Bajo nivel de CO2
  • southamerica-west1 (Santiago, Chile) ícono de hoja Bajo nivel de CO2
  • us-west2 (Los Ángeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

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

¡Felicitaciones! Acaba de implementar una imagen de contenedor del código fuente en Cloud Run. Cloud Run reduce la escala de la imagen de contenedor de forma automática y horizontal para controlar las solicitudes que se reciben y, luego, escala horizontalmente 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.

Limpia

Quita el proyecto de prueba

Si bien Cloud Run no cobra cuando el servicio no se usa, es posible que se te cobre por el almacenamiento de la imagen de contenedor en Artifact Registry. Puedes borrar la imagen de contenedor o borrar el proyecto de Google Cloud para evitar que se apliquen cargos. Si borras tu proyecto de Google Cloud, se dejan de facturar todos los recursos que usaste 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.

¿Qué sigue?

Para obtener más información sobre cómo compilar un contenedor a partir de código fuente y enviarlo a un repositorio, consulta los siguientes vínculos: