google-agents-cli-deploy

google-agents-cli-deploy

熱門

當使用者想要「部署代理」、「部署我的 ADK 代理」、「設定 CI/CD」、「設定機密」或「疑難排解部署」,或需要 Agent Runtime、Cloud Run 或 GKE 部署目標的指引時,應使用此技能。涵蓋部署工作流程、服務帳戶、回滾和生產基礎架構。屬於 Google ADK(代理開發套件)技能套件的一部分。請勿用於 API 程式碼模式(請使用 google-agents-cli-adk-code)、評估(請使用 google-agents-cli-eval)或專案架構(請使用 google-agents-cli-scaffold)。

3081星標
487分支
更新於 2026/6/22
SKILL.md
readonlyread-only
name
google-agents-cli-deploy
description

This skill should be used when the user wants to "deploy an agent", "deploy my ADK agent", "set up CI/CD", "configure secrets", "troubleshoot a deployment", or needs guidance on Agent Runtime, Cloud Run, or GKE deployment targets. Covers deployment workflows, service accounts, rollback, and production infrastructure. Part of the Google ADK (Agent Development Kit) skills suite. Do NOT use for API code patterns (use google-agents-cli-adk-code), evaluation (use google-agents-cli-eval), or project scaffolding (use google-agents-cli-scaffold).

ADK 部署指南

需求: agents-cliuv tool install google-agents-cli)— 如有需要,請先安裝 uv

建議優先使用本指南中的 agents-cli 指令 — 它們將 Terraform、Docker 和部署包裝成經過測試的管道。如果您的專案尚未建立架構,請先參閱 /google-agents-cli-scaffold 以新增部署支援。

參考檔案

如需更詳細的資訊,請查閱 references/ 中的下列參考檔案:

  • cloud-run.md — 擴展預設值、Dockerfile、工作階段類型、網路
  • agent-runtime.mddeploy.py CLI、AdkApp 模式、Terraform 資源、部署中繼資料、CI/CD 差異
  • gke.md — GKE Autopilot 叢集、Kubernetes 清單、Workload Identity、工作階段類型、網路
  • terraform-patterns.md — 自訂基礎架構、IAM、狀態管理、匯入資源
  • batch-inference.md — BigQuery 遠端函數觸發;Pub/Sub / Eventarc 請參閱 /google-agents-cli-adk-code
  • cicd-pipeline.md — 完整 CI/CD 管道設定、infra cicd 旗標、執行器比較、WIF 驗證、管道階段
  • testing-deployed-agents.md — 依部署目標的測試說明、curl 範例、負載測試

可觀測性: 請參閱 /google-agents-cli-observability 技能以了解 Cloud Trace、提示-回應記錄、BigQuery Analytics 和第三方整合。


部署目標決策矩陣

根據您的需求選擇合適的部署目標:

條件 Agent Runtime Cloud Run GKE
語言 Python Python Python(+ 其他語言透過自訂容器)
擴展 受管自動擴展(可設定最小/最大、並行數) 完全可設定(最小/最大執行個體、並行數、CPU 配置) 完整的 Kubernetes 擴展(HPA、VPA、節點自動佈建)
網路 支援 VPC-SC 和 PSC-I(透過網路附加元件實現私有 VPC 連線) 完整 VPC 支援、直接 VPC 出口、IAP、入口規則 完整的 Kubernetes 網路
工作階段狀態 原生 VertexAiSessionService(持久化、受管) 記憶體內(開發)、Cloud SQL 或 Agent Platform Sessions 後端 記憶體內(開發)、Cloud SQL 或 Agent Platform Sessions 後端
批次/事件處理 不支援 原生觸發端點(Pub/Sub、Eventarc);請參閱 /google-agents-cli-adk-code 自訂(Kubernetes Jobs、Pub/Sub)
成本模型 vCPU-小時 + 記憶體-小時(閒置時不計費) 每執行個體-秒 + 最小執行個體成本 節點池成本(永遠開啟或自動佈建)
設定複雜度 較低(受管、專為代理設計) 中等(Dockerfile、Terraform、網路) 較高(需要 Kubernetes 專業知識)
最適合 受管基礎架構、最少維運 自訂基礎架構、事件驅動工作負載 完整的 Kubernetes 控制

