fix: replace adk deploy cloud_run with gcloud run deploy (compatible with ADK 1.x + Cloud Shell)
This commit is contained in:
parent
c411a8af88
commit
6521a4c101
|
|
@ -1,19 +1,16 @@
|
||||||
# Dockerfile for OSVauco ADK agent — Cloud Run deployment
|
|
||||||
# Note: `adk deploy cloud_run` manages this automatically.
|
|
||||||
# Use this Dockerfile only for manual `gcloud run deploy --source .` deploys.
|
|
||||||
|
|
||||||
FROM python:3.12-slim
|
FROM python:3.12-slim
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
COPY requirements.txt .
|
COPY requirements.txt .
|
||||||
RUN pip install --no-cache-dir -r requirements.txt
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
# Copy agent source
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
|
# Cloud Run expects PORT env var (default 8080)
|
||||||
ENV PORT=8080
|
ENV PORT=8080
|
||||||
ENV GOOGLE_GENAI_USE_VERTEXAI=True
|
|
||||||
|
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
|
|
||||||
CMD ["adk", "web", "--host", "0.0.0.0", "--port", "8080", "."]
|
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,13 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# 05-cloudrun-deploy.sh — Deploy ADK agent to Cloud Run using `adk deploy cloud_run`
|
# 05-cloudrun-deploy.sh — Deploy OSVauco agent to Cloud Run via Docker + gcloud
|
||||||
# Run in: local VS Code terminal OR Cloud Shell
|
# Run in: Cloud Shell or local terminal
|
||||||
# Requires: ADK installed (pip install google-adk), gcloud CLI
|
# Requires: gcloud CLI (no ADK CLI needed)
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
# Ensure pip-installed tools (adk) are on PATH
|
|
||||||
export PATH="$HOME/.local/bin:$PATH"
|
|
||||||
|
|
||||||
# Auto-source .env if not already sourced
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
ENV_FILE="${SCRIPT_DIR}/../.env"
|
ENV_FILE="${SCRIPT_DIR}/../.env"
|
||||||
if [ -f "${ENV_FILE}" ]; then
|
if [ -f "${ENV_FILE}" ]; then
|
||||||
# shellcheck disable=SC1090
|
|
||||||
set -a; source "${ENV_FILE}"; set +a
|
set -a; source "${ENV_FILE}"; set +a
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -21,43 +16,67 @@ fi
|
||||||
: "${CLOUD_RUN_SERVICE:?Set CLOUD_RUN_SERVICE in .env}"
|
: "${CLOUD_RUN_SERVICE:?Set CLOUD_RUN_SERVICE in .env}"
|
||||||
: "${AGENT_SA:?Set AGENT_SA in .env}"
|
: "${AGENT_SA:?Set AGENT_SA in .env}"
|
||||||
|
|
||||||
APP_NAME="core-logic"
|
REPO="${REGION}-docker.pkg.dev/${PROJECT_ID}/osvauco-repo"
|
||||||
AGENT_PATH="agents/core-logic"
|
IMAGE="${REPO}/osvauco-agent:latest"
|
||||||
|
AGENT_PATH="${SCRIPT_DIR}/../agents/core-logic"
|
||||||
|
|
||||||
echo "=== 05: Cloud Run Deploy via ADK CLI ==="
|
echo "=== 05: Cloud Run Deploy ==="
|
||||||
|
|
||||||
bash "$(dirname "$0")/00-authcheck.sh"
|
bash "${SCRIPT_DIR}/00-authcheck.sh"
|
||||||
|
|
||||||
|
# Enable required APIs
|
||||||
gcloud services enable \
|
gcloud services enable \
|
||||||
run.googleapis.com \
|
run.googleapis.com \
|
||||||
artifactregistry.googleapis.com \
|
artifactregistry.googleapis.com \
|
||||||
cloudbuild.googleapis.com \
|
cloudbuild.googleapis.com \
|
||||||
--project="${PROJECT_ID}" --quiet
|
--project="${PROJECT_ID}" --quiet
|
||||||
|
|
||||||
# Grant compute SA permission to use Cloud Build
|
# Create Artifact Registry repo if it doesn't exist
|
||||||
|
gcloud artifacts repositories describe osvauco-repo \
|
||||||
|
--location="${REGION}" --project="${PROJECT_ID}" &>/dev/null || \
|
||||||
|
gcloud artifacts repositories create osvauco-repo \
|
||||||
|
--repository-format=docker \
|
||||||
|
--location="${REGION}" \
|
||||||
|
--project="${PROJECT_ID}" --quiet
|
||||||
|
echo "✓ Artifact Registry repo ready"
|
||||||
|
|
||||||
|
# IAM for Cloud Build
|
||||||
PROJECT_NUMBER=$(gcloud projects describe "${PROJECT_ID}" --format="value(projectNumber)")
|
PROJECT_NUMBER=$(gcloud projects describe "${PROJECT_ID}" --format="value(projectNumber)")
|
||||||
COMPUTE_SA="${PROJECT_NUMBER}-compute@developer.gserviceaccount.com"
|
COMPUTE_SA="${PROJECT_NUMBER}-compute@developer.gserviceaccount.com"
|
||||||
|
|
||||||
gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
|
gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
|
||||||
--member="serviceAccount:${COMPUTE_SA}" \
|
--member="serviceAccount:${COMPUTE_SA}" \
|
||||||
--role="roles/cloudbuild.builds.builder" --quiet
|
--role="roles/cloudbuild.builds.builder" --quiet
|
||||||
gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
|
gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
|
||||||
--member="serviceAccount:${COMPUTE_SA}" \
|
--member="serviceAccount:${COMPUTE_SA}" \
|
||||||
--role="roles/secretmanager.secretAccessor" --quiet
|
--role="roles/secretmanager.secretAccessor" --quiet
|
||||||
echo "✓ IAM bindings for Cloud Build SA applied"
|
echo "✓ IAM bindings applied"
|
||||||
|
|
||||||
export GOOGLE_CLOUD_PROJECT="${PROJECT_ID}"
|
# Configure Docker for Artifact Registry
|
||||||
export GOOGLE_CLOUD_LOCATION="${REGION}"
|
gcloud auth configure-docker "${REGION}-docker.pkg.dev" --quiet
|
||||||
export GOOGLE_GENAI_USE_VERTEXAI="True"
|
|
||||||
|
|
||||||
echo "Deploying ${CLOUD_RUN_SERVICE} to Cloud Run in ${REGION}..."
|
# Build image via Cloud Build (no local Docker needed)
|
||||||
adk deploy cloud_run \
|
echo "Building image via Cloud Build..."
|
||||||
|
gcloud builds submit "${AGENT_PATH}" \
|
||||||
|
--tag="${IMAGE}" \
|
||||||
--project="${PROJECT_ID}" \
|
--project="${PROJECT_ID}" \
|
||||||
|
--region="${REGION}"
|
||||||
|
echo "✓ Image built: ${IMAGE}"
|
||||||
|
|
||||||
|
# Deploy to Cloud Run
|
||||||
|
echo "Deploying to Cloud Run..."
|
||||||
|
gcloud run deploy "${CLOUD_RUN_SERVICE}" \
|
||||||
|
--image="${IMAGE}" \
|
||||||
--region="${REGION}" \
|
--region="${REGION}" \
|
||||||
--service_name="${CLOUD_RUN_SERVICE}" \
|
--project="${PROJECT_ID}" \
|
||||||
--app_name="${APP_NAME}" \
|
--service-account="${AGENT_SA}" \
|
||||||
"${AGENT_PATH}" \
|
--set-env-vars="GOOGLE_CLOUD_PROJECT=${PROJECT_ID},GOOGLE_CLOUD_LOCATION=${REGION},GOOGLE_GENAI_USE_VERTEXAI=True" \
|
||||||
-- --no-allow-unauthenticated
|
--no-allow-unauthenticated \
|
||||||
|
--port=8080 \
|
||||||
|
--memory=1Gi \
|
||||||
|
--cpu=1 \
|
||||||
|
--min-instances=0 \
|
||||||
|
--max-instances=3 \
|
||||||
|
--quiet
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "=== 05: Cloud Run Deploy COMPLETE ==="
|
echo "=== 05: Cloud Run Deploy COMPLETE ==="
|
||||||
|
|
@ -69,7 +88,7 @@ echo ""
|
||||||
echo " To call (authenticated):"
|
echo " To call (authenticated):"
|
||||||
echo " TOKEN=\$(gcloud auth print-identity-token)"
|
echo " TOKEN=\$(gcloud auth print-identity-token)"
|
||||||
echo " curl -H \"Authorization: Bearer \$TOKEN\" -H 'Content-Type: application/json' \\"
|
echo " curl -H \"Authorization: Bearer \$TOKEN\" -H 'Content-Type: application/json' \\"
|
||||||
echo " -d '{\"message\": \"Hello\"}' ${SERVICE_URL}/run"
|
echo " -d '{\"message\": \"Hello\"}' \${SERVICE_URL}/run"
|
||||||
echo ""
|
echo ""
|
||||||
echo " COST NOTE: Cloud Run scales to 0. No idle cost."
|
echo " COST NOTE: Cloud Run scales to 0. No idle cost."
|
||||||
echo " Delete with: gcloud run services delete ${CLOUD_RUN_SERVICE} --region=${REGION} --quiet"
|
echo " Delete with: gcloud run services delete ${CLOUD_RUN_SERVICE} --region=${REGION} --quiet"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user