Ir al contenido

Setup GCP: APIs, IAM y Secret Manager

  • Google Cloud CLI (gcloud) instalado y actualizado
  • uv — package manager de Python (usado en los Dockerfiles)
  • Cuenta GCP con billing habilitado
  • Gemini API Key — obténla gratis en aistudio.google.com

Inicia sesión con tu cuenta de Google Cloud:

gcloud auth login

Lista tus proyectos disponibles:

gcloud projects list

Selecciona el proyecto donde vas a deployar:

gcloud config set project TU_PROJECT_ID

Verifica que quedó configurado:

gcloud config get-value project

El deploy necesita 4 APIs activas. Habilítalas con un solo comando:

gcloud services enable \
run.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
secretmanager.googleapis.com

Son dos valores distintos que vas a necesitar:

  • Project ID — string alfanumérico que identifica tu proyecto (ej: mi-proyecto-adk)
  • Project Number — número que identifica service accounts internos (ej: 123456789012)

Obtén ambos y guárdalos en variables:

PROJECT_ID=$(gcloud config get-value project)
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
echo "Project ID: $PROJECT_ID"
echo "Project Number: $PROJECT_NUMBER"

Cloud Build usa un service account automático: {PROJECT_NUMBER}-compute@developer.gserviceaccount.com. Necesita dos permisos adicionales para construir y subir imágenes.

Permiso para acceder al storage (imágenes de contenedores):

gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/storage.objectAdmin"

Permiso para ejecutar builds:

gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/cloudbuild.builds.builder"

Crea el secret con tu API key:

echo -n "TU_GEMINI_API_KEY" | gcloud secrets create GEMINI_API_KEY \
--replication-policy="automatic" \
--data-file=-

Otorga acceso al service account de Cloud Run:

gcloud secrets add-iam-policy-binding GEMINI_API_KEY \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/secretmanager.secretAccessor"

Siguiente paso: Deploy — 7 servicios en Cloud Run →