Questa pagina illustra un modo per eseguire il gateway delle app Claude su Google Cloud. La configurazione è un esempio funzionante per l’infrastruttura gestita dal cliente piuttosto che una distribuzione di produzione supportata; utilizzatela per vedere come i componenti si incastrano insieme prima di adattarla al vostro ambiente. Per i requisiti indipendenti dalla piattaforma, consultate la guida alla distribuzione.
oidc cambia. Consultate Configurazione del provider di identità per i dettagli specifici per ogni IdP.
Cosa costruirete
- Servizio Cloud Run o Deployment GKE che esegue il contenitore del gateway
- Repository Artifact Registry per l’immagine del gateway
- Istanza Cloud SQL per PostgreSQL, solo IP privato, per lo store del gateway
- Segreti Secret Manager per
gateway.yaml, la chiave di firma JWT, il segreto client OIDC e l’URL Postgres - Account di servizio con
roles/aiplatform.user, allegato direttamente su Cloud Run o associato tramite Workload Identity su GKE - Front end HTTPS fornito da te: un Internal Application Load Balancer davanti a Cloud Run, per il quale questa guida configura il gateway ma che non crea, oppure un GKE Ingress interno di classe
gce-internalsu GKE
Prerequisiti
- Un progetto GCP con fatturazione abilitata e autorizzazione per creare le risorse di cui sopra
- La CLI
gcloud, autenticata congcloud auth login, e Docker installato localmente - Per il percorso GKE:
kubectle un cluster GKE sul VPC creato nella procedura dettagliata di seguito - Accesso ai modelli Claude di cui avete bisogno in Model Garden, in una regione che li pubblica
- Un client applicazione web OAuth 2.0 di Google Workspace con URI di reindirizzamento
https://<gateway-host>/oauth/callback; consultate Configurazione del provider di identità - Un nome host TLS per il gateway, in genere un nome DNS interno che punta al load balancer
Distribuire il gateway
I passaggi seguenti eseguono il provisioning della distribuzione completa con comandigcloud.
1
Abilitare le API
Abilitate le API di servizio utilizzate dalla procedura dettagliata:Le API di cui avete bisogno dipendono dal percorso di distribuzione:
computeeservicenetworking: necessarie per il percorso Cloud SQL con IP privatorun: solo Cloud Runcontainer: solo GKE
2
Creare l'account di servizio e concedere IAM
Il gateway viene eseguito come account di servizio dedicato con autorizzazione per chiamare Agent Platform. Raggiunge Cloud SQL sul VPC con un utente con password, quindi non è richiesto alcun ruolo IAM di Cloud SQL:Quindi abilitate i modelli Claude per il progetto in Model Garden; i modelli vengono pubblicati in regioni specifiche, quindi controllate ogni scheda del modello.
3
Compilare e inviare l'immagine ad Artifact Registry
Compilate l’immagine secondo i requisiti dell’immagine del contenitore, utilizzando il binario glibc
linux-x64, e inviatela:4
Eseguire il provisioning di Cloud SQL per PostgreSQL
Create l’istanza su un VPC tramite Private Services Access in modo che non abbia IP pubblico; questo soddisfa anche i progetti in cui Il runtime Cloud Run o GKE deve essere su, o instradato in, questo VPC.
constraints/sql.restrictPublicIp è applicato:5
Scrivere gateway.yaml
Il blocco
upstreams punta ad Agent Platform con auth: {}, quindi il gateway si autentica tramite Application Default Credentials dall’account di servizio del runtime. Consultate il riferimento di configurazione per ogni campo.Due campi listen descrivono cosa si trova davanti al gateway:public_url: l’originehttps://esterna, richiesta per qualsiasi bind non loopback; consulta il riferimento dilisten. Il gateway costruisce ilredirect_uridell’IdP e il suo documento di discovery solo da questo valore, mai da intestazioniX-Forwarded-*.trusted_proxies: gli intervalli di origine del front end. Il gateway onoraX-Forwarded-Forsolo quando il peer TCP è in questo elenco, quindi percorre la catena oltre gli hop affidabili, in modo che i rate limit di accesso per IP e gli eventi di audit registrino gli IP degli sviluppatori invece di quello del load balancer.
trusted_proxies in modo che corrisponda al vostro front end. Un GKE Ingress esterno di classe gce non è elencato: esegue il provisioning di un indirizzo di regola di inoltro pubblico, che il controllo rete privata di /login rifiuta.L’esempio seguente utilizza i valori del load balancer interno davanti a Cloud Run.
gateway.yaml
I token id di Google non contengono alcuna rivendicazione
groups. Per utilizzare le politiche basate su gruppi in managed.policies con Google Workspace come IdP, configurate oidc.google_groups, che cerca i gruppi di ogni utente tramite l’API Admin SDK Directory utilizzando un account di servizio con delega a livello di dominio. Senza di essa, abbinate invece su email_domain.6
Archiviare i segreti in Secret Manager
Create quattro segreti e concedete
roles/secretmanager.secretAccessor all’account di servizio claude-gateway:Il modo in cui i segreti raggiungono il contenitore differisce per traccia:
- Su GKE vengono montati come file tramite il driver CSI di Secret Manager e
gateway.yamlfa riferimento a${file:/secrets/...}. - Su Cloud Run, che non può montare più segreti in una directory,
gateway.yamlviene montato come file e gli altri tre si iniettano come variabili di ambiente, quindigateway.yamlfa riferimento a${GATEWAY_JWT_SECRET},${OIDC_CLIENT_SECRET}e${GATEWAY_POSTGRES_URL}invece.
7
Distribuire
- Cloud Run
- GKE
Il comando seguente distribuisce per la produzione dietro un load balancer interno.L’uscita VPC diretta, tramite Il controllo IAM dell’invoker deve essere aperto o disabilitato. Il gateway esegue il proprio OIDC e i suoi client non portano alcun token GCP, quindi il controllo dell’invoker di Cloud Run deve ammettere richieste non autenticate. Il gateway autentica la richiesta una volta che raggiunge il contenitore con OIDC, con
--network, --subnet e --vpc-egress=private-ranges-only, consente al servizio di raggiungere direttamente l’IP privato di Cloud SQL. L’uscita pubblica verso gli endpoint di Agent Platform di Google Cloud e accounts.google.com va direttamente a Internet anziché attraverso il VPC, quindi non è necessario Cloud NAT.Ogni istanza mantiene fino a
store.max_connections connessioni Postgres, cinque per impostazione predefinita. Usa Dimensionare il pool di connessioni per verificare --max-instances=8 rispetto alle connessioni che il tuo database ha ancora disponibili per il gateway, e includi le istanze aggiuntive avviate da un aggiornamento in sequenza.allowed_email_domains che controlla quali domini possono accedere.Due flag ammettono richieste non autenticate:--no-invoker-iam-check: disabilita il controllo senza alcun bindingallUsersda gestire e funziona con Domain Restricted Sharing--allow-unauthenticated: concede al ruolorun.invokerallUsers; utilizzatelo se la vostra organizzazione non consente--no-invoker-iam-check
--ingress è un livello separato e indipendente dal controllo dell’invoker; mantenetelo impostato per limitare il servizio alla vostra rete aziendale.Per impostazione predefinita, l’URL *.run.app di Cloud Run si risolve in un indirizzo pubblico, che il controllo rete privata di /login rifiuta. Due topologie forniscono agli sviluppatori un nome host risolvibile privatamente e Cloud Run non ne esegue il provisioning per voi:- Internal Application Load Balancer, la topologia che il
gateway.yamldi questa pagina presuppone: esegui il provisioning di un Internal Application Load Balancer davanti al servizio con un nome DNS interno e un certificato, e impostalisten.public_urlsu quel nome host. L’impostazione di ingressointernalammette già il traffico dagli Internal Application Load Balancer;internal-and-cloud-load-balancingammette inoltre gli External Application Load Balancer, i cui indirizzi pubblici vengono rifiutati dal controllo di rete privata di/login, quindi nessuna topologia di questa pagina ne ha bisogno. - Ingresso solo interno senza load balancer: mantieni il comando di deploy così com’è e lascia
listen.public_urlcome URL*.run.app, l’impostazione predefinita negli asset di riferimento di seguito. Affinché*.run.appsi risolva privatamente, il tuo team di rete deve già gestire un endpoint Private Service Connect per le API di Google, una zona privata Cloud DNS che risolve*.run.appverso di esso e il routing on-premises verso quell’endpoint.
<public_url>/oauth/callback prima del primo accesso. Ridistribuite dopo aver modificato public_url, perché il gateway costruisce la sua origine pubblica solo da quell’impostazione e ignora X-Forwarded-Host e X-Forwarded-Proto. X-Forwarded-For viene onorato per gli IP client solo quando listen.trusted_proxies è impostato.8
Inviare l'URL del gateway alle macchine degli sviluppatori
Il gateway è ora in esecuzione, ma gli sviluppatori non possono raggiungerlo da
/login finché l’URL del gateway non è sulle loro macchine. Distribuisci a ogni dispositivo tramite MDM lo snippet completo delle impostazioni gestite, con forceLoginMethod, forceLoginGatewayUrl e l’opzione parentSettingsBehavior: "merge". Non c’è alcuna opzione di gateway nel selettore di accesso che uno sviluppatore possa selezionare manualmente.Riferimento Terraform
Gli asset di distribuzione di riferimento automatizzano il percorso Cloud Run su questa pagina; gli asset di configurazione e immagine si applicano a entrambi i percorsi:setup.sh: un provisionergcloudidempotente che percorre il percorso completo di Cloud Run, dall’abilitazione delle API alla prima distribuzioneterraform/: la stessa distribuzione come infrastruttura come codice, per una distribuzione greenfield: un apply mirato per creare il repository Artifact Registry, quindi compilare e inviare l’immagine, quindi un apply completogateway.yaml.examplee unDockerfileper l’immagine di runtime distroless
internal, in linea con il comando di deploy di questa pagina; questa impostazione funziona con o senza un Application Load Balancer interno davanti al servizio, e nemmeno gli artefatti creano il load balancer. Gli artefatti impostano anche per impostazione predefinita il livello dell’invoker su una concessione run.invoker allUsers piuttosto che --no-invoker-iam-check, l’inverso della procedura dettagliata di questa pagina; entrambi funzionano e la scelta dipende dai vincoli di policy della tua organizzazione.
Gli asset sono forniti come esempi funzionanti, non come artefatto di produzione supportato; esaminate e adattate al vostro ambiente.
Risoluzione dei problemi
Per gli errori di avvio del gateway e di accesso, consultate la tabella risoluzione dei problemi indipendente dalla piattaforma. Le voci seguenti sono specifiche per Google Cloud.Passaggi successivi
- Riferimento di configurazione: ogni opzione di
gateway.yaml, inclusemanaged.policiesetelemetry - Distribuzione e operazioni: configurazione IdP, controlli di integrità, rotazione della chiave segreta JWT, aggiornamenti e il modello di sicurezza
- Modalità di test di carico: test di carico di un gateway senza chiamare un provider di modelli
- Panoramica del gateway delle app Claude: guida rapida e connessione degli sviluppatori