本頁面介紹在 Google Cloud 上執行 Claude 應用程式閘道的一種方式。此配置是客戶管理基礎設施的工作範例,而非受支援的生產部署;使用它來了解各個部分如何組合在一起,然後再根據您自己的環境進行調整。如需平台無關的需求,請參閱部署指南。
oidc 區塊會改變。如需各個 IdP 的詳細資訊,請參閱身分提供者設定。
您將建立的內容
- 執行閘道容器的 Cloud Run 服務或 GKE Deployment
- 用於閘道映像的 Artifact Registry 儲存庫
- Cloud SQL for PostgreSQL 執行個體,僅限私有 IP,用於閘道的儲存
- Secret Manager 祕密,用於
gateway.yaml、JWT 簽署金鑰、OIDC 用戶端祕密和 Postgres URL - 服務帳戶,具有
roles/aiplatform.user,直接附加到 Cloud Run 或透過 GKE 上的 Workload Identity 繫結 - HTTPS 前端,由您提供:Cloud Run 前面的內部應用程式負載平衡器(本逐步解說會為其設定閘道,但不會建立),或在 GKE 上使用
gce-internal類別的內部 GKE Ingress
先決條件
- 啟用計費的 GCP 專案,以及建立上述資源的權限
gcloudCLI(使用gcloud auth login驗證)和本機安裝的 Docker- 對於 GKE 路徑:
kubectl和在下面逐步解說中建立的 VPC 上的 GKE 叢集 - 在 Model Garden 中存取您需要的 Claude 模型,在發佈這些模型的區域中
- Google Workspace OAuth 2.0 網路應用程式用戶端,重新導向 URI 為
https://<gateway-host>/oauth/callback;請參閱身分提供者設定 - 閘道的 TLS 主機名稱,通常是指向負載平衡器的內部 DNS 名稱
部署閘道
以下步驟使用gcloud 命令佈建完整部署。
1
啟用 API
啟用本逐步解說使用的服務 API:您需要的 API 取決於部署路徑:
compute和servicenetworking:私有 IP Cloud SQL 路徑所需run:僅限 Cloud Runcontainer:僅限 GKE
2
建立服務帳戶並授予 IAM
閘道以專用服務帳戶身份執行,具有呼叫 Google Cloud 的 Agent Platform 的權限。它透過 VPC 使用密碼使用者連接到 Cloud SQL,因此不需要 Cloud SQL IAM 角色:然後在 Model Garden 中為專案啟用 Claude 模型;模型發佈到特定區域,因此請檢查每個模型卡。
3
建置映像並推送到 Artifact Registry
根據容器映像需求建置映像,使用
linux-x64 glibc 二進位檔,並推送它:4
佈建 Cloud SQL for PostgreSQL
透過 Private Services Access 在 VPC 上建立執行個體,使其沒有公用 IP;這也滿足強制執行 Cloud Run 或 GKE 執行階段必須在此 VPC 上或路由到此 VPC。
constraints/sql.restrictPublicIp 的專案:5
撰寫 gateway.yaml
upstreams 區塊使用 auth: {} 指向 Google Cloud 的 Agent Platform,因此閘道透過執行階段服務帳戶的應用程式預設認證進行驗證。請參閱設定參考以了解每個欄位。兩個 listen 欄位描述什麼在閘道前面:public_url:外部https://來源,任何非迴圈繫結都需要;請參閱listen參考。閘道僅從此值建置 IdPredirect_uri和其探索文件,絕不從X-Forwarded-*標頭建置。trusted_proxies:前端的來源範圍。閘道僅在 TCP 對等在此清單中時才接受X-Forwarded-For,然後走過受信任的躍點鏈,因此每個 IP 登入速率限制和稽核事件會記錄開發人員 IP 而不是負載平衡器的。
trusted_proxies 以符合您的前端。gce 類別的外部 GKE Ingress 未列出:它佈建公用轉送規則位址,/login 私人網路檢查會拒絕。下面的範例使用內部負載平衡器在 Cloud Run 前面的值。
gateway.yaml
Google id_tokens 不包含
groups 宣告。若要在 managed.policies 中使用基於群組的原則,並以 Google Workspace 作為 IdP,請設定 oidc.google_groups,它使用具有網域範圍委派的服務帳戶透過 Admin SDK Directory API 查詢每個使用者的群組。沒有它,改為符合 email_domain。6
在 Secret Manager 中儲存祕密
建立四個祕密並授予
roles/secretmanager.secretAccessor 給 claude-gateway 服務帳戶:祕密到達容器的方式因軌道而異:
- 在 GKE 上,它們透過 Secret Manager CSI 驅動程式掛載為檔案,
gateway.yaml參考${file:/secrets/...}。 - 在 Cloud Run 上,無法將多個祕密掛載到一個目錄,
gateway.yaml掛載為檔案,其他三個注入為環境變數,因此gateway.yaml改為參考${GATEWAY_JWT_SECRET}、${OIDC_CLIENT_SECRET}和${GATEWAY_POSTGRES_URL}。
7
部署
- Cloud Run
- GKE
下面的命令在內部負載平衡器後面部署用於生產。直接 VPC 出口,透過
--network、--subnet 和 --vpc-egress=private-ranges-only,讓服務直接到達 Cloud SQL 私有 IP。每個執行個體最多持有 store.max_connections 個 Postgres 連線,預設為五個,因此保持最大執行個體數 × store.max_connections 低於您的 Cloud SQL 層級的連線限制;參考資產因此將 db-g1-small 層級的執行個體上限設為 8。公用出口到 Google Cloud 的 Agent Platform 端點和 accounts.google.com 直接進入網際網路,而不是透過 VPC,因此不需要 Cloud NAT。調用者 IAM 檢查必須開啟或停用。閘道執行自己的 OIDC,其用戶端不攜帶 GCP 權杖,因此 Cloud Run 的調用者檢查必須允許未驗證的請求。閘道的 OIDC 登入在請求到達容器後驗證請求,使用 allowed_email_domains 限制哪些網域可以登入。兩個旗標允許未驗證的請求:--no-invoker-iam-check:停用檢查,無需管理allUsers繫結,並在網域限制共用下工作--allow-unauthenticated:授予allUsersrun.invoker角色;如果您的組織不允許--no-invoker-iam-check,請使用它
--ingress 的入口限制是與調用者檢查分開的獨立層;保持設定以將服務限制在您的公司網路。預設情況下,Cloud Run *.run.app URL 解析為公用位址,/login 私人網路檢查會拒絕。兩個拓撲為開發人員提供私人可解析的主機名稱,Cloud Run 都不為您佈建:- 內部應用程式負載平衡器,此頁面的
gateway.yaml假設的拓撲:在服務前面佈建內部應用程式負載平衡器,具有內部 DNS 名稱和憑證,並將listen.public_url設定為該主機名稱。internal入口設定已允許來自內部應用程式負載平衡器的流量;internal-and-cloud-load-balancing另外允許外部應用程式負載平衡器,其公用位址/login私人網路檢查會拒絕,因此此頁面上的拓撲都不需要它。 - 僅限內部入口,無負載平衡器:保持部署命令原樣,將
listen.public_url保留為*.run.appURL,下面參考資產中的預設值。為了讓*.run.app私人解析,您的網路團隊必須已經為 Google API 運作 Private Service Connect 端點、解析*.run.app到它的 Cloud DNS 私人區域,以及到該端點的內部部署路由。
<public_url>/oauth/callback。變更 public_url 後重新部署,因為閘道僅從該設定建置其公用來源,並忽略 X-Forwarded-Host 和 X-Forwarded-Proto。X-Forwarded-For 僅在設定 listen.trusted_proxies 時才被接受用於用戶端 IP。8
將閘道 URL 推送到開發人員機器
閘道現在正在執行,但開發人員無法從
/login 到達它,直到閘道 URL 在他們的機器上。透過 MDM 將完整的受管設定片段部署到每個裝置,具有 forceLoginMethod、forceLoginGatewayUrl 和 parentSettingsBehavior: "merge" 選擇加入。登入選擇器中沒有閘道選項供開發人員手動選擇。Terraform 參考
參考部署資產自動化本頁面上的 Cloud Run 路徑;配置和映像資產適用於兩個路徑:setup.sh:一個冪等gcloud配置程式,遍歷完整的 Cloud Run 路徑,從啟用 API 到第一次部署terraform/:相同的部署作為基礎設施即程式碼,用於綠地部署:針對性應用以建立 Artifact Registry 儲存庫,然後建立和推送映像,然後完整應用gateway.yaml.example和用於 distroless 執行時映像的Dockerfile
internal,符合本頁面上的部署命令;該設定適用於在服務前面有或沒有內部 Application Load Balancer 的情況,工件也不會建立負載平衡器。工件也預設呼叫者層為 allUsers run.invoker 授予,而不是 --no-invoker-iam-check,與本頁面逐步解說相反;兩者都有效,選擇取決於您的組織的原則限制。
資產作為工作範例提供,而非受支援的生產工件;檢查並根據您的環境調整它們。
疑難排解
如需閘道啟動和登入錯誤,請參閱平台無關的疑難排解表。下面的項目特定於 Google Cloud。後續步驟
- 配置參考:每個
gateway.yaml選項,包括managed.policies和telemetry - 部署和操作:IdP 設定、健康檢查、JWT 祕密輪換、升級和安全模型
- Claude 應用程式閘道概述:快速入門和連接開發人員