Traffic keluar VPC Langsung menyediakan solusi jaringan berperforma tinggi untuk layanan App Engine Anda guna mengirim traffic ke jaringan Virtual Private Cloud (VPC). Traffic keluar VPC Langsung memungkinkan workload mengakses resource jaringan VPC dengan lancar dan menghilangkan kebutuhan untuk mengonfigurasi konektor Akses VPC Serverless.
Manfaat utama
- Pengelolaan yang disederhanakan: Menghilangkan overhead operasional dalam mengelola instance konektor, jenis mesin, dan setelan penskalaan. App Engine
menangani konfigurasi langsung dalam file
app.yamllayanan Anda. - Efisiensi biaya: Menggunakan egress VPC Langsung tidak dikenai biaya tambahan, dan Anda tidak perlu membayar biaya bulanan tetap untuk VM konektor.
- Peningkatan performa dan keandalan: Dengan menghilangkan kebutuhan untuk menggunakan konektor, traffic keluar VPC Langsung menawarkan koneksi yang lebih cepat dan andal ke resource jaringan VPC Anda. Layanan ini diskalakan secepat layanan App Engine Anda dan menghindari koneksi terputus yang mungkin terjadi dengan konektor selama pemeliharaan.
Keamanan terperinci: Anda dapat menerapkan tag jaringan langsung ke versi layanan App Engine, sehingga memungkinkan aturan firewall dan kebijakan jaringan yang akurat dan spesifik per layanan.
Mendukung Log Aliran VPC: Anda dapat mengaktifkan Log Aliran VPC di subnet Anda untuk mencatat traffic keluar dari layanan App Engine Anda.
Batasan
Konsumsi alamat IP: Penggunaan alamat IP layanan Anda diskalakan secara langsung dengan jumlah instance yang berjalan, dan kemampuan penskalaan Anda dibatasi oleh jumlah alamat IP yang tersedia di subnet yang Anda pilih.
Peristiwa pemeliharaan: Layanan Anda mungkin mengalami gangguan koneksi singkat selama peristiwa pemeliharaan infrastruktur jaringan. Sebaiknya gunakan library klien untuk menangani reset koneksi yang terjadi sesekali.
Cold start: Waktu cold start awal bergantung pada region dan kasus penggunaan tertentu. Dalam kasus yang jarang terjadi, cold start mungkin berlangsung hingga satu menit.
Direct VPC ingress: App Engine tidak mendukung Direct VPC ingress.
Jumlah instance: Anda hanya dapat mengonfigurasi hingga 100 instance per versi App Engine untuk menggunakan traffic keluar VPC Langsung.
Log Aliran VPC: Tidak menampilkan versi layanan App Engine Anda dalam data log. Nama layanan ditampilkan di kolom
AppEngineServiceDetails.
Alokasi alamat IP
Untuk menempatkan layanan App Engine di jaringan VPC, tentukan jaringan VPC atau subnet, atau keduanya. Jika Anda hanya menentukan jaringan, subnet akan menggunakan nama yang sama dengan jaringan. App Engine mengalokasikan alamat IP dari subnet Anda.
Alamat IP bersifat sementara, jadi jangan buat kebijakan berdasarkan IP pribadi. Jika perlu membuat kebijakan berdasarkan IP, seperti pada aturan firewall, Anda harus menggunakan rentang alamat IP seluruh subnet.
Untuk mengubah jaringan atau subnet yang digunakan layanan Anda, deploy versi baru yang menggunakan nilai jaringan dan subnet baru.
Peningkatan dan penurunan skala
Untuk peningkatan skala yang lebih cepat selama lonjakan traffic, App Engine mencadangkan alamat IP dalam blok berukuran 16 (subnet mask 28) sekaligus.
Untuk memastikan bahwa Anda memiliki alamat IPv4 yang cukup untuk digunakan di seluruh App Engine, rentang alamat IPv4 subnet Anda harus /26 atau lebih besar.
Untuk efisiensi alokasi IP dan kemudahan pengelolaan, tempatkan beberapa resource di subnet yang sama. Jika ruang alamat IPv4 Anda terbatas, lihat Rentang IPv4 yang didukung untuk opsi selengkapnya.
Untuk menghapus subnet, Anda harus menghapus atau men-deploy ulang layanan App Engine terlebih dahulu untuk berhenti menggunakan subnet, lalu tunggu 1-2 jam.
Penggunaan alamat IP untuk layanan
Pada status stabil, App Engine menggunakan alamat IP 2 kali (2X) lebih banyak daripada jumlah instance. Saat versi memperkecil skala, App Engine mempertahankan alamat IP-nya hingga 20 menit. Secara total, cadangkan setidaknya 2X jumlah alamat IP, ditambah buffer untuk memperhitungkan update versi.
Misalnya, jika Anda mengupgrade versi sehingga version 1 diskalakan dari 100 instance menjadi nol, sementara version 2 diskalakan dari nol menjadi 100, App Engine akan mempertahankan alamat IP version 1 hingga 20 menit setelah perkecil skala. Selama periode retensi 20 menit, Anda harus
menyediakan setidaknya 400 alamat IP ((100 + 100) * 2).
Rentang IPv4 yang didukung
App Engine mendukung rentang IPv4 berikut untuk subnet Anda:
Sebelum memulai
Pastikan Anda sudah memiliki jaringan VPC dan subnet di project Anda. Jika Anda belum memiliki VPC, ikuti petunjuk untuk membuatnya di Membuat jaringan VPC.
Aktifkan Compute Engine API dan Cloud Build API:
Untuk menggunakan traffic keluar VPC Langsung, pastikan Anda menjalankan Google Cloud CLI versi terbaru:
gcloud components update
Peran yang diperlukan
Pastikan App Engine memiliki akses ke jaringan VPC dengan memberikan peran berikut ke akun layanan deployment Anda:
Peran App Engine Service Agent: Secara default, agen layanan App Engine memiliki peran App Engine Service Agent (
roles/appengine.serviceAgent) yang berisi izin yang diperlukan.Izin khusus: Untuk kontrol yang lebih terperinci, beri agen layanan App Engine izin tambahan berikut pada project:
compute.networks.getcompute.subnetworks.getcompute.subnetworks.usedi project atau subnet tertentucompute.addresses.getcompute.addresses.listcompute.addresses.createcompute.addresses.deletecompute.addresses.createInternalcompute.addresses.deleteInternalcompute.regionOperations.get
Peran Compute Network User: Jika Anda tidak menggunakan peran Agen Layanan App Engine default atau izin kustom, berikan peran Compute Network User (
roles/compute.networkUser) di akun layanan Agen Layanan App Engine. Subnet dengan IPv6 eksternal juga memerlukan peran Compute Public IP Admin (roles/compute.publicIpAdmin).Misalnya, untuk memberikan peran Compute Network User, jalankan perintah berikut:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:service-PROJECT_NUMBER@gcp-gae-service." \ --role "roles/compute.networkUser"
Ganti kode berikut:
- PROJECT_ID: ID project Anda.
- PROJECT_NUMBER: nomor project tempat Anda men-deploy layanan App Engine.
Mengonfigurasi layanan App Engine dengan egress VPC Langsung
Untuk mengaktifkan layanan App Engine baru atau yang sudah ada agar terhubung langsung ke jaringan VPC Anda, ikuti langkah-langkah berikut:
Tambahkan setelan
vpc_accessberikut ke fileapp.yamlAnda:vpc_access: network_interface: network: NETWORK subnet: SUBNET tags: - NETWORK_TAGS vpc_egress: EGRESS_SETTING
Ganti kode berikut:
NETWORK: nama jaringan yang ada yang terhubung ke instance aplikasi Anda, misalnya,
default. Tentukan jaringan VPC atau subnet, atau keduanya. Jika Anda hanya menentukan jaringan, subnet akan menggunakan nama yang sama dengan jaringan.SUBNET: nama subnetwork yang ada yang terhubung ke instance aplikasi Anda, misalnya,
default. Tentukan jaringan VPC atau subnet, atau keduanya. Jika Anda hanya menentukan jaringan, subnet akan menggunakan nama yang sama dengan jaringan.Opsional: NETWORK_TAGS: daftar tag jaringan yang akan dikaitkan dengan instance layanan App Engine Anda untuk digunakan dalam aturan firewall dan kebijakan perutean.
Opsional: EGRESS_SETTING: mengontrol cara perutean traffic keluar. Kolom ini mendukung setelan konfigurasi berikut:
all-traffic: Semua permintaan keluar dirutekan melalui jaringan VPC.private-ranges-only(default): Hanya traffic ke alamat IP internal yang dirutekan melalui jaringan VPC. Traffic internet menggunakan jalur App Engine default.
Deploy ke App Engine dengan menjalankan perintah berikut:
gcloud beta app deploy
Memutuskan koneksi layanan
Untuk memutuskan koneksi layanan Anda dari jaringan VPC:
Hapus bagian
vpc_accessdari fileapp.yamlAnda.Deploy ulang layanan Anda:
gcloud beta app deploy
Praktik terbaik untuk pengelolaan IP
Anda perlu mengelola alamat IP karena setiap instance layanan Anda menggunakan alamat IP dari subnet Anda. Gunakan strategi berikut untuk mengelola alamat IP Anda:
Rentang IP yang direkomendasikan: Untuk kompatibilitas terbaik, sebaiknya mulai dengan rentang RFC 6598 (
100.64.0.0/10).Rentang IP alternatif: Jika Anda sudah menggunakan rentang IP yang direkomendasikan, yaitu
100.64.0.0/10, Anda dapat menggunakan rentang non-RFC 1918, seperti Class E (240.0.0.0/4) di subnet Anda.Ukuran subnet: Pastikan rentang alamat IPv4 subnet Anda adalah
/26atau lebih besar untuk menyediakan alamat yang cukup untuk penskalaan.Menyediakan IP secara berlebihan: Sebaiknya sediakan jumlah IP yang tersedia secara berlebihan di subnet Anda untuk menghindari kehabisan IP. Serupa dengan layanan Cloud Run, Anda biasanya harus menggunakan IP empat kali lebih banyak (2X untuk status stabil dan 2X tambahan selama deployment) daripada jumlah instance yang berjalan untuk memfasilitasi penskalaan dan update yang lancar.
Mengisolasi traffic internet keluar
Secara default, jika vpc_egress ditetapkan ke private-ranges-only, App Engine akan mengirimkan traffic internet keluar melalui kumpulan regional alamat IP dinamis yang digunakan bersama di seluruh workload serverless. Jangan gunakan pool bersama default ini untuk workload yang bergantung pada reputasi IP atau menghasilkan traffic pemeriksaan bervolume tinggi.
Sebagai gantinya, tetapkan vpc_egress: all-traffic dan rutekan traffic keluar melalui
Cloud NAT dengan
alamat IP keluar statis khusus
dalam kasus berikut:
- Layanan Anda terhubung ke endpoint eksternal yang sensitif terhadap reputasi, seperti
gateway pembayaran, database yang dihosting, atau API partner di balik firewall aplikasi
web (WAF) pihak ketiga. Alamat IP statis khusus mencegah traffic yang mengganggu dari tenant lain di kumpulan bersama memicu pemblokiran WAF eksternal atau error
HTTP 403. - Layanan Anda menjalankan pemindaian jaringan, enumerasi port, sidik jari host, pemeriksaan kerentanan, web scraping, atau pengujian beban yang diizinkan. Menjalankan workload ini melalui kumpulan IP bersama default akan menurunkan reputasi IP, dapat mengganggu layanan bagi pelanggan lain yang melanggar Google Cloud Kebijakan Penggunaan yang Dapat Diterima, dan dapat menyebabkan Google membatasi atau menangguhkan workload Anda.
Saat Anda menjalankan pemindaian yang diizinkan atau workload koneksi tinggi melalui Cloud NAT, alokasikan alamat IP statis yang cukup dan konfigurasikan reservasi port untuk mencegah kehabisan port.
Memecahkan masalah
Bagian ini menjelaskan error umum yang mungkin Anda alami saat men-deploy layanan App Engine dengan egress Direct VPC.
Tidak dapat menghapus subnet
Untuk menghapus subnet, Anda harus menghapus atau men-deploy ulang semua resource yang menggunakannya terlebih dahulu. Jika App Engine menggunakan subnet, putuskan koneksi layanan App Engine dari jaringan VPC atau pindahkan ke subnet lain sebelum menghapus subnet.
Setelah Anda menghapus atau memindahkan layanan App Engine, tunggu 1-2 jam hingga App Engine merilis alamat IP sebelum Anda menghapus subnet.
Kegagalan deployment
Jika deployment Anda gagal, Google Cloud CLI akan menampilkan pesan error yang menunjukkan penyebab utamanya. Beberapa masalah umum meliputi:
Metadata VPC yang salah, seperti kesalahan ejaan nama jaringan atau subnet dalam file
app.yamlAnda. Untuk memperbaiki potensi error, tinjau konfigurasi VPC di fileapp.yamlAnda.Izin IAM tidak memadai. Pastikan Anda memberikan izin yang diperlukan pada akun layanan deployment Anda. Jika Anda mengalami error izin selama deployment, pastikan Anda memberikan peran tambahan berikut ke akun layanan:
- Akun Layanan Cloud Build (
roles/cloudbuild.builds.builder) - Service Account Token Creator (
roles/iam.serviceAccountTokenCreator)
- Akun Layanan Cloud Build (
Kehabisan alamat IP
Jika subnet Anda kehabisan alamat IP yang tersedia, App Engine akan gagal memulai instance baru dan mencatat error ke dalam log. Untuk mengatasi masalah ini, perluas rentang IP subnet Anda atau pindahkan layanan Anda ke subnet yang lebih besar.
Kebocoran alamat IP
Kebocoran alamat IP dapat menyebabkan kehabisan alamat IP. Kebocoran alamat IP tidak mungkin terjadi selama operasi standar, tetapi dapat terjadi karena penyebab berikut:
- Akun layanan deployment Anda hanya memiliki izin untuk memesan alamat (
create,createInternal) dan tidak memiliki izin untuk merilis alamat (delete,deleteInternal). - Akun layanan Anda dihapus saat pemesanan alamat Google Cloud lainnya aktif.
- Akun Penagihan Cloud dihapus dan kemudian diaktifkan kembali dalam project saat pemesanan alamat Serverless aktif.
- Project Google Cloud Anda dihapus dan kemudian dipulihkan saat reservasi alamat Serverless masih ada.
Untuk menyelesaikan masalah ini, ikuti langkah berikut:
Buat kueri untuk log berikut di Logs Explorer guna mengidentifikasi alamat yang bocor:
protoPayload.authorizationInfo.permission=~"compute.addresses.delete.*" protoPayload.authorizationInfo.resourceAttributes.type="compute.addresses" protoPayload.resourceName=~"projects/.*/regions/.*/addresses/serverless-.*" severity>=WARNINGJika kueri ini tidak menampilkan hasil, berarti tidak ada kebocoran alamat IP, dan tidak ada tindakan lebih lanjut yang diperlukan.
Jika kueri Anda menampilkan hasil, pastikan akun layanan deployment Anda berisi peran Agen Layanan App Engine (
roles/appengine.serviceAgent). Jika Anda tidak dapat menggunakan peran ini, pastikan Anda memberikan peran dan izin yang diperlukan lainnya di akun layanan deployment Anda.Hapus alamat IP yang bocor secara manual menggunakan konsol Google Cloud atau Google Cloud CLI:
Konsol
Buka halaman IP addresses di konsol Google Cloud :
Pilih alamat IP yang bocor yang Anda identifikasi di langkah sebelumnya dengan menjalankan kueri.
Klik Release static address untuk menghapus alamat yang bocor.
gcloud
Jalankan perintah
gcloud compute addresses delete:gcloud compute addresses delete ADDRESS_NAME --region=REGION
Ganti kode berikut:
- ADDRESS_NAME: nama alamat IP yang bocor.
- REGION: region alamat IP yang bocor.