Prepare e configure agentes do Agent2Agent (A2A) para implantação no Cloud Run.
Este guia aborda as etapas essenciais para implantar agentes do A2A:
- Configurar seu projeto
- Estabelecer papéis do IAM
- Configurar seu ambiente de nuvem
- Implantar seu agente
- Depurar falhas de implantação
- Testar e monitorar
Analisar a especificação do A2A e os agentes de amostra
Antes de começar a desenvolver e implantar seu agente do A2A, familiarize-se com os seguintes conceitos e recursos:
- Analise a especificação oficial do A2A e os conceitos de comunicação do agente para comunicação do agente.
- Conheça os agentes de amostra.
- Analise o exemplo do ADK Cloud Run.
Antes de começar
- Faça login na sua Google Cloud conta do. Se você não conhece o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em cenários reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
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.
-
Instale a Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte 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.
-
Instale a Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init - Para criar uma conta de serviço, execute o seguinte comando:
-
A2A_SERVICE_ACCOUNT_NAME: o nome da conta de serviço.
-
DESCRIPTION: uma descrição opcional da conta de serviço.
-
DISPLAY_NAME: um nome de conta de serviço a ser exibido no Google Cloud console.
gcloud iam service-accounts create A2A_SERVICE_ACCOUNT_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Substitua os seguintes valores:
Conceder papéis da conta de serviço
Para conceder os papéis necessários do IAM à sua conta no seu projeto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:A2A_SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="ROLE"
Substitua:
- PROJECT_ID: ID do projeto.
- A2A_SERVICE_ACCOUNT_NAME: o nome da sua conta de serviço.
- ROLE: o papel que você está adicionando à conta de serviço.
Funções exigidas
Para receber as permissões necessárias para implantar agentes do A2A, peça ao administrador para conceder a você os seguintes papéis do IAM:
- Desenvolvedor de origem do Cloud Run (
roles/run.sourceDeveloper) no projeto - Administrador do IAM do projeto (
roles/resourcemanager.projectIamAdmin) no projeto - Administrador do Secret Manager (
roles/secretmanager.admin) no projeto - Usuário da conta de serviço (
roles/iam.serviceAccountUser) na identidade do serviço - Acessador de Secret do Secret Manager (
roles/secretmanager.secretAccessor) na conta de serviço - Usuário da Vertex AI (
roles/aiplatform.user) na conta de serviço -
Se você estiver implantando com o AlloyDB para PostgreSQL, conceda os seguintes papéis:
- Cliente do AlloyDB para PostgreSQL (
roles/alloydb.client) na conta de serviço - Administrador do IAM do projeto (
roles/resourcemanager.projectIamAdmin) na conta de serviço
- Cliente do AlloyDB para PostgreSQL (
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando personalizados papéis ou outros predefinidos papéis.
Conceder os papéis
Console
-
No Google Cloud console, acesse a página IAM.
Acessar IAM - Selecione o projeto.
- Clique em CONCEDER ACESSO.
-
No campo Novos principais, digite seu identificador de usuário. Normalmente, esse é o endereço de e-mail usado para implantar o serviço do Cloud Run.
- Na lista Selecionar papel, escolha um.
- Para conceder outros papéis, clique em Adicionar outro papel e adicione cada papel adicional.
- Clique em Salvar.
gcloud
Para conceder os papéis necessários do IAM à sua conta no seu projeto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
Substitua:
- PROJECT_NUMBER pelo seu Google Cloud projeto número.
- PROJECT_ID pelo ID do Google Cloud projeto.
- PRINCIPAL com a conta para a qual você está adicionando a vinculação. Normalmente, esse é o endereço de e-mail que é usado para implantar o serviço do Cloud Run.
- ROLE pelo papel que você está adicionando à conta do implantador.
Preparar para a implantação do Cloud Run
Esta seção descreve as configurações necessárias para preparar seu agente do A2A para implantação no Cloud Run para um exemplo de código Python.
Preparar o agente do A2A
Recupere o exemplo de código clonando o repositório do app de exemplo na máquina local:
git clone https://github.com/a2aproject/a2a-samplesAcesse o diretório que contém o exemplo de código:
cd a2a-samples/samples/python/agents/adk_cloud_run
Configurar secrets para serviços do Cloud Run
Forneça todas as credenciais sensíveis, como chaves de API e senhas de banco de dados, ao servidor do A2A usando um mecanismo seguro. O Cloud Run oferece suporte ao fornecimento de secrets como variáveis de ambiente ou volumes montados dinamicamente. Para mais informações, consulte Configurar secrets no Cloud Run.
Os agentes precisam de acesso a serviços externos para concluir as tarefas. Os secrets são o mecanismo seguro para conceder esse acesso. Ao implantar com o AlloyDB para PostgreSQL, você precisa do usuário e da senha. Crie e gerencie os secrets de usuário e senha do banco de dados no Secret Manager executando os seguintes comandos na CLI gcloud:
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"
Para mais informações, consulte Criar um secret.
Dockerfile para contêinerização
O Cloud Run pode implantar serviços de imagens de contêiner já hospedadas ou diretamente do código-fonte. Ao implantar do código-fonte, o Cloud Run cria automaticamente uma imagem do contêiner se um Dockerfile estiver presente no diretório raiz do projeto.
O Dockerfile determina os detalhes da imagem do contêiner. A seguir, o Dockerfile do agente de amostra do A2A que você clonou anteriormente:
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"]
Implantar do código-fonte sem um Dockerfile
Para repositórios de código-fonte sem um Dockerfile, o Cloud Run oferece suporte integrado a algumas linguagens de programação conhecidas, simplificando o processo de contêinerização.
- Aplicativos Python no Cloud Run: o Cloud Run
procura um arquivo
main.pypara criar e implantar serviços Python. Para mais informações, consulte o guia de início rápido Implantar um serviço Python no Cloud Run. - Aplicativos Node.js no Cloud Run:o Cloud Run procura um arquivo
index.jspara criar e implantar serviços Node.js. Consulte o guia de início rápido Implantar um serviço Node.js no Cloud Run.
Implantar o agente do A2A no Cloud Run
Implante seu aplicativo do A2A com uma configuração TaskStore na memória ou com o AlloyDB para PostgreSQL.
- Uma configuração
TaskStorena memória armazena todos os dados exclusivamente na instância de contêiner do Cloud Run. Isso significa que todos os dados da tarefa são perdidos quando a instância do contêiner é desligada, reduzida ou reiniciada. - O AlloyDB para PostgreSQL oferece persistência de dados, permitindo que os agentes sejam escalonados horizontalmente e garantindo que as tarefas sobrevivam a reinicializações de contêineres, eventos de escalonamento e implantações.
Uma configuração TaskStore na memória é adequada para desenvolver agentes do A2A no ambiente local, e o AlloyDB para PostgreSQL é adequado para escalonar o agente do A2A na produção.
Os comandos a seguir mostram como usar a autenticação baseada no IAM para o serviço do Cloud Run. O uso da --no-allow-unauthenticated
flag na implantação é a abordagem recomendada para configurar a autenticação
para clientes internos Google Cloud , como o Gemini Enterprise.
Se o servidor do A2A for projetado para acesso público e precisar processar a autenticação no nível do agente, especifique a flag --allow-unauthenticated durante a implantação. Consulte
Autenticação de acesso público do Cloud Run para
mais detalhes. Para permitir o acesso público ao serviço do Cloud Run,
você também precisa fornecer informações de autenticação importantes no card do agente do A2A
usando os parâmetros securitySchemes e security. Para mais
informações, consulte
Especificação do A2A: detalhes do objeto SecurityScheme.
Implantar com uma configuração TaskStore na memória
Para implantar o agente do A2A com uma configuração TaskStore na memória, execute o seguinte comando no diretório que contém o código-fonte do agente do 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"
Substitua:
- REGION: aregião em que você quer
implantar o serviço, por exemplo,
europe-west1. Google Cloud - PROJECT_ID: ID do projeto.
- PROJECT_NUMBER: o número do projeto.
- A2A_SERVICE_ACCOUNT_NAME: o nome da sua conta de serviço do A2A.
Implantar com o AlloyDB para PostgreSQL
Para persistir tarefas do A2A, use o AlloyDB para PostgreSQL. Para implantar o agente do A2A com o AlloyDB para PostgreSQL para armazenamento de tarefas persistente, use o seguinte 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"
Substitua:
- REGION: aregião em que você quer
implantar o serviço, por exemplo,
europe-west1. Google Cloud - PROJECT_ID: ID do projeto.
- PROJECT_NUMBER: o número do projeto.
- CLUSTER_NAME: o nome do cluster do AlloyDB para PostgreSQL.
- A2A_SERVICE_ACCOUNT_NAME: o nome da sua conta de serviço do A2A.
Depurar falhas de implantação
Se você encontrar erros ou falhas de implantação do Cloud Run, considere o seguinte:
- Registros detalhados:para registros de implantação detalhados, defina a flag
--verbosity=infono comandogcloud run deploy. Incompatibilidade de URL:se o
run.appURL retornado pelo comando de implantação for diferente do URL determinístico esperado, atualize aAPP_URLvariável de ambiente para o serviço do Cloud Run:Use o seguinte comando para atualizar a variável de ambiente
APP_URL:gcloud run services update SERVICE_NAME \ --project="PROJECT_ID" \ --region="REGION" \ --update-env-vars=APP_URL="CLOUD_RUN_SERVICE_URL"Substitua:
- SERVICE_NAME: o nome do serviço do Cloud Run.
- PROJECT_ID: ID do projeto.
- REGION: a Google Cloud região em que você quer
implantar o serviço. Por exemplo,
europe-west1. - CLOUD_RUN_SERVICE_URL: o URL do seu serviço do Cloud Run.
Verifique se o
APP_URLfoi atualizado corretamente descrevendo o serviço:gcloud run services describe SERVICE_NAME \ --project="PROJECT_ID" \ --region="REGION"
Entender o URL do aplicativo do Cloud Run
Quando a implantação é bem-sucedida, o Cloud Run fornece automaticamente um
run.app
URL, que serve como endpoint para consultar o serviço do A2A ativo. O URL é determinístico e previsível se o nome do serviço for suficientemente curto.
- Formato do URL do Cloud Run
https://TAG---SERVICE_NAME-PROJECT_NUMBER.REGION.run.app - URL de exemplo:
https://sample-a2a-agent-1234.europe-west1.run.app
Testar e monitorar a implantação do agente do A2A
Depois de implantar o agente do A2A no Cloud Run, teste a funcionalidade dele. Estabeleça práticas de monitoramento fortes para garantir desempenho e confiabilidade contínuos.
Inspetor do A2A: validar a conformidade do agente
Use a ferramenta a2a-inspector para inspecionar, depurar e validar o agente do Google A2A implantado. Essa ferramenta garante que o agente esteja totalmente em conformidade com a especificação do A2A e funcione corretamente.
Após uma conexão bem-sucedida, o inspetor realiza as seguintes ações:
- Mostra o card do agente:mostra automaticamente o card do agente.
- Valida a conformidade:verifica se o card atende às especificações do A2A.
- Ativa o chat ao vivo:permite enviar e receber mensagens com o agente.
- Mostra dados brutos:mostra mensagens JSON-RPC 2.0 brutas em um console para depuração.
Interação da CLI com um agente do A2A implantado
Use as ferramentas de interface de linha de comando (CLI) do repositório de exemplos do A2A para interagir com o serviço implantado. Essa CLI oferece suporte à autenticação baseada em token de portador.
Se o serviço usa a autenticação baseada no IAM, exporte o token gcloud para uma interação bem-sucedida:
export A2A_CLI_BEARER_TOKEN=$(gcloud auth print-identity-token)
# From CLI directory
uv run . --agent CLOUD_RUN_SERVICE_URL
Substitua CLOUD_RUN_SERVICE_URL pelo URL do serviço do Cloud Run implantado.
Teste local de serviços do A2A implantados
É possível testar o serviço do Cloud Run implantado localmente. Isso é particularmente útil ao implementar a autenticação baseada no IAM.
Testar a autenticação baseada no IAM para agentes do Cloud Run
Os clientes que interagem com o serviço do Cloud Run protegido pelo IAM precisam ter o papel do IAM roles/run.invoker.
Teste localmente o fluxo de autenticação do serviço implantado usando o comando gcloud auth print-identity-token:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" CLOUD_RUN_SERVICE_URL/.well-known/agent.json
Substitua CLOUD_RUN_SERVICE_URL pelo URL do serviço do Cloud Run implantado.