詢問使用者哪個部署目標符合他們的需求。每個都是有效的生產選擇,但有不同的取捨。

產品名稱對應:「Agent Engine」/「Vertex AI Agent Engine」現在是 Agent Runtime。使用 --deployment-target agent_runtime

環境/排程/事件驅動代理: Agent Runtime 不支援 Pub/Sub、Eventarc 或 Cloud Scheduler 觸發。對於這些工作負載,請使用 Cloud Run(建議)或 GKE。請參閱 /google-agents-cli-adk-codereferences/adk-python.md,第 12 節「事件驅動/環境代理」)以了解 trigger_sources 模式。

OAuth / 使用者同意代理: 對於需要 OAuth 2.0 使用者同意(例如存取 Google Drive、日曆或其他使用者範圍 API)的代理,請使用 Agent Runtime 搭配 Gemini Enterprise。Cloud Run 目前不支援受管 OAuth 流程。請參閱 /google-agents-cli-workflow 第一階段的 adk-ae-oauth 範例。


部署至開發環境

部署工作流程

任務追蹤: 部署涉及多個順序步驟(基礎架構設定、CI/CD 設定、部署、驗證)。使用任務清單來追蹤這些步驟的進度 — 跳過某一步驟通常會導致後續步驟失敗,且難以追溯原因。

  1. 如果是原型(無部署目標),請先增強:agents-cli scaffold enhance . --deployment-target <target>
  2. 通知使用者:「評估分數已達門檻且測試通過。準備好部署至開發環境了嗎?」
  3. 等待明確批准
  4. 批准後:agents-cli deploy

Agent Runtime 逾時復原: Agent Runtime 部署可能需要 5-10 分鐘,並可能超過指令逾時。如果部署指令被取消或逾時,部署仍會在伺服器端繼續。執行 agents-cli deploy --status 以檢查進度 — 每 60 秒輪詢一次,直到報告完成或失敗。

重要事項:未經明確的人員批准,切勿執行 agents-cli deploy

請勿在部署前執行 agents-cli infra single-project 它不是先決條件 — agents-cli deploy 可以獨立運作。如果使用者需要可觀測性功能(提示-回應記錄、BigQuery 分析),請單獨執行它 — 請參閱 /google-agents-cli-observability

單一專案基礎架構設定(選用 — 進階)

agents-cli infra single-projectdeployment/terraform/single-project/ 中執行 terraform apply。使用此功能來佈建單一專案的 GCP 基礎架構,無需 CI/CD(服務帳戶、IAM 綁定、遙測資源、Artifact Registry)。也可用於在單一專案中測試,然後再進入生產環境。這不是部署的必要條件。

# 選用 — 在單一 GCP 專案中佈建基礎架構
agents-cli infra single-project

注意: agents-cli deploy 不會自動使用 Terraform 建立的 app_sa。對於 Agent Runtime 目標,請透過 agents-cli deploy --service-account SA_EMAILuv run -m app.app_utils.deploy --service-account SA_EMAIL 傳遞服務帳戶。

部署旗標參考

