Prepare e configure agentes do Agent2Agent (A2A) para implantação no Cloud Run.
Este guia aborda as etapas essenciais para implantar agentes A2A:
- Configurar seu projeto
- Estabelecer papéis do IAM
- Configurar o ambiente de nuvem
- Implantar o agente
- Depurar falhas de implantação
- Testar e monitorar
Revise a especificação A2A e os agentes de amostra
Antes de começar a desenvolver e implantar seu agente A2A, familiarize-se com os seguintes conceitos e recursos:
- Revise a especificação oficial do A2A e os conceitos de comunicação do agente.
- Conheça os agentes de exemplo.
- Revise o exemplo do ADK Cloud Run.
Antes de começar
- 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.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, 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.
-
Install the 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 gcloud CLI, execute o seguinte comando:
gcloud init - Para criar uma conta de serviço, execute o comando a seguir:
-
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 console Google Cloud .
- PROJECT_ID: ID do projeto;
- A2A_SERVICE_ACCOUNT_NAME: o nome da sua conta de serviço
- ROLE: a função que você está adicionando à conta de serviço
-
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 secrets 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 fazendo a implantação 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 (
-
No console do Google Cloud , acesse a página IAM.
Acessar o 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.
- PROJECT_NUMBER pelo número do projeto do Google Cloud .
- PROJECT_ID com seu Google Cloud ID do projeto.
- PRINCIPAL com a conta a que você está adicionando a vinculação. Normalmente, esse é o endereço de e-mail usado para implantar o serviço do Cloud Run.
- ROLE com o papel que você está adicionando à conta do implantador.
Clone o repositório do app de amostra na máquina local para recuperar o exemplo de código:
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- 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 para 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. - 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 de tarefas 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.
- REGION: a região Google Cloud em que você quer
implantar o serviço, por exemplo,
europe-west1. - PROJECT_ID: o ID do projeto.
- PROJECT_NUMBER: o número do projeto.
- A2A_SERVICE_ACCOUNT_NAME: o nome da sua conta de serviço A2A.
- REGION: a região Google Cloud em que você quer
implantar o serviço, por exemplo,
europe-west1. - PROJECT_ID: o 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 A2A.
- Registros detalhados:para registros detalhados de implantação, defina a flag
--verbosity=infono comandogcloud run deploy. Incompatibilidade de URL:se o URL
run.appretornado pelo comando de implantação for diferente do URL determinístico esperado, atualize a variável de ambienteAPP_URLpara seu serviço do Cloud Run:Use o comando a seguir 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 seu serviço do Cloud Run;
- PROJECT_ID: o ID do projeto.
- REGION: a região Google Cloud 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"
- Formato do URL do Cloud Run:
https://TAG---SERVICE_NAME-PROJECT_NUMBER.REGION.run.app - Exemplo de URL:
https://sample-a2a-agent-1234.europe-west1.run.app - Mostra o card do agente:mostra automaticamente o card do seu 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:exibe mensagens JSON-RPC 2.0 brutas em um console para depuração.
gcloud iam service-accounts create A2A_SERVICE_ACCOUNT_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Substitua os seguintes valores:
Conceder papéis à conta de serviço
Para conceder os papéis do IAM necessários à sua conta no projeto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:A2A_SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="ROLE"
Substitua:
Funções exigidas
Para receber as permissões necessárias para implantar agentes A2A, peça ao administrador para conceder a você os seguintes papéis do IAM:
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 papéis personalizados ou outros papéis predefinidos.
Conceder os papéis
Console
gcloud
Para conceder os papéis do IAM necessários à sua conta no projeto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
Substitua:
Preparar para a implantação do Cloud Run
Nesta seção, descrevemos as configurações necessárias para preparar seu agente A2A para implantação no Cloud Run em uma exemplo de código Python.
Preparar o agente A2A
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 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 fazer a implantação 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 seu código-fonte. Ao fazer a implantação do código-fonte, o Cloud Run cria automaticamente uma imagem de contêiner se um Dockerfile estiver presente no diretório raiz do projeto.
O Dockerfile determina os detalhes da imagem do contêiner. Este é o Dockerfile do agente A2A de exemplo que você clonou antes:
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.
Implantar o agente A2A no Cloud Run
Implante seu aplicativo A2A com uma configuração TaskStore na memória ou com o AlloyDB para PostgreSQL.
Uma configuração TaskStore na memória é adequada para desenvolver agentes A2A no ambiente local, e o AlloyDB para PostgreSQL é adequado para escalonar o agente A2A em produção.
Os comandos a seguir mostram como usar a autenticação baseada no IAM
para seu serviço do Cloud Run. Usar a flag --no-allow-unauthenticated
na implantação é a abordagem recomendada para configurar a autenticação
de clientes Google Cloud internos, como o Gemini Enterprise.
Se o servidor A2A for projetado para acesso público e precisar processar
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 seu serviço do Cloud Run,
você também precisa fornecer informações de autenticação cruciais no card
do agente A2A usando os parâmetros securitySchemes e security. Para mais
informações, consulte
Especificação A2A: detalhes do objeto SecurityScheme.
Implantar com uma configuração TaskStore na memória
Para implantar
seu agente 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 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:
Implantar com o AlloyDB para PostgreSQL
Para manter as tarefas A2A, use o AlloyDB para PostgreSQL. Para implantar seu agente A2A com o AlloyDB para PostgreSQL para armazenamento de tarefas persistentes, 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:
Depurar falhas de implantação
Se você encontrar erros ou falhas na implantação do Cloud Run, considere o seguinte:
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 seu serviço A2A ativo. O URL é determinístico e previsível se o nome do serviço for suficientemente curto.
Testar e monitorar a implantação do agente A2A
Depois de implantar o agente A2A no Cloud Run, teste a funcionalidade dele. Estabeleça práticas de monitoramento eficientes para garantir desempenho e confiabilidade contínuos.
Inspetor de 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 seu agente esteja em total conformidade com a especificação A2A e funcione corretamente.
Após uma conexão bem-sucedida, o inspetor realiza as seguintes ações:
Interação da CLI com um agente A2A implantado
Use as ferramentas de interface de linha de comando (CLI) do repositório de amostras A2A para interagir com o serviço implantado. Essa CLI é compatível com a 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 A2A implantados
É possível testar o serviço do Cloud Run implantado localmente. Isso é especialmente ú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 seu serviço do Cloud Run protegido pelo Identity and Access Management (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.