Secara default, workload Cloud Run terhubung ke endpoint eksternal di internet menggunakan kumpulan alamat IP dinamis regional yang digunakan bersama di semua workload serverless. Karena workload lain menggunakan pool ini, Anda tidak boleh mengandalkannya saat memerlukan alamat IP asal yang dapat diprediksi atau reputasi IP yang terisolasi.
Konfigurasikan workload Cloud Run Anda untuk merutekan permintaan keluar menggunakan alamat IP statis khusus dalam situasi berikut:
- Anda terhubung ke database atau API eksternal yang menggunakan daftar yang diizinkan atau firewall alamat IP.
- Anda terhubung ke endpoint eksternal yang sensitif terhadap reputasi, seperti gateway pembayaran, database yang dihosting, atau API partner yang dilindungi oleh firewall aplikasi web (WAF) pihak ketiga. Traffic yang bising dari tenant lain di kumpulan IP bersama default dapat menurunkan reputasi IP dan menyebabkan WAF eksternal memblokir atau membatasi permintaan Anda.
- Anda menjalankan workload pemindaian jaringan yang diizinkan, enumerasi port, pelacakan sidik jari host, pemeriksaan kerentanan, web scraping, atau pengujian beban.
Untuk mengirim permintaan keluar dari alamat IP statis khusus, konfigurasikan layanan Cloud Run Anda untuk menggunakan egress VPC Langsung. Anda juga memiliki opsi untuk membuat konektor.
Ringkasan tugas
Untuk merutekan permintaan menggunakan alamat IP statis, konfigurasikan
traffic keluar VPC layanan untuk mengirim semua traffic keluar
(--vpc-egress=all-traffic) melalui jaringan VPC.
Lampirkan gateway Cloud NAT ke jaringan tersebut dengan alamat IP statis yang dicadangkan.
Dalam tutorial ini, Anda akan mengonfigurasi Cloud NAT dalam mode manual dan menetapkan satu alamat IP statis ke Cloud NAT. Jika workload Anda diskalakan ke banyak instance container atau membuka banyak koneksi serentak, seperti selama pemindaian jaringan yang diizinkan, tetapkan beberapa alamat IP statis ke Cloud NAT. Anda juga dapat meningkatkan port minimum per instance container atau mengaktifkan alokasi port dinamis untuk mencegah kehabisan port. Pelajari lebih lanjut cara gateway Cloud NAT menggunakan alamat IP dan port.
Mengarahkan traffic Anda melalui Cloud NAT tidak menambahkan hop tambahan pada stack jaringan Anda karena gateway Cloud NAT dan Cloud Router hanya menyediakan bidang kontrol, dan paket tidak melewati gateway NAT atau Cloud Router.
Mengonfigurasi penafsiran alamat jaringan (NAT)
Jika Anda menggunakan traffic keluar VPC Langsung atau konektor Akses VPC Serverless, permintaan dari layanan Cloud Run Anda akan masuk ke jaringan VPC Anda. Jika Anda ingin mengarahkan permintaan keluar ke endpoint eksternal menggunakan IP statis, konfigurasikan gateway Cloud NAT.
gcloud
Buat Cloud Router baru untuk memprogram gateway Cloud NAT:
gcloud compute routers create ROUTER_NAME \ --network=NETWORK_NAME \ --region=REGION
Ganti kode berikut:
ROUTER_NAME: nama untuk resource Cloud Router yang ingin Anda buat.NETWORK_NAME: nama jaringan VPC yang Anda temukan sebelumnya.REGION: region tempat Anda ingin membuat gateway Cloud NAT.
Sediakan alamat IP statis. Resource alamat IP yang dicadangkan mempertahankan alamat IP dasar saat resource yang terkait dengannya dihapus dan dibuat ulang.
gcloud compute addresses create ORIGIN_IP_NAME --region=REGION
Ganti kode berikut:
ORIGIN_IP_NAME: nama yang ingin Anda tetapkan ke resource alamat IP.REGION: region yang akan menjalankan router Cloud NAT. Gunakan region yang sama dengan layanan Cloud Run Anda untuk meminimalkan latensi dan biaya jaringan.
Buat konfigurasi gateway Cloud NAT di router ini untuk mengarahkan traffic yang berasal dari jaringan VPC menggunakan alamat IP statis yang Anda buat:
gcloud compute routers nats create NAT_NAME \ --router=ROUTER_NAME \ --region=REGION \ --nat-custom-subnet-ip-ranges=SUBNET_NAME \ --nat-external-ip-pool=ORIGIN_IP_NAME
Ganti kode berikut:
NAT_NAME: nama untuk resource gateway Cloud NAT yang ingin Anda buat.ROUTER_NAME: nama Cloud Router Anda.REGION: region tempat Anda ingin membuat gateway Cloud NAT.SUBNET_NAME: nama subnet Anda.ORIGIN_IP_NAME: nama resource alamat IP yang dicadangkan yang Anda buat di langkah sebelumnya.
Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Buat Cloud Router baru untuk memprogram gateway Cloud NAT:
Ganti
cr-static-ip-routerdengan nama subnet Anda.Sediakan alamat IP statis. Resource alamat IP yang dicadangkan mempertahankan alamat IP dasar saat resource yang terkait dengannya dihapus dan dibuat ulang:
Ganti
cr-static-ip-addrdengan nama subnet Anda.Buat konfigurasi gateway Cloud NAT di router ini untuk mengarahkan traffic yang berasal dari jaringan VPC menggunakan alamat IP statis yang Anda buat:
Ganti
cr-static-natdengan nama gateway Cloud NAT Anda.
Mengarahkan traffic Cloud Run melalui jaringan VPC
Setelah Cloud NAT dikonfigurasi, deploy atau update layanan Cloud Run Anda dengan traffic keluar VPC Langsungatau konektor Akses VPC Serverless, dan tetapkan traffic keluar VPC untuk merutekan semua traffic melalui jaringan VPC:
gcloud
Egress VPC Langsung
Untuk men-deploy atau mengupdate layanan Cloud Run agar menggunakan egress VPC Langsung dan merutekan semua traffic egress melaluinya, jalankan perintah berikut:
gcloud run deploy SERVICE_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --region=REGION \ --vpc-egress=all-traffic
Ganti kode berikut:
- SERVICE_NAME: nama layanan Cloud Run yang ingin Anda deploy.
IMAGE_URL: referensi ke image container, misalnya,us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- NETWORK: nama jaringan VPC Anda.
- SUBNET: nama subnet Anda.
- REGION: region untuk layanan Anda.
Konektor Akses VPC Serverless
Untuk men-deploy atau mengupdate layanan Cloud Run agar menggunakan konektor Akses VPC Serverless dan merutekan semua traffic keluar melaluinya, jalankan perintah berikut:
gcloud run deploy SERVICE_NAME \ --image=IMAGE_URL \ --vpc-connector=CONNECTOR_NAME \ --region=REGION \ --vpc-egress=all-traffic
Ganti kode berikut:
- SERVICE_NAME: nama layanan Cloud Run yang ingin Anda deploy.
IMAGE_URL: referensi ke image container, misalnya,us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- CONNECTOR_NAME: nama konektor Akses VPC Serverless Anda.
- REGION: region untuk layanan Anda.
YAML
Egress VPC Langsung
Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang ada, download konfigurasi YAML-nya:
gcloud run services describe SERVICE --format export > service.yaml
Perbarui sesuai kebutuhan.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]' run.googleapis.com/vpc-access-egress: all-traffic spec: containers: - image: IMAGE_URL
Ganti kode berikut:
- SERVICE: nama layanan Cloud Run.
- NETWORK: nama jaringan VPC Anda.
- SUBNET: nama subnet Anda.
- IMAGE_URL: URL image container layanan Anda.
Buat atau update layanan menggunakan perintah berikut:
gcloud run services replace service.yaml
Perintah
gcloud run services replacesecara default menggunakan fileservice.yamljika ada.
Konektor Akses VPC Serverless
Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang ada, download konfigurasi YAML-nya:
gcloud run services describe SERVICE --format export > service.yaml
Perbarui sesuai kebutuhan.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/vpc-access-connector: CONNECTOR_NAME spec: containers: - image: IMAGE_URL
Ganti kode berikut:
- SERVICE: nama layanan Cloud Run.
- CONNECTOR_NAME: nama jaringan Akses VPC Serverless Anda.
IMAGE_URL: referensi ke image container, misalnya,us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
Buat atau update layanan menggunakan perintah berikut:
gcloud run services replace service.yaml
Perintah
gcloud run services replacesecara default menggunakan fileservice.yamljika ada.
Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Egress VPC Langsung
Layanan Cloud Run ini menggunakan Direct VPC egress dan merutekan semua traffic egress melaluinya:
Konektor Akses VPC Serverless
Layanan Cloud Run ini menggunakan konektor VPC dan juga merutekan semua traffic keluar melaluinya:
Ganti us-docker.pkg.dev/cloudrun/container/hello dengan referensi ke image container Anda.
Memverifikasi alamat IP eksternal statis
Setelah menyelesaikan langkah-langkah sebelumnya, Anda harus menyiapkan Cloud NAT di jaringan VPC Anda dengan alamat IP statis yang telah ditetapkan, dan telah merutekan semua traffic keluar layanan Cloud Run ke jaringan VPC Anda. Permintaan dari layanan Cloud Run berpindah melalui jaringan VPC Anda dan menjangkau endpoint eksternal menggunakan menggunakan alamat IP statis.
Untuk memverifikasi perilaku ini dan mengonfirmasi alamat IP asal yang digunakan layanan, Anda dapat membuat permintaan ke API atau situs seperti curlmyip.org yang menampilkan alamat IP asal.
Menghapus alamat IP eksternal statis
Jika Anda tidak lagi memerlukan alamat IP eksternal statis, lihat Merilis alamat IP eksternal statis.