旗標 說明 目標
--project GCP 專案 ID 全部
--region GCP 區域 全部
--service-account 已部署代理的服務帳戶電子郵件 全部
--service-name 覆寫已部署的服務名稱(Cloud Run 服務或 Agent Runtime 顯示名稱);預設為專案名稱。如果覆寫,請考慮更新您的 Terraform 和 CI(如果有的話)— 它們會根據專案名稱命名資源。不支援 GKE,其名稱完全由 Terraform 擁有。 Agent Runtime、Cloud Run
--secrets 逗號分隔的 ENV=SECRETENV=SECRET:VERSION 配對 Agent Runtime、Cloud Run
--update-env-vars 逗號分隔的 KEY=VALUE 環境變數 Agent Runtime、Cloud Run
--agent-identity 啟用代理身分(預覽版) Agent Runtime
--network-attachment PSC 介面的網路附加元件資源名稱(啟用私有 VPC 連線) Agent Runtime
--dns-peering-domain DNS 對等網域後綴,例如 my-internal.corp.(需要 --network-attachment Agent Runtime
--dns-peering-project 託管 DNS 對等 Cloud DNS 受管區域的專案 ID(需要 --network-attachment Agent Runtime
--dns-peering-network 目標專案中用於 DNS 對等的 VPC 網路名稱(需要 --network-attachment Agent Runtime
--memory 記憶體限制(預設:4Gi Agent Runtime、Cloud Run
--cpu CPU 限制(預設:1 Agent Runtime、Cloud Run
--min-instances 最小執行個體數(預設:1 Agent Runtime、Cloud Run
--max-instances 最大執行個體數(預設:10 Agent Runtime、Cloud Run
--concurrency 每個容器的並行請求數(預設:8;請參閱調整部署規模 Agent Runtime、Cloud Run
--num-workers 每個容器的工作者處理程序數(預設:1 Agent Runtime
--port 容器連接埠 Cloud Run
--iap 啟用 Identity-Aware Proxy Cloud Run
--image 容器映像 URI(跳過原始碼建置) Cloud Run、GKE
--no-wait 啟動部署並立即返回 Agent Runtime、Cloud Run
--status 檢查待處理的 --no-wait 部署狀態 Agent Runtime、Cloud Run
--list 列出現有部署並退出 全部
--dry-run / -n 列印將執行的內容而不實際執行 全部
--no-confirm-project 跳過專案確認提示 全部

執行 agents-cli deploy --help 以取得完整的旗標參考。

進階 Cloud Run 部署: 如果您需要 agents-cli 旗標未公開的功能,請使用 --dry-run(或 -n)來列印完整的 gcloud 指令,複製它,並根據需要新增其他引數。

專案確認: 如果專案是自動解析的(未透過 --project 傳遞),則指令會在互動模式下提示確認。由於代理通常以非互動模式執行,如果您依賴自動專案解析,則必須傳遞 --no-confirm-project 才能繼續。


調整部署規模

預設值(在 Agent Runtime、Cloud Run 和產生的 service.tf 上相同):--cpu 1--memory 4Gi--num-workers 1--concurrency 8--min-instances 1--max-instances 10

這些參數是耦合的 — 應一起調整:

  • 工作者 = vCPU。 每個工作者是一個 GIL 綁定的處理程序,會耗盡一個核心,因此請將 --num-workers--cpu 一起提高(例如 --cpu 4--num-workers 4),否則您將為閒置的核心付費。
  • 記憶體限制並行數。 每個並行請求在等待模型時,會將其完整的工作集(上下文視窗、歷史記錄、RAG 區塊、回應緩衝區)保留在記憶體中,因此峰值 ≈ 基礎 + concurrency × per-request memory。記憶體(而非 CPU)是第一個限制,因此在沒有 --memory 的情況下提高 --concurrency 是主要的 OOM 原因。
  • 並行預設值較保守。 非同步工作者在等待模型時可以服務許多並行請求,但每個請求的記憶體因代理而異,因此 8 可以保護記憶體密集型(RAG/多模態)代理。輕量代理可以在負載測試後將其提高到 16-32+。請參閱未充分利用的非同步工作者
# 4 倍吞吐量:調整每個參數,而不僅僅是一個
agents-cli deploy --cpu 4 --num-workers 4 --concurrency 16 --memory 16Gi

使用架構化的負載測試進行調整tests/load_test/,在本地或 CI/CD 暫存管道中執行):驅動負載,觀察最大延遲和記憶體/OOM 重新啟動,然後進行調整 — 高最大延遲 → 提高並行數(+ 工作者/cpu);OOM → 提高記憶體或降低並行數。

--num-workers 僅限 Agent Runtime(Cloud Run 執行一個 uvicorn 處理程序)。在 GKE 上,這些旗標會被拒絕 — 透過 deployment/terraform/ 下的 Terraform 清單和 HorizontalPodAutoscaler 來調整規模。


生產部署 — CI/CD 管道

如需完整的 CI/CD 管道設定指南 — 先決條件、infra cicd 旗標、執行器比較、WIF 驗證、管道階段和生產批准 — 請參閱 references/cicd-pipeline.md


Cloud Run 特定說明

如需詳細的基礎架構設定(擴展預設值、Dockerfile、FastAPI 端點、工作階段類型、網路),請參閱 references/cloud-run.md。如需 ADK 關於 Cloud Run 部署的文件,請擷取 https://adk.dev/deploy/cloud-run/index.md

如需在 Cloud Run 上部署事件驅動/環境代理,請參閱 ambient-expense-agent 範例和 /google-agents-cli-adk-codereferences/adk-python.md,第 12 節「事件驅動/環境代理」)以了解 trigger_sources 模式。


Agent Runtime 特定說明

Agent Runtime 是一項受管的 Vertex AI 服務,用於部署 Python ADK 代理。使用基於原始碼的部署(無 Dockerfile),透過 deploy.pyAdkApp 類別。

Agent Runtime 沒有 gcloud CLI。 透過 agents-cli deploydeploy.py 進行部署。透過 Python vertexai.Client SDK 進行查詢。

部署可能需要 5-10 分鐘。使用 --no-wait 啟動部署並立即返回,然後稍後使用 --status 檢查:

# 啟動部署而不阻塞
agents-cli deploy --no-wait

# 稍後檢查進度
agents-cli deploy --status

--status 偵測到操作已完成時,它會寫入 deployment_metadata.json 並列印與正常部署相同的成功輸出。

如需詳細的基礎架構設定(deploy.py 旗標、AdkApp 模式、Terraform 資源、部署中繼資料、工作階段/成品服務、CI/CD 差異),請參閱 references/agent-runtime.md。如需 ADK 關於 Agent Runtime 部署的文件,請擷取 https://adk.dev/deploy/agent-runtime/index.md


GKE 特定說明

如需詳細的基礎架構設定(Kubernetes 清單、Terraform 資源、Workload Identity、工作階段類型、網路),請參閱 references/gke.md。如需 ADK 關於 GKE 部署的文件,請擷取 https://adk.dev/deploy/gke/index.md


服務帳戶架構

已建立架構的專案使用兩個服務帳戶:

  • app_sa(每個環境)— 已部署代理的執行時期身分。角色定義在 deployment/terraform/iam.tf 中。
  • cicd_runner_sa(CI/CD 專案)— CI/CD 管道身分(GitHub Actions / Cloud Build)。位於 CI/CD 專案中(預設為生產專案),需要在暫存和生產專案中都具有權限。

檢查 deployment/terraform/iam.tf 以了解確切的角色綁定。跨專案權限(Cloud Run 服務代理、Artifact Registry 存取)也在那裡設定。

常見的 403 錯誤:

  • 「Cloud Run 權限遭拒」→ cicd_runner_sa 在目標專案中缺少部署角色
  • 「無法扮演服務帳戶」→ app_sa 缺少 iam.serviceAccountUser 綁定
  • 「機密存取遭拒」→ app_sa 缺少 secretmanager.secretAccessor
  • 「Cloud SQL 連線失敗/未授權」→ 執行時期服務帳戶缺少 roles/cloudsql.client
  • 「Artifact Registry 讀取遭拒」→ Cloud Run 服務代理在 CI/CD 專案中缺少讀取存取權

CI/CD 設定所需的權限

  • roles/secretmanager.admin 授予 CI/CD 專案中的 Cloud Build 服務帳戶(service-<PROJECT_NUMBER>@gcp-sa-cloudbuild.iam.gserviceaccount.com)。這允許 Cloud Build 存取儲存在 Secret Manager 中的 GitHub 權杖。

必要的 API

您的專案必須啟用下列 Google Cloud API,技能和部署才能運作:

  • cloudbuild.googleapis.com — 用於建置容器映像和執行 CI/CD 管道。
  • secretmanager.googleapis.com — 用於管理機密和 API 金鑰。
  • run.googleapis.com — 用於部署至 Cloud Run。

在執行部署或 CI/CD 設定指令之前,請確保已啟用這些 API:

gcloud services enable cloudbuild.googleapis.com secretmanager.googleapis.com run.googleapis.com --project=YOUR_PROJECT_ID

Secret Manager(用於 API 憑證)

與其將敏感金鑰作為環境變數傳遞,不如使用 GCP Secret Manager。

# 建立機密
echo -n "YOUR_API_KEY" | gcloud secrets create MY_SECRET_NAME --data-file=-

# 更新現有機密
echo -n "NEW_API_KEY" | gcloud secrets versions add MY_SECRET_NAME --data-file=-

授予存取權: 對於 Cloud Run,將 secretmanager.secretAccessor 授予 app_sa。對於 Agent Runtime,將其授予平台管理的 SA(service-PROJECT_NUMBER@gcp-sa-aiplatform-re.iam.gserviceaccount.com)。對於 GKE,將 secretmanager.secretAccessor 授予 app_sa。透過 Kubernetes Secrets 或直接透過 Secret Manager API 搭配 Workload Identity 來存取機密。

在部署時傳遞機密(Agent Runtime、Cloud Run):

agents-cli deploy --secrets "API_KEY=my-api-key,DB_PASS=db-password:2"

格式:ENV_VAR=SECRET_IDENV_VAR=SECRET_ID:VERSION(預設為最新版本)。在程式碼中透過 os.environ.get("API_KEY") 存取。


Cloud SQL 權限(手動部署)

手動部署中將 Cloud SQL 與 Cloud Run 搭配使用時(例如在非 Terraform 設定中新增 --add-cloudsql-instances),您必須手動將 Cloud SQL Client 角色授予執行時期服務帳戶。

如果沒有此角色,部署可能會成功,但在執行時期會因 cloudsql.instances.get 授權錯誤而失敗。

gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
  --member="serviceAccount:YOUR_RUNTIME_SA_EMAIL" \
  --role="roles/cloudsql.client"

注意: 在完整的 Terraform 管理設定(infra cicd / infra single-project)中,此角色會自動設定和管理。


可觀測性

請參閱 agents-cli-observability 技能以了解可觀測性設定(Cloud Trace、提示-回應記錄、BigQuery Analytics、第三方整合)。


測試已部署的代理

測試已部署代理的最快方法是 agents-cli run --url <service-url> --mode <a2a|adk> "your prompt" — 它會自動處理驗證、工作階段和串流(支援 Agent Runtime 和 Cloud Run)。

如需進階測試(自訂標頭、工作階段重複使用、指令碼、負載測試),請參閱 references/testing-deployed-agents.md


使用 UI(IAP)部署

IAP(Identity-Aware Proxy)可保護 Cloud Run 服務,只有授權的 Google 帳戶才能存取。透過在部署時新增 --iap 旗標來啟用它(僅限 Cloud Run):agents-cli deploy --iap

對於具有自訂前端的 Agent Runtime,請使用解耦部署 — 將前端單獨部署到 Cloud Run 或 Cloud Storage,連接到 Agent Runtime 後端 API。

如需有關 IAP 與 Cloud Run 的更多資訊,請參閱 Cloud Console IAP 設定


回滾與復原

主要的回滾機制是基於 git:修正問題、提交並推送到 main。CI/CD 管道會自動建置並透過暫存 → 生產部署新版本。

如需在沒有新提交的情況下立即回滾 Cloud Run,請使用修訂版流量轉移:

gcloud run revisions list --service=SERVICE_NAME --region=REGION
gcloud run services update-traffic SERVICE_NAME \
  --to-revisions=REVISION_NAME=100 --region=REGION

Agent Runtime 不支援基於修訂版的回滾 — 請透過 agents-cli deploy 修正並重新部署。

對於 GKE 回滾,請使用 kubectl rollout undo

kubectl rollout undo deployment/DEPLOYMENT_NAME -n NAMESPACE
kubectl rollout status deployment/DEPLOYMENT_NAME -n NAMESPACE

自訂基礎架構(Terraform)

重要事項:當您的代理需要自訂基礎架構(Cloud SQL、Pub/Sub、Eventarc、BigQuery 等)時,您必須在 Terraform 中定義它 — 切勿透過 gcloud 指令手動建立資源。例外:快速實驗可以使用 gcloud 或主控台,但生產基礎架構必須在 Terraform 中。

如需自訂基礎架構模式,請查閱 references/terraform-patterns.md 以了解:

  • 放置自訂 Terraform 檔案的位置(單一專案 vs CI/CD)
  • 資源範例(Pub/Sub、BigQuery、Eventarc 觸發)
  • 自訂資源的 IAM 綁定
  • Terraform 狀態管理(遠端 vs 本地、匯入資源)
  • 常見基礎架構模式

疑難排解

問題 解決方案
Terraform 狀態鎖定 在 deployment/terraform/ 中執行 terraform force-unlock -force LOCK_ID
GitHub Actions 驗證失敗 在 CI/CD terraform 目錄中重新執行 terraform apply;驗證 WIF 池/提供者
Cloud Build 授權待處理 改用 github_actions 執行器
資源已存在 terraform import(請參閱 references/terraform-patterns.md
Agent Runtime 部署逾時/掛起 部署需要 5-10 分鐘;檢查引擎是否已建立(請參閱 Agent Runtime 特定說明)
機密不可用 驗證 secretAccessor 已授予 app_sa(而非預設的運算 SA)
Cloud SQL 連線失敗 / 403 使用手動部署時,將 roles/cloudsql.client 授予執行時期服務帳戶
部署時出現 403 檢查 deployment/terraform/iam.tfcicd_runner_sa 需要在目標專案中具有部署和 SA 模擬角色
測試 Cloud Run 時出現 403 預設為 --no-allow-unauthenticated;包含 Authorization: Bearer $(gcloud auth print-identity-token) 標頭
冷啟動太慢 在 Cloud Run Terraform 設定中設定 min_instance_count > 0
Cloud Run 503 錯誤 檢查資源限制(記憶體/CPU),增加 max_instance_count,或檢查容器崩潰日誌
授予 IAM 角色後立即出現 403 IAM 傳播並非即時 — 等待幾分鐘後再重試。不要一直重新授予相同的角色
資源似乎遺失,但 Terraform 已建立 執行 terraform state list 以檢查 Terraform 實際管理哪些資源。透過 null_resource + local-exec 建立的資源(例如 BQ 連結資料集)不會出現在 gcloud CLI 輸出中
部署失敗或代理無回應 檢查 Cloud Logging:對於 Cloud Run,使用 gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=SERVICE" --project=PROJECT --limit=50 --format="table(timestamp,severity,textPayload)";對於 Agent Runtime,使用 gcloud logging read "resource.type=aiplatform.googleapis.com/ReasoningEngine" --project=PROJECT --limit=50
部署後代理傳回錯誤 開啟主控台中的 Cloud Logging → 依服務名稱(Cloud Run)或推理引擎資源(Agent Runtime)篩選 → 在最近的日誌項目中尋找 Python 回溯或權限錯誤

平台註冊

如需將已部署的代理註冊到 Gemini Enterprise,請參閱 /google-agents-cli-publish


相關技能

  • /google-agents-cli-workflow — 開發工作流程、編碼指南和操作規則
  • /google-agents-cli-adk-code — ADK Python API 快速參考,用於編寫代理程式碼
  • /google-agents-cli-eval — 評估方法、資料集架構和評估-修正循環
  • /google-agents-cli-scaffold — 使用 agents-cli scaffold create / scaffold enhance 建立和增強專案
  • /google-agents-cli-observability — Cloud Trace、記錄、BigQuery Analytics 和第三方整合
  • /google-agents-cli-publish — Gemini Enterprise 註冊