Express link di ambient networking memungkinkan Anda menghubungkan layanan Cloud Run sumber ke layanan Cloud Run tujuan dalam project dan region yang sama tanpa menulis kode autentikasi di aplikasi atau mengonfigurasi mesh layanan.
Saat layanan Cloud Run memanggil layanan Cloud Run lain yang dilindungi Identity and Access Management (IAM), permintaan harus menyertakan token ID OpenID Connect (OIDC) agar tujuan dapat memverifikasi identitas dan izin pemanggil. Tanpa express link, Anda harus menulis kode autentikasi layanan ke layanan di aplikasi Anda untuk mengambil dan melampirkan token dari server metadata, atau mengonfigurasi resource Cloud Service Mesh seperti jaringan Virtual Private Cloud (VPC), layanan backend, dan aturan pemilihan rute. Express link mengalihkan tugas autentikasi dan perutean ini ke container sidecar ambient yang terkelola sepenuhnya, sehingga kode aplikasi Anda tetap portabel dan berfokus pada logika bisnis.
Kasus penggunaan
Anda dapat menggunakan express link untuk skenario berikut:
- Mengalihkan autentikasi antar-layanan dari kode aplikasi: menghubungkan layanan Cloud Run yang memanggil ke layanan Cloud Run tujuan yang dilindungi IAM melalui HTTP biasa. Sidecar ambient secara otomatis mengambil dan memasukkan token ID OIDC layanan sumber dan mengenkripsi permintaan melalui HTTPS.
- Abstraksikan URL tujuan dengan nama host kustom: konfigurasikan nama host kustom di express link menggunakan flag
--matches-hostnameagar aplikasi sumber Anda mengirim permintaan ke alamat logis, sepertihttp://my-backend, bukan melakukan hardcoding pada URL deterministik tujuan. Jika layanan tujuan berubah, Anda dapat membuat ulang link ekspres untuk mengarah ke tujuan baru tanpa mengubah atau men-deploy ulang kode aplikasi sumber. - Menyederhanakan panggilan layanan point-to-point tanpa mesh layanan: dapatkan injeksi kredensial otomatis antara layanan Cloud Run tanpa menyediakan Jaringan VPC, grup endpoint jaringan, layanan backend, atau data Cloud DNS yang diperlukan oleh Cloud Service Mesh.
Tabel berikut membandingkan langkah-langkah untuk menyiapkan komunikasi antar-layanan yang diautentikasi tanpa dan dengan express link:
| Langkah | Tanpa express link | Dengan express link |
|---|---|---|
| 1. Men-deploy layanan tujuan | Deploy layanan Cloud Run tujuan dengan autentikasi IAM yang diperlukan (--no-allow-unauthenticated). |
Sama. |
| 2. Memberikan izin invoker | Berikan peran Cloud Run Invoker (roles/run.invoker) di layanan tujuan ke akun layanan dari layanan sumber. |
Sama. |
| 3. Mengonfigurasi permintaan keluar | Tulis kode di aplikasi sumber Anda untuk mengambil token ID OIDC untuk URL tujuan dan lampirkan ke header Authorization: Bearer melalui HTTPS. |
Kirim permintaan http:// biasa ke URL tujuan atau nama host kustom tanpa kode autentikasi di aplikasi sumber Anda. |
| 4. Men-deploy layanan sumber | Men-deploy layanan Cloud Run sumber. | Deploy layanan Cloud Run sumber dengan mengaktifkan ambient networking, lalu buat express link antara layanan sumber dan tujuan yang di-deploy. |
Arsitektur
Saat Anda mengaktifkan ambient networking di layanan Cloud Run sumber dan membuat link ekspres, Cloud Run akan mengonfigurasi container sidecar Envoy yang terkelola sepenuhnya yang berjalan bersama container aplikasi Anda di setiap instance container.
Saat aplikasi Anda mengirim permintaan HTTP biasa ke URL deterministik layanan tujuan atau ke nama host kustom yang Anda konfigurasi di express link, container sidecar ambient akan otomatis melakukan hal berikut:
- Menghalangi permintaan HTTP keluar yang ditujukan untuk layanan target.
- Mengambil token ID OIDC untuk akun layanan layanan sumber dan memasukkannya ke dalam header
Authorization. - Mengenkripsi dan meneruskan permintaan melalui HTTPS (TLS satu arah) ke layanan Cloud Run tujuan, yang memverifikasi izin IAM pemanggil.
Konektivitas jaringan dan bidang data
Express link mengonfigurasi intersepsi permintaan keluar dan injeksi kredensial di sidecar ambient, tetapi tidak menggantikan jalur jaringan yang mendasarinya antara layanan Anda. Anda tetap harus memastikan bahwa layanan sumber Anda dapat menjangkau jalur ingress layanan tujuan:
- Ingress tujuan ditetapkan ke All: tidak diperlukan jaringan VPC atau konfigurasi egress keluar di layanan sumber Anda.
- Ingress tujuan ditetapkan ke Internal atau Internal dan Cloud Load Balancer: Anda harus merutekan traffic keluar dari layanan sumber melalui jaringan VPC yang diizinkan menggunakan Traffic keluar VPC langsung atau Konektor Akses VPC Serverless dengan Akses Google Pribadi diaktifkan. Untuk mengetahui informasi selengkapnya, lihat Menerima permintaan dari layanan Cloud Run lainnya.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
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.
-
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.
Aktifkan Cloud Run API, Network Services API, dan Traffic Director API, jika belum diaktifkan.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Service Usage Admin (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.- Pastikan Anda memiliki layanan Cloud Run sumber yang sudah ada dan layanan Cloud Run tujuan yang sudah ada dalam project dan region yang sama.
- Pastikan
ambient networking
diaktifkan dengan cakupan
globalpada layanan Cloud Run sumber Anda. Misalnya, jalankangcloud beta run services update SOURCE_SERVICE --ambient-networking --ambient-scope=global --region=REGION, dengan mengingat untuk meningkatkan batas CPU dan memori layanan Anda terlebih dahulu. -
Baca halaman harga Cloud Run untuk mengetahui penggunaan sidecar Ambient Networking. Penagihan untuk fitur standby tidak diberlakukan selama Pratinjau.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk mengonfigurasi express link, minta administrator untuk memberi Anda peran IAM berikut:
-
Konfigurasikan express link:
Developer Cloud Run (
roles/run.developer) dan Pengguna Akun Layanan (roles/iam.serviceAccountUser) di project -
Mengelola resource express link:
Network Services Admin (
roles/networkservices.admin) pada project
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.
Identitas layanan dari layanan Cloud Run sumber juga harus memiliki peran berikut pada project:
- Klien Traffic Director (
roles/trafficdirector.client) - Cloud Trace Agent (
roles/cloudtrace.agent)
Untuk memberikan peran ini ke identitas layanan, gunakan gcloud:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:RUN_CLIENT_SA@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/trafficdirector.client" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:RUN_CLIENT_SA@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/cloudtrace.agent"
Ganti kode berikut:
- PROJECT_ID: Project ID Google Cloud Anda.
- RUN_CLIENT_SA: nama akun layanan yang dilampirkan ke layanan Cloud Run sumber Anda.
Jika identitas layanan Cloud Run tidak memiliki peran ini, layanan Cloud Run tetap di-deploy, tetapi fitur yang bergantung pada ambient networking tidak akan berfungsi. Perilaku ini berbeda dengan Cloud Service Mesh, di mana layanan Cloud Run gagal di-deploy jika tidak memiliki peran yang diperlukan.
Batasan
Batasan berikut berlaku untuk express link:
- Hanya layanan Cloud Run yang didukung sebagai resource sumber dan tujuan. Tugas, worker pool, dan instance Cloud Run tidak didukung.
- Konfigurasi lintas project dan lintas region tidak didukung. Layanan Cloud Run sumber dan layanan Cloud Run tujuan harus berada dalam project dan region yang sama.
- Express link memerlukan
ambient networking
dengan cakupan
globalpada layanan sumber. Jika layanan sumber menggunakan cakupanregional, pembuatan express link akan berhasil, tetapi traffic tidak akan dirutekan. - Anda harus membuat layanan Cloud Run sumber dan tujuan sebelum membuat express link. Pembuatan yang tidak berurutan tidak didukung. Jika Anda menghapus layanan tujuan, express link dapat terus menampilkan dan menyajikan konfigurasi yang sudah tidak berlaku hingga Anda menghapus atau membuat ulang express link.
- Anda tidak dapat memperbarui layanan sumber, layanan tujuan, atau nama host kustom
dari link ekspres yang ada di tempat. Perintah
gcloud beta network-services express-links updatehanya memperbarui deskripsi express link. Untuk mengubah konfigurasi perutean, hapus dan buat ulang express link. - Layanan Cloud Run tujuan harus mengaktifkan
URL
run.appdefault, meskipun Anda menggunakan URL kustom, domain kustom, atau mengonfigurasi nama host kustom dengan flag--matches-hostname. - Permintaan yang dikirim ke URL non-deterministik tujuan tidak akan dicegat dan akan gagal dengan error
403 Forbidden. Jika layanan tujuan tidak memiliki URL deterministik karena gabungan nama layanan dan nomor project melebihi 63 karakter, Anda harus menentukan--matches-hostnameatau pembuatan express link akan gagal dengan errorCloud Run Service name is too long. - Saat Anda melihat status lengkap express link, hanya informasi layanan tujuan yang ditampilkan. Detail tentang sumber revisi Cloud Run dan autentikasi yang dinegosiasikan mungkin tidak ada atau menampilkan data yang sudah tidak berlaku. Hal ini tidak memengaruhi cara express link merutekan atau mengautentikasi traffic.
- Layanan Cloud Run sumber yang dikonfigurasi dengan Identitas Agen dan token terikat mTLS tidak didukung.
- Layanan Cloud Run sumber yang dikonfigurasi untuk merutekan traffic keluar melalui Gateway Agen di Cloud Run dan Secure Web Proxy tidak didukung. Express link memerlukan cakupan jaringan ambient global, sedangkan Agent Gateway memerlukan cakupan regional.
- Jika permintaan keluar dari layanan sumber sudah menyertakan header
Authorization, express link akan meneruskan permintaan dengan header tersebut tanpa perubahan dan tidak memasukkan token. Injeksi token otomatis ke headerX-Serverless-Authorizationtidak didukung. - Traffic yang dihasilkan dari container sandbox Cloud Run tidak didukung.
- Anda tidak dapat menggunakan express link untuk meneruskan traffic ke layanan Cloud Run tujuan yang diamankan oleh Identity-Aware Proxy.
- Setiap express link mendukung satu layanan Cloud Run tujuan, dan Anda dapat membuat hingga 5.000 express link per project.
Mengonfigurasi express link
Untuk menghubungkan layanan Cloud Run, buat express link yang menentukan layanan sumber dan layanan tujuan, lalu berikan peran Cloud Run Invoker pada layanan tujuan.
Menghubungkan ke layanan Cloud Run lain
Untuk menghubungkan layanan Cloud Run sumber ke layanan Cloud Run tujuan, buat express link menggunakan gcloud atau YAML.
gcloud
Gunakan perintah gcloud beta network-services express-links create
untuk membuat express link:
gcloud beta network-services express-links create EXPRESS_LINK_NAME \ --location=global \ --source-services=//run.googleapis.com/projects/PROJECT_ID/locations/REGION/services/SOURCE_SERVICE \ --destination-services=//run.googleapis.com/projects/PROJECT_ID/locations/REGION/services/DESTINATION_SERVICE
Ganti kode berikut:
- EXPRESS_LINK_NAME: nama untuk express link Anda.
- PROJECT_ID: Project ID Google Cloud Anda.
- REGION: region tempat layanan Cloud Run Anda di-deploy.
- SOURCE_SERVICE: nama layanan Cloud Run sumber.
- DESTINATION_SERVICE: nama layanan Cloud Run tujuan.
Setelah perintah selesai, perlu waktu hingga 2 menit agar konfigurasi perutean diterapkan ke instance layanan sumber yang sedang berjalan.
Secara default, express link hanya mengintersepsi permintaan yang dikirim ke
URL deterministik
layanan tujuan, bukan
URL non-deterministiknya. Untuk menggunakan nama host kustom, teruskan nama host tanpa skema di flag --matches-hostname="HOSTNAME", seperti --matches-hostname="DESTINATION_SERVICE", dan kirim permintaan dari aplikasi sumber Anda ke http://HOSTNAME. Menentukan
--matches-hostname akan menggantikan URL deterministik, bukan
menambahkannya.
YAML
Buat file konfigurasi, misalnya,
express-link.yaml:name: "projects/PROJECT_ID/locations/global/expressLinks/EXPRESS_LINK_NAME" source: services: - "//run.googleapis.com/projects/PROJECT_ID/locations/REGION/services/SOURCE_SERVICE" destination: services: - "//run.googleapis.com/projects/PROJECT_ID/locations/REGION/services/DESTINATION_SERVICE"
Ganti kode berikut:
- PROJECT_ID: Project ID Google Cloud Anda.
- REGION: region tempat layanan Anda di-deploy.
- EXPRESS_LINK_NAME: nama untuk express link Anda.
- SOURCE_SERVICE: nama layanan Cloud Run sumber.
- DESTINATION_SERVICE: nama layanan Cloud Run tujuan.
Impor file YAML menggunakan perintah
gcloud beta network-services express-links import:gcloud beta network-services express-links import EXPRESS_LINK_NAME \ --location=global \ --source=YAML_FILENAME.yaml
Ganti kode berikut:
- EXPRESS_LINK_NAME: nama untuk express link Anda.
- YAML_FILENAME: nama file YAML Anda.
Memberikan izin invoker pada layanan tujuan
Agar layanan sumber dapat memanggil layanan tujuan yang dilindungi IAM, berikan peran Cloud Run Invoker (roles/run.invoker) ke akun layanan dari layanan sumber di layanan Cloud Run tujuan. Hal ini diperlukan agar autentikasi berfungsi di bidang data.
gcloud run services add-iam-policy-binding DESTINATION_SERVICE \ --member="serviceAccount:SOURCE_SA@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/run.invoker" \ --region=REGION
Ganti kode berikut:
- DESTINATION_SERVICE: nama layanan Cloud Run tujuan.
- SOURCE_SA: nama akun layanan yang dilampirkan ke layanan Cloud Run sumber Anda.
- PROJECT_ID: Project ID Google Cloud Anda.
- REGION: region tempat layanan tujuan Anda di-deploy.
Memverifikasi status express link
Untuk melihat konfigurasi dasar express link Anda, gunakan
perintah gcloud beta network-services express-links describe:
gcloud beta network-services express-links describe EXPRESS_LINK_NAME \ --location=global
Untuk melihat status lengkap express link, termasuk connectionStatus
(jenis rute aktif, nama host yang cocok, dan URI revisi sumber) dan
cloudRunSourceInfo (metode autentikasi dan jaringan VPC yang dikonfigurasi), sertakan ?view=EXPRESS_LINK_VIEW_FULL# dalam nama resource:
gcloud beta network-services express-links describe 'EXPRESS_LINK_NAME?view=EXPRESS_LINK_VIEW_FULL#' \ --location=global
Ganti EXPRESS_LINK_NAME dengan nama express link Anda. Pertahankan tanda kutip tunggal dan karakter # di akhir saat membuat kueri tampilan lengkap.
Menghapus atau membuat ulang link ekspres
Untuk menghapus express link dan menghentikan injeksi kredensial otomatis dan intersepsi traffic dari layanan sumber, gunakan perintah gcloud beta network-services express-links delete:
gcloud beta network-services express-links delete EXPRESS_LINK_NAME \ --location=global
Ganti EXPRESS_LINK_NAME dengan nama express link Anda.
Untuk mengarahkan express link yang ada ke layanan tujuan yang berbeda atau mengubah
setelan --matches-hostname, hapus express link dengan perintah
sebelumnya, lalu buat express link baru dengan
konfigurasi yang diperbarui.
Langkah berikutnya
- Pelajari cara mengonfigurasi ambient networking untuk layanan Cloud Run.
- Pelajari tentang Agent Gateway di Cloud Run.
- Pelajari autentikasi service-to-service di Cloud Run.
- Pelajari cara membatasi traffic masuk endpoint jaringan untuk layanan Cloud Run.