Implementa grupos de trabajadores desde el código fuente

En esta página, se describe cómo implementar un grupo de trabajadores nuevo o una revisión del grupo de trabajadores en Cloud Run directamente desde el código fuente mediante un solo comando de gcloud CLI, gcloud beta run worker-pools deploy con la --source marca.

Este comando usa los paquetes de compilación de Google Cloud y Cloud Build en segundo plano para compilar automáticamente imágenes de contenedor a partir del código fuente sin tener que instalar Docker en tu máquina ni configurar los paquetes de compilación o Cloud Build. De forma predeterminada, Cloud Run usa el tipo de máquina predeterminado que proporciona Cloud Build. La ejecución de gcloud beta run worker-pools deploy elimina la necesidad de ejecutar también el comando gcloud builds submit.

Ten en cuenta que las implementaciones de origen usan Artifact Registry para almacenar contenedores compilados. Si tu proyecto aún no tiene un repositorio de Artifact Registry con el nombre cloud-run-source-deploy en la región en la que realizas la implementación, esta función crea de forma automática un repositorio de Artifact Registry con el nombre cloud-run-source-deploy.

Si hay un Dockerfile en el directorio del código fuente, el código fuente subido se compila con ese Dockerfile. Si no hay ningún Dockerfile en el directorio del código fuente, los paquetes de compilación de Google Cloud detectan automáticamente el idioma que estás usando y recuperan las dependencias del código para crear una imagen de contenedor lista para la producción con una imagen base segura administrada por Google.

Antes de comenzar

  • Asegúrate de haber configurado un proyecto nuevo para Cloud Run, como se describe en la página de configuración.
  • Habilita la API de Cloud Run Admin.

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin), que contiene el permiso serviceusage.services.enable. Obtén más información para otorgar roles.

    Habilitar la API

    Después de habilitar la API de Cloud Run Admin, se crea de forma automática la cuenta de servicio predeterminada de Compute Engine.

Roles obligatorios

Para implementar desde la fuente, tú o tu administrador deben otorgar a la cuenta del implementador los siguientes roles de IAM.

Haz clic para ver los roles necesarios para la cuenta del implementador

Para obtener los permisos que necesitas para compilar e implementar desde la fuente, pídele a tu administrador que te otorgue los siguientes roles de IAM roles:

Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta los roles de IAM de Cloud Run y los permisos de IAM de Cloud Run. Si tu grupo de trabajadores de Cloud Run interactúa con lasGoogle Cloud APIs, como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información sobre cómo otorgar roles, consulta los permisos de implementación y cómo administrar el acceso.

Idiomas compatibles

Además de las fuentes con un Dockerfile, la implementación desde la fuente admite los siguientes lenguajes con los paquetes de compilación de Google Cloud:

  • Go
  • Node.js
  • Python
  • Java
  • Kotlin
  • Groovy
  • Scala
  • .NET
  • Ruby
  • PHP

Obtén más información sobre las versiones de idiomas compatibles.

Implementa desde la fuente con compilación

En esta sección, se describe cómo usar los paquetes de compilación de Google Cloud y Cloud Build para compilar automáticamente imágenes de contenedor a partir del código fuente sin tener que instalar Docker en tu máquina ni configurar los paquetes de compilación o Cloud Build.

Limitaciones

  • La implementación desde la fuente usa Artifact Registry y Cloud Build, por lo que esta función solo está disponible en regiones compatibles con Artifact Registry y Cloud Build.
  • La implementación desde la fuente es una función de conveniencia y no permite la personalización completa de la compilación. Para obtener más control, compila la imagen del contenedor con Cloud Build, por ejemplo, con gcloud builds submit y, luego, implementa la imagen del contenedor con, por ejemplo, gcloud beta run worker-pools deploy --image.
  • La implementación desde la fuente con los paquetes de compilación de Google Cloud establece la última fecha de modificación de los archivos de origen en el 1 de enero de 1980. Este es el comportamiento predeterminado de los paquetes de compilación y está diseñado para admitir compilaciones reproducibles. Según el framework del idioma, esto puede afectar el almacenamiento en caché del archivo estático del navegador. Si tu aplicación se ve afectada, Google recomienda inhabilitar los encabezados HTTP etag y Last-Modified en tu aplicación.
  • La implementación desde el origen con los paquetes de compilación de Google Cloud siempre usa gcr.io/buildpacks/builder:latest. Si tu lenguaje o configuración del SO preferido no están disponibles en latest, usa un compilador específico para crear una imagen de la aplicación con tu compilador preferido.
  • Puedes implementar tu grupo de trabajadores desde la fuente con Kotlin y otros lenguajes de JVM como Java. El lenguaje que uses debe cumplir con las siguientes reglas:

    • Puedes compilar la aplicación a través de Maven o Gradle.
    • El archivo de compilación contiene todos los complementos necesarios para las clases de productos.

Antes de implementar con compilación

Antes de implementar desde la fuente con compilación, haz lo siguiente:

  • Sigue los pasos que se indican en Antes de comenzar.

  • Habilita la API de Cloud Build.

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin), que contiene el permiso serviceusage.services.enable. Obtén más información para otorgar roles.

    Habilitar la API

Roles obligatorios

Para implementar desde la fuente con compilación, tú o tu administrador deben otorgar a la cuenta de servicio de Cloud Build los siguientes roles de IAM.

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

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

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

Reemplaza PROJECT_NUMBER por el número de tu Google Cloud proyecto y PROJECT_ID por el ID de tu Google Cloud proyecto. Para obtener instrucciones detalladas sobre cómo encontrar el ID y el número de tu proyecto, consulta Crea y administra proyectos.

El otorgamiento del rol de compilador de Cloud Run a la cuenta de servicio predeterminada de Compute Engine tarda un par de minutos en propagarse.

Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta los roles de IAM de Cloud Run y los permisos de IAM de Cloud Run. Si tu grupo de trabajadores de Cloud Run interactúa con lasGoogle Cloud APIs, como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información sobre cómo otorgar roles, consulta los permisos de implementación y cómo administrar el acceso.

Implementa con compilación

Para implementar a partir del código fuente:

  1. En la Google Cloud consola, activa Cloud Shell.

    Activa Cloud Shell

    En la parte inferior de la Google Cloud consola, se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.

  2. Cambia al directorio del código fuente. El directorio del código fuente usa un Dockerfile si está presente, aunque no es obligatorio.

  3. Compila e implementa tu grupo de trabajadores:

    gcloud beta run worker-pools deploy WORKERPOOL --source .
    Reemplaza WORKERPOOL por el nombre que deseas usar para el grupo de trabajadores.

  4. Responde a cualquier solicitud para instalar las API obligatorias. Para ello, responde y cuando se te solicite. Solo debes hacer esto una vez en un proyecto. Para responder a otras solicitudes, suministra la plataforma y la región si no configuraste los valores predeterminados de estas como se describe en la página de configuración.

  5. Espera a que se completen la creación y la implementación. Cuando termine, Cloud Run mostrará un mensaje de éxito.

Automatiza la compilación a partir del código fuente

Para evitar cambios sin versión en una fuente local, Google recomienda que implementes automáticamente cuando los cambios se envíen a tu repositorio de Git. Para facilitar esto, puedes conectar la implementación continua a tu grupo de trabajadores de Cloud Run y configurarla. Si conectas tus repositorios de GitHub a Cloud Run, puedes configurar compilaciones y, luego, implementar tus repositorios sin tener que escribir Dockerfiles o archivos de compilación.

¿Qué sigue?

Después de implementar un grupo de trabajadores de Cloud Run, puedes hacer lo siguiente: