Desplegar grupos de trabajadores a partir del código fuente

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

En segundo plano, este comando usa paquetes de compilación de Google Cloud y Cloud Build para compilar automáticamente imágenes de contenedor a partir de tu código fuente sin tener que instalar Docker en tu máquina ni configurar paquetes de compilación o Cloud Build. Es decir, el comando descrito anteriormente hace lo que, de otro modo, requeriría los comandos gcloud builds submit y gcloud beta run worker-pools deploy.

Ten en cuenta que las implementaciones de origen usan Artifact Registry para almacenar los 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 vas a implementar, esta función crea automáticamente 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 buildpacks de Google Cloud detectan automáticamente el lenguaje que estás usando y obtienen las dependencias del código para crear una imagen de contenedor lista para producción, usando una imagen base segura gestionada por Google.

Idiomas disponibles

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

  • Go
  • Node.js
  • Python
  • Java
  • Kotlin
  • Groovy
  • Scala
  • .NET
  • Ruby
  • PHP
Consulta más información sobre las versiones de idiomas admitidas.

Limitaciones de esta función

  • La opción de desplegar desde el código fuente usa Artifact Registry y Cloud Build, por lo que solo está disponible en las regiones admitidas por Artifact Registry y Cloud Build.
  • La implementación desde el código fuente es una función práctica, pero no permite personalizar completamente la compilación. Para tener más control, crea la imagen de contenedor con Cloud Build, por ejemplo, con gcloud builds submit, y luego despliega la imagen de contenedor con gcloud beta run worker-pools deploy --image, por ejemplo.
  • Al implementar desde una fuente con los buildpacks de Google Cloud, la fecha de última modificación de los archivos de origen se establece en el 1 de enero de 1980. Este es el comportamiento predeterminado de los buildpacks y se ha diseñado para admitir compilaciones reproducibles. En función del framework de lenguaje que uses, esto puede afectar al almacenamiento en caché del lado del navegador de los archivos estáticos. Si tu aplicación se ve afectada por este problema, Google recomienda inhabilitar los encabezados HTTP etag y Last-Modified en ella.
  • Al desplegar desde una fuente con los buildpacks de Google Cloud, siempre se usa gcr.io/buildpacks/builder:latest. Si el idioma o la configuración del SO que prefieres no están disponibles en latest, usa un compilador específico para crear una imagen de aplicación con el compilador que prefieras.
  • Puedes desplegar tu grupo de trabajadores desde la fuente con Kotlin y otros lenguajes de JVM, como Java. El idioma que utilices debe cumplir las siguientes reglas:

    • Puedes compilar la aplicación con Maven o Gradle.
    • El archivo de compilación contiene todos los complementos necesarios para las clases de producto.

Antes de empezar

  • Asegúrate de haber configurado un proyecto para Cloud Run tal como se describe en la página de configuración.
  • 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.

Roles obligatorios

Tú o tu administrador debéis conceder los siguientes roles de gestión de identidades y accesos a la cuenta de implementación y a la cuenta de servicio de Cloud Build.

Haz clic para ver los roles necesarios de la cuenta de implementación

Para obtener los permisos que necesitas para compilar e implementar desde la fuente, pide a tu administrador que te conceda los siguientes roles 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.

Para ver una lista de los roles y permisos de gestión de identidades y accesos asociados a Cloud Run, consulta los artículos sobre roles de gestión de identidades y accesos de Cloud Run y permisos de gestión de identidades y accesos de Cloud Run. Si tu grupo de trabajadores de Cloud Run interactúa con APIs deGoogle Cloud , como las bibliotecas de cliente de Cloud, consulta la guía de configuración de identidades de servicio. Para obtener más información sobre cómo conceder roles, consulta los artículos sobre permisos de implementación y gestión del acceso.

Desplegar desde el código fuente

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

  1. Cambia al directorio de origen. Ten en cuenta que el directorio de origen no requiere un Dockerfile, pero, si hay un Dockerfile, se usará.

  2. Crea y despliega tu grupo de trabajadores:

    gcloud beta run worker-pools deploy WORKERPOOL --source .
    Sustituye WORKERPOOL por el nombre que quieras asignar al grupo de trabajadores.
  3. Responde a las peticiones para instalar las APIs necesarias respondiendo y cuando se te solicite. Solo tienes que hacerlo una vez por proyecto. Responde a otras peticiones proporcionando la plataforma y la región, si no has definido valores predeterminados para estos elementos tal como se describe en la página de configuración.

  4. Espera a que se complete la compilación y la implementación. Cuando termine, Cloud Run mostrará un mensaje de confirmación.

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

Para evitar cambios sin control de versiones en el código fuente local, Google recomienda que despliegues automáticamente cuando se inserten cambios en tu repositorio de Git. Para que te resulte más fácil, puedes conectar y configurar la implementación continua en tu grupo de trabajadores de Cloud Run. Si conectas tus repositorios de GitHub a Cloud Run, puedes configurar compilaciones y desplegar tus repositorios sin escribir Dockerfiles ni archivos de compilación.

Siguientes pasos

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