Siapkan dan konfigurasi agen Agent2Agent (A2A) untuk deployment di Cloud Run.
Panduan ini mencakup langkah-langkah penting untuk men-deploy agen A2A:
- Mengonfigurasi project Anda
- Menetapkan peran IAM
- Mengonfigurasi lingkungan cloud Anda
- Men-deploy agen Anda
- Men-debug kegagalan deployment
- Menguji dan memantau
Tinjau spesifikasi A2A dan agen contoh
Sebelum Anda mulai mengembangkan dan men-deploy agen A2A, pahami konsep dan referensi berikut:
- Tinjau spesifikasi A2A resmi dan konsep komunikasi agen untuk komunikasi agen.
- Jelajahi agen contoh yang ada.
- Tinjau contoh ADK Cloud Run.
Sebelum memulai
- 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.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
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.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init - Untuk membuat akun layanan, jalankan perintah berikut:
-
A2A_SERVICE_ACCOUNT_NAME: nama akun layanan
-
DESCRIPTION: deskripsi opsional untuk akun layanan
-
DISPLAY_NAME: nama akun layanan untuk ditampilkan di konsol Google Cloud
- PROJECT_ID: project ID Anda
- A2A_SERVICE_ACCOUNT_NAME: nama akun layanan Anda
- ROLE: peran yang Anda tambahkan ke akun layanan
-
Cloud Run Source Developer (
roles/run.sourceDeveloper) di project -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin) pada project -
Secret Manager Admin (
roles/secretmanager.admin) di project -
Pengguna Akun Layanan (
roles/iam.serviceAccountUser) di identitas layanan -
Secret Manager Secret Accessor (
roles/secretmanager.secretAccessor) di akun layanan -
Vertex AI User (
roles/aiplatform.user) di akun layanan -
Jika Anda men-deploy dengan AlloyDB untuk PostgreSQL, berikan peran berikut:
-
Klien AlloyDB untuk PostgreSQL (
roles/alloydb.client) di akun layanan -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin) pada akun layanan
-
Klien AlloyDB untuk PostgreSQL (
-
Di konsol Google Cloud , buka halaman IAM.
Buka IAM - Pilih project.
- Klik Grant access.
-
Di kolom New principals, masukkan ID pengguna Anda. Ini biasanya adalah alamat email yang digunakan untuk men-deploy layanan Cloud Run.
- Di daftar Select a role, pilih peran.
- Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
- Klik Simpan.
- PROJECT_NUMBER dengan nomor project Google Cloud Anda.
- PROJECT_ID dengan project ID Google Cloud Anda.
- PRINCIPAL dengan akun yang Anda tambahkan binding-nya. Biasanya berupa alamat email yang digunakan untuk men-deploy layanan Cloud Run.
- ROLE dengan peran yang Anda tambahkan ke akun deployer.
Ambil contoh kode dengan meng-clone repositori aplikasi contoh ke komputer lokal Anda:
git clone https://github.com/a2aproject/a2a-samplesUbah ke direktori yang berisi kode contoh:
cd a2a-samples/samples/python/agents/adk_cloud_run- Aplikasi Python di Cloud Run: Cloud Run mencari file
main.pyuntuk membuat dan men-deploy layanan Python. Untuk mengetahui informasi selengkapnya, lihat Panduan memulai men-deploy layanan Python di Cloud Run. - Aplikasi Node.js di Cloud Run: Cloud Run mencari file
index.jsuntuk membangun dan men-deploy layanan Node.js. Lihat Panduan memulai men-deploy layanan Node.js di Cloud Run. - Konfigurasi
TaskStoredalam memori menyimpan semua datanya secara eksklusif dalam instance penampung Cloud Run. Artinya, semua data tugas akan hilang saat instance penampung dimatikan, diskalakan, atau dimulai ulang. - AlloyDB untuk PostgreSQL menyediakan persistensi data, sehingga memungkinkan agen diskalakan secara horizontal, dan memastikan tugas tetap berjalan setelah dimulai ulang, peristiwa penskalaan, dan deployment.
- REGION: Google Cloud region tempat Anda ingin men-deploy layanan—misalnya
europe-west1. - PROJECT_ID: Project ID Anda.
- PROJECT_NUMBER: nomor project Anda.
- A2A_SERVICE_ACCOUNT_NAME: nama akun layanan A2A Anda.
- REGION: Google Cloud region tempat Anda ingin men-deploy layanan—misalnya
europe-west1. - PROJECT_ID: Project ID Anda.
- PROJECT_NUMBER: nomor project Anda.
- CLUSTER_NAME: nama cluster AlloyDB untuk PostgreSQL Anda.
- A2A_SERVICE_ACCOUNT_NAME: nama akun layanan A2A Anda.
- Log mendetail: Untuk log deployment mendetail, tetapkan tanda
--verbosity=infodalam perintahgcloud run deployAnda. URL tidak cocok: Jika
run.appURL yang ditampilkan oleh perintah deployment berbeda dengan URL deterministik yang diharapkan, perbaruiAPP_URLvariabel lingkungan untuk layanan Cloud Run Anda:Gunakan perintah berikut untuk mengupdate variabel lingkungan
APP_URL:gcloud run services update SERVICE_NAME \ --project="PROJECT_ID" \ --region="REGION" \ --update-env-vars=APP_URL="CLOUD_RUN_SERVICE_URL"Ganti kode berikut:
- SERVICE_NAME: nama layanan Cloud Run Anda.
- PROJECT_ID: Project ID Anda.
- REGION: Google Cloud region tempat Anda ingin men-deploy layanan. Contohnya,
europe-west1. - CLOUD_RUN_SERVICE_URL: URL layanan Cloud Run Anda.
Pastikan
APP_URLdiperbarui dengan benar dengan menjelaskan layanan:gcloud run services describe SERVICE_NAME \ --project="PROJECT_ID" \ --region="REGION"
- Format URL Cloud Run:
https://TAG---SERVICE_NAME-PROJECT_NUMBER.REGION.run.app - Contoh URL:
https://sample-a2a-agent-1234.europe-west1.run.app - Menampilkan kartu agen: Menampilkan kartu agen Anda secara otomatis.
- Memvalidasi kepatuhan: Memeriksa apakah kartu memenuhi spesifikasi A2A.
- Mengaktifkan live chat: Memungkinkan Anda mengirim dan menerima pesan dengan agen.
- Menampilkan data mentah: Menampilkan pesan JSON-RPC 2.0 mentah di konsol untuk proses debug.
gcloud iam service-accounts create A2A_SERVICE_ACCOUNT_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Ganti nilai berikut:
Memberikan peran akun layanan
Untuk memberikan peran IAM yang diperlukan ke akun Anda di project Anda:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:A2A_SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="ROLE"
Ganti:
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan guna men-deploy agen A2A, minta administrator untuk memberi Anda peran IAM berikut:
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Memberikan peran
Konsol
gcloud
Untuk memberikan peran IAM yang diperlukan ke akun Anda di project Anda:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
Ganti:
Mempersiapkan deployment Cloud Run
Bagian ini menjelaskan konfigurasi yang diperlukan untuk menyiapkan agen A2A Anda agar dapat di-deploy ke Cloud Run untuk contoh kode Python.
Menyiapkan agen A2A
Mengonfigurasi secret untuk layanan Cloud Run
Berikan semua kredensial sensitif, seperti kunci API dan sandi database, ke server A2A Anda menggunakan mekanisme yang aman. Cloud Run mendukung penyediaan secret sebagai variabel lingkungan atau volume yang dipasang secara dinamis. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi secret di Cloud Run.
Agen memerlukan akses ke layanan eksternal untuk menyelesaikan tugas mereka. Rahasia adalah mekanisme yang aman untuk memberikan akses tersebut. Saat men-deploy dengan AlloyDB untuk PostgreSQL, Anda memerlukan pengguna dan sandi. Buat dan kelola secret sandi dan pengguna database dalam Secret Manager dengan menjalankan perintah berikut di 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"
Untuk mengetahui informasi selengkapnya, lihat Membuat secret.
Dockerfile untuk containerisasi
Cloud Run dapat men-deploy layanan baik dari image container yang sudah dihosting maupun langsung dari kode sumber Anda. Saat men-deploy dari kode sumber, Cloud Run akan otomatis mem-build image container jika ada Dockerfile di direktori root project Anda.
Dockerfile menentukan detail image container. Berikut adalah Dockerfile dari agen A2A contoh yang Anda clone sebelumnya:
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"]
Men-deploy dari kode sumber tanpa Dockerfile
Untuk repositori kode sumber tanpa Dockerfile, Cloud Run menawarkan dukungan bawaan untuk bahasa pemrograman populer tertentu, sehingga menyederhanakan proses pembuatan container.
Men-deploy agen A2A ke Cloud Run
Deploy aplikasi A2A Anda dengan konfigurasi TaskStore dalam memori atau dengan
AlloyDB untuk PostgreSQL.
Konfigurasi TaskStore dalam memori cocok untuk mengembangkan agen A2A di lingkungan lokal, dan AlloyDB untuk PostgreSQL cocok untuk menskalakan agen A2A dalam produksi.
Perintah berikut menunjukkan cara menggunakan autentikasi berbasis IAM
untuk layanan Cloud Run Anda. Penggunaan flag --no-allow-unauthenticated
saat deployment adalah pendekatan yang direkomendasikan untuk mengonfigurasi autentikasi
bagi klien Google Cloud internal, seperti Gemini Enterprise.
Jika server A2A Anda dirancang untuk akses publik, dan perlu menangani
autentikasi tingkat agen, Anda dapat menentukan tanda --allow-unauthenticated
selama deployment. Lihat
Autentikasi akses publik Cloud Run untuk mengetahui detail selengkapnya. Untuk mengizinkan akses publik ke layanan Cloud Run Anda,
Anda juga harus memberikan informasi autentikasi penting di kartu
agen A2A menggunakan parameter securitySchemes dan security. Untuk mengetahui informasi selengkapnya, lihat Spesifikasi A2A: Detail Objek SecurityScheme.
Men-deploy dengan konfigurasi TaskStore dalam memori
Untuk men-deploy
agen A2A dengan konfigurasi TaskStore dalam memori, jalankan perintah berikut di direktori yang berisi kode sumber agen A2A Anda:
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"
Ganti kode berikut:
Men-deploy dengan AlloyDB untuk PostgreSQL
Untuk mempertahankan tugas A2A, gunakan AlloyDB untuk PostgreSQL. Untuk men-deploy agen A2A dengan AlloyDB for PostgreSQL untuk penyimpanan tugas persisten, gunakan perintah berikut:
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"
Ganti kode berikut:
Men-debug kegagalan deployment
Jika Anda mengalami error atau kegagalan deployment Cloud Run, pertimbangkan hal berikut:
Memahami URL aplikasi Cloud Run
Setelah deployment berhasil, Cloud Run akan otomatis menyediakan URL run.app, yang berfungsi sebagai endpoint untuk mengkueri layanan A2A aktif Anda. URL bersifat deterministik dan dapat diprediksi jika nama layanan Anda cukup pendek.
Menguji dan memantau deployment agen A2A
Setelah berhasil men-deploy agen A2A ke Cloud Run, uji fungsinya secara menyeluruh. Tetapkan praktik pemantauan yang efektif untuk memastikan performa dan keandalan yang berkelanjutan.
Pemeriksa A2A: Memvalidasi kepatuhan agen
Gunakan alat a2a-inspector untuk memeriksa, men-debug, dan memvalidasi agen Google A2A yang di-deploy. Alat ini memastikan bahwa agen Anda sepenuhnya mematuhi spesifikasi A2A dan berfungsi dengan benar.
Setelah koneksi berhasil, pemeriksa akan melakukan tindakan berikut:
Interaksi CLI dengan agen A2A yang di-deploy
Gunakan alat command-line interface (CLI) dari repositori contoh A2A untuk berinteraksi dengan layanan yang di-deploy. CLI ini mendukung autentikasi berbasis token pembawa.
Jika layanan Anda menggunakan autentikasi berbasis IAM, ekspor token gcloud agar interaksi berhasil:
export A2A_CLI_BEARER_TOKEN=$(gcloud auth print-identity-token)
# From CLI directory
uv run . --agent CLOUD_RUN_SERVICE_URL
Ganti CLOUD_RUN_SERVICE_URL dengan URL layanan Cloud Run yang di-deploy.
Pengujian lokal layanan A2A yang di-deploy
Anda dapat menguji layanan Cloud Run yang di-deploy secara lokal. Hal ini sangat berguna saat menerapkan autentikasi berbasis IAM.
Menguji autentikasi berbasis IAM untuk agen Cloud Run
Klien yang berinteraksi dengan layanan Cloud Run yang diamankan dengan Identity and Access Management (IAM) harus memiliki peran IAM roles/run.invoker.
Uji alur autentikasi layanan yang di-deploy secara lokal menggunakan perintah gcloud auth print-identity-token:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" CLOUD_RUN_SERVICE_URL/.well-known/agent.json
Ganti CLOUD_RUN_SERVICE_URL dengan URL layanan Cloud Run yang di-deploy.