Ir al contenido

Deploy: 7 servicios en Cloud Run

Cada agente se despliega con gcloud run deploy desde su directorio. Este es el comando completo para Platform Architect:

gcloud run deploy platform-architect \
--source=./platform_architect \
--no-allow-unauthenticated \
--memory=1Gi \
--cpu=1 \
--min-instances=0 \
--max-instances=1 \
--cpu-throttling \
--timeout=300 \
--set-secrets=GEMINI_API_KEY=GEMINI_API_KEY:latest \
--port=8080 \
--region=us-central1

Flags clave:

FlagEfecto
--sourceDirectorio con el Dockerfile. Cloud Build construye la imagen automáticamente.
--no-allow-unauthenticatedRequiere IAM identity token para acceder. Ningún agente es público.
--memory=1GiSuficiente para ADK + Gemini SDK. 512Mi puede causar OOM con contextos grandes.
--cpu=11 vCPU. Los agentes son I/O bound (esperan respuesta de Gemini), no CPU bound.
--min-instances=0Scale to zero — no paga cuando no hay tráfico.
--max-instances=1Limita a 1 instancia por agente. Suficiente para demo y desarrollo.
--cpu-throttlingReduce CPU cuando no procesa requests. Ahorra costos.
--timeout=3005 minutos. Algunos agentes (Web Portal) generan respuestas largas.
--set-secretsInyecta la API key desde Secret Manager como variable de entorno.
--port=8080Puerto estándar de Cloud Run. Debe coincidir con el EXPOSE del Dockerfile.

Los nombres de servicio en Cloud Run solo aceptan minúsculas, números y guiones. El directorio web_portal se despliega como servicio web-portal:

gcloud run deploy web-portal --source=./web_portal ...

Cada agente usa los mismos flags. Solo cambian --source y el nombre del servicio:

gcloud run deploy platform-architect --source=./platform_architect --no-allow-unauthenticated --memory=1Gi --cpu=1 --min-instances=0 --max-instances=1 --cpu-throttling --timeout=300 --set-secrets=GEMINI_API_KEY=GEMINI_API_KEY:latest --port=8080 --region=us-central1
gcloud run deploy infrastructure --source=./infrastructure --no-allow-unauthenticated --memory=1Gi --cpu=1 --min-instances=0 --max-instances=1 --cpu-throttling --timeout=300 --set-secrets=GEMINI_API_KEY=GEMINI_API_KEY:latest --port=8080 --region=us-central1
gcloud run deploy security --source=./security --no-allow-unauthenticated --memory=1Gi --cpu=1 --min-instances=0 --max-instances=1 --cpu-throttling --timeout=300 --set-secrets=GEMINI_API_KEY=GEMINI_API_KEY:latest --port=8080 --region=us-central1
gcloud run deploy cicd --source=./cicd --no-allow-unauthenticated --memory=1Gi --cpu=1 --min-instances=0 --max-instances=1 --cpu-throttling --timeout=300 --set-secrets=GEMINI_API_KEY=GEMINI_API_KEY:latest --port=8080 --region=us-central1
gcloud run deploy observability --source=./observability --no-allow-unauthenticated --memory=1Gi --cpu=1 --min-instances=0 --max-instances=1 --cpu-throttling --timeout=300 --set-secrets=GEMINI_API_KEY=GEMINI_API_KEY:latest --port=8080 --region=us-central1
gcloud run deploy devex --source=./devex --no-allow-unauthenticated --memory=1Gi --cpu=1 --min-instances=0 --max-instances=1 --cpu-throttling --timeout=300 --set-secrets=GEMINI_API_KEY=GEMINI_API_KEY:latest --port=8080 --region=us-central1
gcloud run deploy web-portal --source=./web_portal --no-allow-unauthenticated --memory=1Gi --cpu=1 --min-instances=0 --max-instances=1 --cpu-throttling --timeout=300 --set-secrets=GEMINI_API_KEY=GEMINI_API_KEY:latest --port=8080 --region=us-central1

Para no esperar ~5 minutos por cada agente (35 min total secuencial), usa el script que despliega los 7 en paralelo con tmux:

./deploy-all-tmux.sh

El script abre 7 paneles de tmux, uno por agente, y ejecuta los deploys simultáneamente. Tiempo total: ~5-7 minutos en lugar de ~35.

Lista todos los servicios deployados:

gcloud run services list --region=us-central1

Deberías ver los 7 servicios con estado ✔ Ready:

SERVICE REGION URL LAST DEPLOYED
cicd us-central1 https://cicd-XXXXXXXXXX-uc.a.run.app 2026-XX-XX
devex us-central1 https://devex-XXXXXXXXXX-uc.a.run.app 2026-XX-XX
infrastructure us-central1 https://infrastructure-XXXXXXXXXX-uc.a.run.app 2026-XX-XX
observability us-central1 https://observability-XXXXXXXXXX-uc.a.run.app 2026-XX-XX
platform-architect us-central1 https://platform-architect-XXXXXXXXXX-uc.a.run.app 2026-XX-XX
security us-central1 https://security-XXXXXXXXXX-uc.a.run.app 2026-XX-XX
web-portal us-central1 https://web-portal-XXXXXXXXXX-uc.a.run.app 2026-XX-XX

Verifica que los 7 agentes responden correctamente. Este loop obtiene un identity token y hace curl a cada servicio:

SERVICES="platform-architect infrastructure security cicd observability devex web-portal"
for SERVICE in $SERVICES; do
URL=$(gcloud run services describe $SERVICE --region=us-central1 --format='value(status.url)')
TOKEN=$(gcloud auth print-identity-token --audiences=$URL)
STATUS=$(curl -s -o /dev/null -w "%{http_code}" -H "Authorization: Bearer $TOKEN" "$URL/.well-known/agent.json")
echo "$SERVICE: $STATUS"
done

Todos deberían responder 200. Si alguno responde 403, revisa los permisos IAM. Si responde 500, revisa los logs con gcloud run logs read $SERVICE.


Siguiente paso: Demo — orquestador HTTP y cadena completa →