Préparez et configurez les agents Agent2Agent (A2A) pour le déploiement sur Cloud Run.
Ce guide décrit les étapes essentielles pour déployer des agents A2A :
- Configurer votre projet
- Établir des rôles IAM
- Configurer votre environnement cloud
- Déployer votre agent
- Déboguer les échecs de déploiement
- Tester et surveiller
Examiner la spécification A2A et les exemples d'agents
Avant de commencer à développer et à déployer votre agent A2A, familiarisez-vous avec les concepts et ressources suivants :
- Consultez les spécifications A2A et les concepts de communication des agents officiels pour la communication des agents.
- Explorez les exemples d'agents existants.
- Consultez l'exemple Cloud Run de l'ADK.
Avant de commencer
- 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.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
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.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init - Pour créer un compte de service, exécutez la commande suivante :
-
A2A_SERVICE_ACCOUNT_NAME : nom du compte de service.
-
DESCRIPTION : description facultative du compte de service.
-
DISPLAY_NAME : nom de compte de service à afficher dans la console Google Cloud .
- PROJECT_ID : ID de votre projet
- A2A_SERVICE_ACCOUNT_NAME : nom de votre compte de service
- ROLE : rôle que vous ajoutez au compte de service
-
Développeur de source Cloud Run (
roles/run.sourceDeveloper) sur le projet -
Administrateur IAM du projet (
roles/resourcemanager.projectIamAdmin) sur le projet -
Administrateur Secret Manager (
roles/secretmanager.admin) sur le projet -
Utilisateur du compte de service (
roles/iam.serviceAccountUser) sur l'identité du service -
Accesseur de secrets Secret Manager (
roles/secretmanager.secretAccessor) sur le compte de service -
Utilisateur Vertex AI (
roles/aiplatform.user) sur le compte de service -
Si vous effectuez le déploiement avec AlloyDB pour PostgreSQL, accordez les rôles suivants :
-
Client AlloyDB pour PostgreSQL (
roles/alloydb.client) sur le compte de service -
Administrateur IAM du projet (
roles/resourcemanager.projectIamAdmin) sur le compte de service
-
Client AlloyDB pour PostgreSQL (
-
Dans la console Google Cloud , accédez à la page IAM.
Accéder à IAM - Sélectionnez le projet.
- Cliquez sur Accorder l'accès.
-
Dans le champ Nouveaux comptes principaux, saisissez votre identifiant utilisateur. Il s'agit généralement de l'adresse e-mail utilisée pour déployer le service Cloud Run.
- Dans la liste Sélectionner un rôle, sélectionnez un rôle.
- Pour attribuer des rôles supplémentaires, cliquez sur Ajouter un autre rôle et ajoutez tous les rôles supplémentaires.
- Cliquez sur Enregistrer.
- PROJECT_NUMBER par le numéro de votre projet Google Cloud .
- PROJECT_ID par l'ID de votre projet Google Cloud .
- PRINCIPAL par le compte pour lequel vous ajoutez la liaison. Il s'agit généralement de l'adresse e-mail utilisée pour déployer le service Cloud Run.
- ROLE par le rôle que vous ajoutez au compte du déployeur.
Récupérez l'exemple de code en clonant le dépôt de l'exemple d'application sur votre ordinateur local :
git clone https://github.com/a2aproject/a2a-samplesAccédez au répertoire qui contient l'exemple de code :
cd a2a-samples/samples/python/agents/adk_cloud_run- Applications Python sur Cloud Run : Cloud Run recherche un fichier
main.pypour créer et déployer des services Python. Pour en savoir plus, consultez le guide de démarrage rapide sur le déploiement d'un service Python sur Cloud Run. - Applications Node.js sur Cloud Run : Cloud Run recherche un fichier
index.jspour créer et déployer des services Node.js. Consultez le guide de démarrage rapide "Déployer un service Node.js sur Cloud Run". - Une configuration
TaskStoreen mémoire stocke toutes ses données exclusivement dans l'instance de conteneur Cloud Run. Cela signifie que toutes les données de tâches sont perdues lorsque l'instance de conteneur s'arrête, est réduite ou redémarre. - AlloyDB pour PostgreSQL assure la persistance des données, ce qui permet aux agents de s'adapter horizontalement et garantit que les tâches survivent aux redémarrages de conteneurs, aux événements de scaling et aux déploiements.
- REGION : région Google Cloud dans laquelle vous souhaitez déployer votre service, par exemple
europe-west1. - PROJECT_ID : ID de votre projet.
- PROJECT_NUMBER : votre numéro de projet.
- A2A_SERVICE_ACCOUNT_NAME : nom de votre compte de service A2A.
- REGION : région Google Cloud dans laquelle vous souhaitez déployer votre service, par exemple
europe-west1. - PROJECT_ID : ID de votre projet.
- PROJECT_NUMBER : votre numéro de projet.
- CLUSTER_NAME : nom de votre cluster AlloyDB pour PostgreSQL.
- A2A_SERVICE_ACCOUNT_NAME : nom de votre compte de service A2A.
- Journaux détaillés : pour obtenir des journaux de déploiement détaillés, définissez l'indicateur
--verbosity=infodans votre commandegcloud run deploy. URL non concordante : si l'URL
run.apprenvoyée par la commande de déploiement diffère de l'URL déterministe attendue, mettez à jour la variable d'environnementAPP_URLpour votre service Cloud Run :Utilisez la commande suivante pour mettre à jour la variable d'environnement
APP_URL:gcloud run services update SERVICE_NAME \ --project="PROJECT_ID" \ --region="REGION" \ --update-env-vars=APP_URL="CLOUD_RUN_SERVICE_URL"Remplacez les éléments suivants :
- SERVICE_NAME : nom de votre service Cloud Run.
- PROJECT_ID : ID de votre projet.
- REGION : région Google Cloud dans laquelle vous souhaitez déployer votre service. Par exemple :
europe-west1. - CLOUD_RUN_SERVICE_URL : URL de votre service Cloud Run.
Vérifiez que
APP_URLest correctement mis à jour en décrivant le service :gcloud run services describe SERVICE_NAME \ --project="PROJECT_ID" \ --region="REGION"
- Format de l'URL Cloud Run :
https://TAG---SERVICE_NAME-PROJECT_NUMBER.REGION.run.app - Exemple d'URL :
https://sample-a2a-agent-1234.europe-west1.run.app - Affiche la fiche de l'agent : la fiche de votre agent s'affiche automatiquement.
- Valide la conformité : vérifie que la fiche respecte les spécifications A2A.
- Active le chat en direct : vous permet d'envoyer et de recevoir des messages de l'agent.
- Afficher les données brutes : affiche les messages JSON-RPC 2.0 bruts dans une console pour le débogage.
gcloud iam service-accounts create A2A_SERVICE_ACCOUNT_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Remplacez les valeurs suivantes :
Attribuer des rôles au compte de service
Pour attribuer les rôles IAM requis à votre compte dans votre projet :
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:A2A_SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="ROLE"
Remplacez :
Rôles requis
Pour obtenir les autorisations nécessaires pour déployer des agents A2A, demandez à votre administrateur de vous accorder les rôles IAM suivants :
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Attribuer les rôles
Console
gcloud
Pour attribuer les rôles IAM requis à votre compte dans votre projet :
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
Remplacez :
Préparer le déploiement Cloud Run
Cette section décrit les configurations requises pour préparer votre agent A2A au déploiement sur Cloud Run pour un exemple de code Python.
Préparer l'agent A2A
Configurer des secrets pour les services Cloud Run
Fournissez tous les identifiants sensibles, tels que les clés API et les mots de passe de base de données, à votre serveur A2A à l'aide d'un mécanisme sécurisé. Cloud Run permet de fournir des secrets en tant que variables d'environnement ou volumes installés de manière dynamique. Pour en savoir plus, consultez Configurer des secrets dans Cloud Run.
Les agents ont besoin d'accéder à des services externes pour accomplir leurs tâches. Les secrets sont le mécanisme sécurisé permettant d'accorder cet accès. Lorsque vous déployez avec AlloyDB pour PostgreSQL, vous avez besoin de l'utilisateur et du mot de passe. Créez et gérez les secrets du nom d'utilisateur et du mot de passe de la base de données dans Secret Manager en exécutant les commandes suivantes dans 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"
Pour en savoir plus, consultez Créer un secret.
Dockerfile pour la conteneurisation
Cloud Run peut déployer des services à partir d'images de conteneurs déjà hébergées ou directement à partir de votre code source. Lorsque vous déployez à partir du code source, Cloud Run crée automatiquement une image de conteneur si un Dockerfile est présent dans le répertoire racine de votre projet.
Le fichier Dockerfile détermine les détails de l'image du conteneur. Voici le fichier Dockerfile de l'agent A2A exemple que vous avez cloné précédemment :
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"]
Déployer à partir du code source sans Dockerfile
Pour les dépôts de code source sans Dockerfile, Cloud Run offre une prise en charge intégrée de certains langages de programmation courants, ce qui simplifie le processus de conteneurisation.
Déployer l'agent A2A sur Cloud Run
Déployez votre application A2A avec une configuration TaskStore en mémoire ou avec AlloyDB pour PostgreSQL.
Une configuration TaskStore en mémoire est adaptée au développement d'agents A2A dans l'environnement local, et AlloyDB pour PostgreSQL est adapté à la mise à l'échelle de l'agent A2A en production.
Les commandes suivantes montrent comment utiliser l'authentification basée sur IAM pour votre service Cloud Run. L'approche recommandée pour configurer l'authentification pour les clients Google Cloud internes, tels que Gemini Enterprise, consiste à utiliser l'indicateur --no-allow-unauthenticated lors du déploiement.
Si votre serveur A2A est conçu pour un accès public et doit gérer l'authentification au niveau de l'agent, vous pouvez spécifier l'indicateur --allow-unauthenticated lors du déploiement. Pour en savoir plus, consultez Authentification pour l'accès public à Cloud Run. Pour autoriser l'accès public à votre service Cloud Run, vous devez également fournir des informations d'authentification essentielles dans la fiche de votre agent A2A à l'aide des paramètres securitySchemes et security. Pour en savoir plus, consultez Spécification A2A : détails de l'objet SecurityScheme.
Déployer avec une configuration TaskStore en mémoire
Pour déployer votre agent A2A avec une configuration TaskStore en mémoire, exécutez la commande suivante dans le répertoire contenant le code source de votre agent 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"
Remplacez les éléments suivants :
Déployer avec AlloyDB pour PostgreSQL
Pour conserver les tâches A2A, utilisez AlloyDB pour PostgreSQL. Pour déployer votre agent A2A avec AlloyDB pour PostgreSQL pour le stockage persistant des tâches, utilisez la commande suivante :
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"
Remplacez les éléments suivants :
Déboguer les échecs de déploiement
Si vous rencontrez des erreurs ou des échecs de déploiement Cloud Run, tenez compte des points suivants :
Comprendre l'URL de l'application Cloud Run
Si le déploiement réussit, Cloud Run fournit automatiquement une URL run.app qui sert de point de terminaison pour interroger votre service A2A actif. L'URL est déterministe et prévisible si le nom de votre service est suffisamment court.
Tester et surveiller le déploiement de l'agent A2A
Une fois votre agent A2A déployé sur Cloud Run, testez minutieusement ses fonctionnalités. Établissez des pratiques de surveillance rigoureuses pour assurer des performances et une fiabilité continues.
Inspecteur A2A : valider la conformité de l'agent
Utilisez l'outil a2a-inspector pour inspecter, déboguer et valider votre agent Google A2A déployé. Cet outil permet de s'assurer que votre agent est entièrement conforme à la spécification A2A et qu'il fonctionne correctement.
Une fois la connexion établie, l'inspecteur effectue les actions suivantes :
Interaction de la CLI avec un agent A2A déployé
Utilisez les outils de l'interface de ligne de commande (CLI) du dépôt d'exemples A2A pour interagir avec votre service déployé. Cette CLI est compatible avec l'authentification basée sur les jetons du porteur.
Si votre service utilise l'authentification basée sur IAM, exportez le jeton gcloud pour une interaction réussie :
export A2A_CLI_BEARER_TOKEN=$(gcloud auth print-identity-token)
# From CLI directory
uv run . --agent CLOUD_RUN_SERVICE_URL
Remplacez CLOUD_RUN_SERVICE_URL par l'URL de votre service Cloud Run déployé.
Tests locaux des services A2A déployés
Vous pouvez tester votre service Cloud Run déployé en local. Cela est particulièrement utile lors de l'implémentation de l'authentification basée sur IAM.
Tester l'authentification basée sur IAM pour les agents Cloud Run
Les clients qui interagissent avec votre service Cloud Run sécurisé par Identity and Access Management (IAM) doivent disposer du rôle IAM roles/run.invoker.
Testez localement le flux d'authentification de votre service déployé à l'aide de la commande gcloud auth print-identity-token :
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" CLOUD_RUN_SERVICE_URL/.well-known/agent.json
Remplacez CLOUD_RUN_SERVICE_URL par l'URL de votre service Cloud Run déployé.