Compilar y crear un trabajo de Go en Cloud Run
Antes de empezar
- 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
-
Enable the Cloud Run Admin API and Cloud Build APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.Una vez que se haya habilitado la API Cloud Run Admin, se creará automáticamente la cuenta de servicio predeterminada de Compute Engine.
- 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 yPROJECT_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.
- Consulta los precios de Cloud Run o calcula los costes con la calculadora de precios.
Crea un directorio llamado
jobs
y cambia al directorio:mkdir jobs cd jobs
En el mismo directorio, crea un archivo
main.go
para el código del trabajo. Copia las siguientes líneas de ejemplo:Las tareas de Cloud Run permiten a los usuarios especificar el número de tareas que debe ejecutar el trabajo. En este código de ejemplo se muestra cómo usar la variable de entorno
CLOUD_RUN_TASK_INDEX
integrada. Cada tarea representa una copia en ejecución del contenedor. Ten en cuenta que las tareas suelen ejecutarse en paralelo. Usar varias tareas es útil si cada tarea puede procesar de forma independiente un subconjunto de tus datos.Cada tarea conoce su índice, que se almacena en la variable de entorno
CLOUD_RUN_TASK_INDEX
. La variable de entornoCLOUD_RUN_TASK_COUNT
integrada contiene el número de tareas proporcionadas en el momento de la ejecución del trabajo a través del parámetro--tasks
.El código que se muestra también indica cómo reintentar tareas mediante la variable de entorno
CLOUD_RUN_TASK_ATTEMPT
integrada, que contiene el número de veces que se ha reintentado esta tarea. El primer intento es 0 y se incrementa en 1 en cada reintento sucesivo hasta--max-retries
.El código también te permite generar fallos para probar los reintentos y generar registros de errores para que puedas ver cómo son.
Crea un archivo
go.mod
con el siguiente contenido:En la Google Cloud consola, ve a Cloud Run:
Busca el trabajo que quieras eliminar en la lista de trabajos y haz clic en la casilla para seleccionarlo.
Haz clic en Eliminar. De esta forma, se finalizan todas las ejecuciones de trabajos en curso y todas las instancias de contenedor en ejecución.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Escribir el trabajo de ejemplo
Para escribir un trabajo en Go, sigue estos pasos:
El código está completo y listo para empaquetarse en un contenedor.
Crear un contenedor de tareas, enviarlo a Artifact Registry y desplegarlo en Cloud Run
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.
En esta guía de inicio rápido se usa la opción de desplegar desde el código fuente, que crea el contenedor, lo sube a Artifact Registry y despliega 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
donde PROJECT_ID es el ID de tu proyecto y REGION es tu región (por ejemplo, europe-west1
). Ten en cuenta que puedes cambiar los distintos parámetros por los valores que quieras usar para tus pruebas. SLEEP_MS
simula el trabajo y FAIL_RATE
provoca que falle el X
% de las tareas
para que puedas experimentar con el paralelismo y los reintentos de tareas fallidas.
Ejecutar una tarea en Cloud Run
Para ejecutar el trabajo que acabas de crear, haz lo siguiente:
gcloud run jobs execute job-quickstart --region REGION
Sustituye REGION por la región que usaste al crear y desplegar el trabajo. Por ejemplo, europe-west1
.
Limpieza
Para evitar que se apliquen cargos adicionales a tu cuenta de Google Cloud , elimina todos los recursos que hayas implementado con esta guía de inicio rápido.
Eliminar un repositorio
Cloud Run solo cobra por el tiempo que se ejecuta tu trabajo. Sin embargo, es posible que se te cobre por almacenar la imagen de contenedor en Artifact Registry. Para eliminar repositorios de Artifact Registry, sigue los pasos que se indican en el artículo Eliminar repositorios de la documentación de Artifact Registry.
Eliminar un trabajo
Los trabajos de Cloud Run solo generan costes cuando se ejecuta una tarea. Para eliminar tu trabajo de Cloud Run, sigue uno de estos pasos:
Consola
Para eliminar un trabajo, sigue estos pasos:
gcloud
Para eliminar un trabajo, ejecuta el siguiente comando:
gcloud run jobs delete JOB_NAME
Sustituye JOB_NAME
por el nombre del trabajo.
Eliminar un proyecto de prueba
Si eliminas tu proyecto de Google Cloud , se detendrá la facturación de todos los recursos de ese proyecto. Para liberar todos los recursos de tu proyecto, sigue estos pasos: Google Cloud
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: