Compilar y crear un trabajo de Python en Cloud Run
Antes de comenzar
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Make sure that you have the following role or roles on the project: Cloud Run Admin, Cloud Run Source Developer, Logs Viewer
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Ir a IAM - Selecciona el proyecto.
- Haz clic en Grant access.
-
En el campo Principales nuevas, ingresa tu identificador de usuario. Esta suele ser la dirección de correo electrónico de una Cuenta de Google.
- En la lista Seleccionar un rol, elige un rol.
- Para otorgar funciones adicionales, haz clic en Agregar otro rol y agrega cada rol adicional.
- Haz clic en Guardar.
Install the Google Cloud CLI.
Si usas un proveedor de identidad externo (IdP), primero debes acceder a gcloud CLI con tu identidad federada.
Para inicializar la CLI de gcloud, ejecuta el siguiente comando:
gcloud init
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Make sure that you have the following role or roles on the project: Cloud Run Admin, Cloud Run Source Developer, Logs Viewer
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Ir a IAM - Selecciona el proyecto.
- Haz clic en Grant access.
-
En el campo Principales nuevas, ingresa tu identificador de usuario. Esta suele ser la dirección de correo electrónico de una Cuenta de Google.
- En la lista Seleccionar un rol, elige un rol.
- Para otorgar funciones adicionales, haz clic en Agregar otro rol y agrega cada rol adicional.
- Haz clic en Guardar.
Install the Google Cloud CLI.
Si usas un proveedor de identidad externo (IdP), primero debes acceder a gcloud CLI con tu identidad federada.
Para inicializar la CLI de gcloud, ejecuta el siguiente comando:
gcloud init
-
Habilita la API de Cloud Run Admin y la API de Cloud Build:
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
Después de habilitar la API de Cloud Run Admin, se crea de forma automática la cuenta de servicio predeterminada de Compute Engine.
-
Asegúrate de tener el rol de usuario de cuenta de servicio otorgado en la identidad del servicio. De forma predeterminada, la identidad del servicio es la cuenta de servicio predeterminada de Compute Engine.
Otorga los roles
Para otorgar acceso al recurso de identidad del servicio, usa el comando
gcloud iam service-accounts add-iam-policy-binding
, y reemplaza las variables destacadas por los valores adecuados:gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --member="PRINCIPAL" \ --role="roles/iam.serviceAccountUser"
Reemplaza lo siguiente:
- SERVICE_ACCOUNT_EMAIL: La dirección de correo electrónico de la cuenta de servicio
que usas como identidad de servicio, por ejemplo:
- La cuenta de servicio predeterminada de Compute Engine:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
- Una cuenta de servicio que creaste:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
- La cuenta de servicio predeterminada de Compute Engine:
- PRINCIPAL: Es el identificador del usuario. Por lo general, esta es la dirección de correo electrónico de una Cuenta de Google.
- SERVICE_ACCOUNT_EMAIL: La dirección de correo electrónico de la cuenta de servicio
que usas como identidad de servicio, por ejemplo:
- Otorga a la cuenta de servicio de Cloud Build el siguiente rol de IAM.
Haz clic para ver los roles necesarios para la cuenta de servicio de Cloud Build
Cloud Build usa 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 proyecto Google CloudyPROJECT_ID
por el ID del proyecto proyecto Google Cloud. 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.
Crea un directorio nuevo llamado
jobs
y usa el comando de cambio de directorio en él:mkdir jobs cd jobs
Crea un archivo
main.py
para el código real del trabajo. Copia las siguientes líneas de muestra en él:Los trabajos de Cloud Run permiten a los usuarios especificar la cantidad de tareas que se ejecutarán en el trabajo. En este código de muestra, se indica cómo usar la variable de entorno integrada
CLOUD_RUN_TASK_INDEX
. Cada tarea representa una copia en ejecución del contenedor. Ten en cuenta que las tareas se suelen ejecutar en paralelo. Usar múltiples tareas es útil si cada una puede procesar de forma independiente un subconjunto de tus datos.Cada tarea conoce su índice, almacenado en la variable de entorno
CLOUD_RUN_TASK_INDEX
. La variable de entornoCLOUD_RUN_TASK_COUNT
integrada contiene la cantidad de tareas que se proporcionan en el momento de la ejecución del trabajo mediante el parámetro--tasks
.En el código que se muestra, también aparece cómo reintentar tareas mediante la variable de entorno integrada
CLOUD_RUN_TASK_ATTEMPT
, que contiene la cantidad de veces que se reintentó esta tarea, a partir del 0 para el primer intento y con incrementos de 1 por cada reintento sucesivo, hasta--max-retries
.El código también te permite generar fallas como una forma de probar los reintentos y generar registros de errores para que puedas ver cómo se ven.
Crea un archivo de texto llamado
Procfile
sin extensión de archivo que contenga lo siguiente:
Escribe el trabajo de muestra
Para escribir un trabajo en Python, haz lo siguiente:
Tu código está completo y listo para empaquetarse en un contenedor.
Compila un contenedor de trabajos, envíalo a Artifact Registry y, luego, impleméntalo en Cloud Run
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 del desarrollador de fuente de Cloud Run para conocer los permisos necesarios para implementar un recurso de Cloud Run desde la fuente.
En esta guía de inicio rápido, se usa la implementación desde la fuente, lo que compila el contenedor, lo sube a Artifact Registry y, luego, implementa el trabajo en Cloud Run:
gcloud run jobs deploy job-quickstart \ --source . \ --tasks 50 \ --set-env-vars SLEEP_MS=10000 \ --set-env-vars FAIL_RATE=0.1 \ --max-retries 5 \ --region REGION \ --project=PROJECT_ID
En el ejemplo anterior, PROJECT_ID es el ID del proyecto y REGION es la región, por ejemplo, europe-west1
. Ten en cuenta que puedes cambiar los diversos parámetros a cualquier valor que desees usar para fines de prueba. SLEEP_MS
simula el trabajo y FAIL_RATE
hace que el X
% de las tareas fallen, por lo que puedes experimentar con el paralelismo y reintentar las tareas con errores.
Ejecuta un trabajo en Cloud Run
Para ejecutar el trabajo que acabas de crear, sigue estos pasos:
gcloud run jobs execute job-quickstart --region REGION
Reemplaza REGION por la región que usaste cuando creaste e implementaste el trabajo, por ejemplo, europe-west1
.
¿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: