Prepara e configura gli agenti Agent2Agent (A2A) per il deployment su Cloud Run.
Questa guida illustra i passaggi essenziali per il deployment degli agenti A2A:
- Configurare il progetto
- Stabilire i ruoli IAM
- Configura l'ambiente cloud
- Esegui il deployment dell'agente
- Eseguire il debug degli errori di deployment
- Testare e monitorare
Esamina la specifica A2A e gli agenti di esempio
Prima di iniziare a sviluppare e implementare l'agente A2A, acquisisci familiarità con i seguenti concetti e risorse:
- Consulta la specifica A2A ufficiale e i concetti di comunicazione dell'agente per la comunicazione dell'agente.
- Esplora gli agenti di esempio esistenti.
- Esamina l'esempio di ADK Cloud Run.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Install the Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Install the Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init - Per creare un service account, esegui il comando seguente:
-
A2A_SERVICE_ACCOUNT_NAME: il nome del account di servizio
-
DESCRIPTION: una descrizione facoltativa del account di servizio
-
DISPLAY_NAME: un nome del account di servizio da visualizzare nella console Google Cloud
- PROJECT_ID: il tuo ID progetto
- A2A_SERVICE_ACCOUNT_NAME: il nome del account di servizio
- ROLE: il ruolo che stai aggiungendo al account di servizio
-
Cloud Run Source Developer (
roles/run.sourceDeveloper) sul progetto -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin) sul progetto -
Amministratore Secret Manager (
roles/secretmanager.admin) sul progetto -
Utente Service Account (
roles/iam.serviceAccountUser) sull'identità del servizio -
Secret Manager Secret Accessor (
roles/secretmanager.secretAccessor) sul account di servizio -
Vertex AI User (
roles/aiplatform.user) sull'account di servizio -
Se esegui il deployment con AlloyDB per PostgreSQL, concedi i seguenti ruoli:
-
Client AlloyDB per PostgreSQL (
roles/alloydb.client) nell'account di servizio -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin) sul account di servizio
-
Client AlloyDB per PostgreSQL (
-
Nella console Google Cloud , vai alla pagina IAM.
Vai a IAM - Seleziona il progetto.
- Fai clic su Concedi l'accesso.
-
Nel campo Nuove entità, inserisci il tuo identificatore dell'utente. In genere si tratta dell'indirizzo email utilizzato per il deployment del servizio Cloud Run.
- Nell'elenco Seleziona un ruolo, seleziona un ruolo.
- Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo successivo.
- Fai clic su Salva.
- PROJECT_NUMBER con il numero del tuo progetto Google Cloud .
- PROJECT_ID con l'ID progetto Google Cloud .
- PRINCIPAL con l'account per il quale stai aggiungendo l'associazione. In genere si tratta dell'indirizzo email utilizzato per eseguire il deployment del servizio Cloud Run.
- ROLE con il ruolo che stai aggiungendo all'account deployer.
Recupera il esempio di codice clonando il repository dell'app di esempio sulla tua macchina locale:
git clone https://github.com/a2aproject/a2a-samplesPassa alla directory che contiene il codice di esempio:
cd a2a-samples/samples/python/agents/adk_cloud_run- Applicazioni Python su Cloud Run: Cloud Run
cerca un file
main.pyper creare ed eseguire il deployment dei servizi Python. Per saperne di più, consulta la guida rapida Esegui il deployment di un servizio Python su Cloud Run. - Applicazioni Node.js su Cloud Run: Cloud Run
cerca un file
index.jsper creare ed eseguire il deployment dei servizi Node.js. Consulta la guida rapida Esegui il deployment di un servizio Node.js su Cloud Run. - Una configurazione
TaskStorein memoria archivia tutti i dati esclusivamente all'interno dell'istanza container Cloud Run. Ciò significa che tutti i dati delle attività vengono persi quando l'istanza del contenitore viene arrestata, ridimensionata o riavviata. - AlloyDB per PostgreSQL fornisce la persistenza dei dati, consentendo agli agenti di scalare in orizzontale e garantendo che le attività sopravvivano ai riavvii dei container, agli eventi di scalabilità e ai deployment.
- REGION: la regione Google Cloud in cui vuoi eseguire il deployment del servizio, ad esempio
europe-west1. - PROJECT_ID: il tuo ID progetto.
- PROJECT_NUMBER: il numero di progetto.
- A2A_SERVICE_ACCOUNT_NAME: il nome del tuo service account A2A.
- REGION: la regione Google Cloud in cui vuoi eseguire il deployment del servizio, ad esempio
europe-west1. - PROJECT_ID: il tuo ID progetto.
- PROJECT_NUMBER: il numero di progetto.
- CLUSTER_NAME: il nome del cluster AlloyDB per PostgreSQL.
- A2A_SERVICE_ACCOUNT_NAME: il nome del tuo service account A2A.
- Log dettagliati:per i log di deployment dettagliati, imposta il flag
--verbosity=infonel comandogcloud run deploy. Mancata corrispondenza dell'URL:se l'
run.appURL restituito dal comando di deployment differisce dall'URL deterministico previsto, aggiorna la variabile di ambienteAPP_URLper il servizio Cloud Run:Utilizza il seguente comando per aggiornare la variabile di ambiente
APP_URL:gcloud run services update SERVICE_NAME \ --project="PROJECT_ID" \ --region="REGION" \ --update-env-vars=APP_URL="CLOUD_RUN_SERVICE_URL"Sostituisci quanto segue:
- SERVICE_NAME: il nome del tuo servizio Cloud Run.
- PROJECT_ID: il tuo ID progetto.
- REGION: la regione Google Cloud in cui vuoi
deployare il servizio. Ad esempio,
europe-west1. - CLOUD_RUN_SERVICE_URL: l'URL del tuo servizio Cloud Run.
Verifica che
APP_URLsia aggiornato correttamente descrivendo il servizio:gcloud run services describe SERVICE_NAME \ --project="PROJECT_ID" \ --region="REGION"
- Formato URL di Cloud Run:
https://TAG---SERVICE_NAME-PROJECT_NUMBER.REGION.run.app - URL di esempio:
https://sample-a2a-agent-1234.europe-west1.run.app - Mostra la scheda dell'agente:mostra automaticamente la scheda dell'agente.
- Convalida la conformità:verifica che la carta soddisfi le specifiche A2A.
- Attiva la chat live:ti consente di inviare e ricevere messaggi con l'agente.
- Mostra i dati non elaborati:mostra i messaggi JSON-RPC 2.0 non elaborati in una console per il debug.
gcloud iam service-accounts create A2A_SERVICE_ACCOUNT_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Sostituisci i seguenti valori:
Concedi i ruoli del account di servizio
Per concedere i ruoli IAM richiesti al tuo account nel tuo progetto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:A2A_SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="ROLE"
Sostituisci:
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per eseguire il deployment degli agenti A2A, chiedi all'amministratore di concederti i seguenti ruoli IAM:
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Concedi i ruoli
Console
gcloud
Per concedere i ruoli IAM richiesti al tuo account nel tuo progetto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
Sostituisci:
Prepararsi al deployment di Cloud Run
Questa sezione descrive le configurazioni necessarie per preparare l'agente A2A per il deployment su Cloud Run per un esempio di codice Python.
Prepara l'agente A2A
Configura i secret per i servizi Cloud Run
Fornisci tutte le credenziali sensibili, come chiavi API e password del database, al tuo server A2A utilizzando un meccanismo sicuro. Cloud Run supporta la fornitura di secret come variabili di ambiente o volumi montati dinamicamente. Per saperne di più, consulta Configura i secret in Cloud Run.
Gli agenti hanno bisogno dell'accesso a servizi esterni per completare le loro attività. I secret sono il meccanismo sicuro per concedere l'accesso. Quando esegui il deployment con AlloyDB per PostgreSQL, hai bisogno dell'utente e della password. Crea e gestisci i secret del nome utente e della password del database in Secret Manager eseguendo i seguenti comandi in gcloud CLI:
gcloud secrets create alloy_db_user --replication-policy="automatic"
# Create a file user.txt with contents of secret value
gcloud secrets versions add alloy_db_user --data-file="user.txt"
gcloud secrets create alloy_db_pass --replication-policy="automatic"
# Create a file pass.txt with contents of secret value
gcloud secrets versions add alloy_db_pass --data-file="pass.txt"
Per saperne di più, consulta Creare un secret.
Dockerfile per la containerizzazione
Cloud Run può eseguire il deployment dei servizi da immagini container già ospitate o direttamente dal codice sorgente. Quando esegui il deployment dal codice sorgente, Cloud Run crea automaticamente un'immagine container se è presente un Dockerfile nella directory root del progetto.
Il Dockerfile determina i dettagli dell'immagine container. Di seguito è riportato il Dockerfile dell'agente A2A di esempio che hai clonato in precedenza:
FROM python:3.13-slim
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
EXPOSE 8080
WORKDIR /app
COPY . ./
RUN uv sync
ENTRYPOINT ["uv", "run", ".", "--host", "0.0.0.0", "--port", "8080"]
Esegui il deployment dal codice sorgente senza un Dockerfile
Per i repository del codice sorgente senza Dockerfile, Cloud Run offre supporto integrato per alcuni linguaggi di programmazione popolari, semplificando il processo di containerizzazione.
Esegui il deployment dell'agente A2A in Cloud Run
Esegui il deployment dell'applicazione A2A con una configurazione TaskStore in memoria o con
AlloyDB per PostgreSQL.
Una configurazione TaskStore in memoria è adatta per sviluppare agenti A2A nell'ambiente locale, mentre AlloyDB per PostgreSQL è adatta per scalare l'agente A2A in produzione.
I seguenti comandi mostrano come utilizzare l'autenticazione basata su IAM
per il servizio Cloud Run. L'utilizzo del flag --no-allow-unauthenticated
al momento del deployment è l'approccio consigliato per configurare l'autenticazione
per i client Google Cloud interni, come Gemini Enterprise.
Se il tuo server A2A è progettato per l'accesso pubblico e deve gestire
l'autenticazione a livello di agente, puoi specificare il flag --allow-unauthenticated
durante il deployment. Per ulteriori dettagli, consulta Autenticazione dell'accesso pubblico di Cloud Run. Per consentire l'accesso pubblico al servizio Cloud Run,
devi anche fornire informazioni di autenticazione cruciali nella scheda dell'agente A2A
utilizzando i parametri securitySchemes e security. Per saperne di più, consulta Specifiche A2A: dettagli dell'oggetto SecurityScheme.
Esegui il deployment con una configurazione TaskStore in memoria
Per eseguire il deployment
dell'agente A2A con una configurazione TaskStore in memoria, esegui questo
comando nella directory che contiene il codice sorgente dell'agente A2A:
gcloud run deploy sample-a2a-agent \
--port=8080 \
--source="." \
--no-allow-unauthenticated \
--region=REGION \
--project=PROJECT_ID \
--memory=1Gi \
--service-account=A2A_SERVICE_ACCOUNT_NAME \
--set-env-vars=GOOGLE_GENAI_USE_VERTEXAI=true,GOOGLE_CLOUD_PROJECT="PROJECT_ID",GOOGLE_CLOUD_LOCATION="REGION",APP_URL="https://sample-a2a-agent-PROJECT_NUMBER.REGION.run.app"
Sostituisci quanto segue:
Esegui il deployment con AlloyDB per PostgreSQL
Per rendere persistenti le attività A2A, utilizza AlloyDB per PostgreSQL. Per eseguire il deployment dell'agente A2A con AlloyDB per PostgreSQL per l'archiviazione permanente delle attività, utilizza il seguente comando:
gcloud run deploy sample-a2a-agent \
--port=8080 \
--source="." \
--no-allow-unauthenticated \
--region=REGION \
--project=PROJECT_ID \
--memory=1Gi \
--update-secrets=DB_USER=alloy_db_user:latest,DB_PASS=alloy_db_pass:latest \
--service-account=A2A_SERVICE_ACCOUNT_NAME \
--set-env-vars=GOOGLE_GENAI_USE_VERTEXAI=true,GOOGLE_CLOUD_PROJECT="PROJECT_ID",GOOGLE_CLOUD_LOCATION="REGION",APP_URL="https://sample-a2a-agent-PROJECT_NUMBER.REGION.run.app",USE_ALLOY_DB="True",DB_INSTANCE="projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_NAME/instances/primary-instance",DB_NAME="postgres"
Sostituisci quanto segue:
Eseguire il debug degli errori di deployment
Se si verificano errori o errori di deployment di Cloud Run, considera quanto segue:
Informazioni sull'URL dell'applicazione Cloud Run
In caso di deployment riuscito, Cloud Run fornisce automaticamente un
run.app
URL, che funge da endpoint per eseguire query sul servizio A2A attivo. L'URL è
deterministico e prevedibile se il nome del servizio è sufficientemente breve.
Testa e monitora il deployment dell'agente A2A
Dopo aver eseguito il deployment dell'agente A2A in Cloud Run, testane a fondo la funzionalità. Stabilisci solide pratiche di monitoraggio per garantire prestazioni e affidabilità continue.
A2A inspector: valida la conformità dell'agente
Utilizza lo strumento a2a-inspector per ispezionare, eseguire il debug e convalidare l'agente Google A2A di cui è stato eseguito il deployment. Questo strumento garantisce che l'agente sia pienamente conforme alla specifica A2A e funzioni correttamente.
Una volta stabilita la connessione, lo strumento di ispezione esegue le seguenti azioni:
Interazione della CLI con un agente A2A di cui è stato eseguito il deployment
Utilizza gli strumenti dell'interfaccia a riga di comando (CLI) del repository di esempi A2A per interagire con il servizio di cui è stato eseguito il deployment. Questa CLI supporta l'autenticazione basata su token di autenticazione.
Se il tuo servizio utilizza l'autenticazione basata su IAM, esporta il token gcloud per un'interazione riuscita:
export A2A_CLI_BEARER_TOKEN=$(gcloud auth print-identity-token)
# From CLI directory
uv run . --agent CLOUD_RUN_SERVICE_URL
Sostituisci CLOUD_RUN_SERVICE_URL con l'URL del servizio Cloud Run di cui hai eseguito il deployment.
Test locale dei servizi A2A di cui è stato eseguito il deployment
Puoi testare il servizio Cloud Run di cui è stato eseguito il deployment localmente. Ciò è particolarmente utile quando implementi l'autenticazione basata su IAM.
Testare l'autenticazione basata su IAM per gli agenti Cloud Run
I client che interagiscono con il servizio Cloud Run protetto da Identity and Access Management (IAM) devono disporre del ruolo IAM roles/run.invoker.
Testa localmente il flusso di autenticazione del servizio di cui è stato eseguito il deployment utilizzando il comando gcloud auth print-identity-token:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" CLOUD_RUN_SERVICE_URL/.well-known/agent.json
Sostituisci CLOUD_RUN_SERVICE_URL con l'URL del servizio Cloud Run di cui hai eseguito il deployment.