Traffic keluar VPC langsung menyediakan solusi jaringan berperforma tinggi untuk layanan App Engine Anda guna mengirim traffic ke jaringan Virtual Private Cloud (VPC). Egress Direct VPC 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: Penggunaan traffic keluar Direct VPC 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, Direct VPC egress menawarkan koneksi yang lebih cepat dan andal ke resource jaringan VPC Anda. Fitur ini dapat 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 spesifik dan akurat untuk layanan.
Batasan
Penggunaan alamat IP: Penggunaan alamat IP layanan Anda diskalakan 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 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.
Traffic masuk VPC langsung: App Engine tidak mendukung traffic masuk VPC Langsung.
Jumlah instance: Anda hanya dapat mengonfigurasi hingga 100 instance per versi App Engine untuk menggunakan traffic keluar VPC Langsung.
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 oleh 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 16 (subnet mask 28) sekaligus.
Untuk memastikan Anda memiliki cukup alamat IPv4 yang tersedia 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 menggunakan subnet, kemudian tunggu hingga 1-2 jam.
Penggunaan alamat IP untuk layanan
Dalam kondisi stabil, App Engine menggunakan 2 kali (2X) jumlah alamat IP yang sama dengan jumlah instance. Saat versi diturunkan skalanya, App Engine akan 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, sedangkan version 2 diskalakan dari nol menjadi 100, App Engine akan mempertahankan alamat IP version 1 hingga 20 menit setelah penurunan skala. Selama periode retensi 20 menit, Anda harus mencadangkan setidaknya 400 alamat IP ((100 + 100) * 2).
Rentang IPv4 yang didukung
App Engine mendukung rentang IPv4 berikut untuk subnet Anda:
Sebelum memulai
Pastikan Anda memiliki jaringan VPC dan subnet yang ada 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 Direct VPC egress, 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 Agen Layanan App Engine: Secara default, agen layanan App Engine memiliki peran Agen Layanan App Engine (
roles/appengine.serviceAgent) yang berisi izin yang diperlukan.Izin kustom: Untuk kontrol yang lebih terperinci, berikan izin tambahan berikut kepada agen layanan App Engine di 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 Pengguna Jaringan Compute: Jika Anda tidak menggunakan peran Agen Layanan App Engine default atau izin kustom, berikan peran Pengguna Jaringan Compute (
roles/compute.networkUser) pada akun layanan Agen Layanan App Engine. Subnet dengan IPv6 eksternal juga memerlukan peran Admin IP Publik Compute (roles/compute.publicIpAdmin).Misalnya, untuk memberikan peran Pengguna Jaringan Compute, jalankan perintah berikut:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:service-PROJECT_NUMBER@gcp-gae-service.iam.gserviceaccount.com" \ --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 Direct VPC egress
Untuk mengaktifkan layanan App Engine baru atau yang sudah ada agar dapat 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 dan terhubung dengan 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 dan terhubung dengan 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 traffic keluar dirutekan. 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 harus 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
100.64.0.0/10, Anda dapat menggunakan rentang non-RFC 1918, seperti Kelas 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.Penyediaan IP berlebih: Sebaiknya sediakan IP berlebih di subnet Anda untuk menghindari kehabisan. Mirip dengan layanan Cloud Run, Anda biasanya harus menggunakan empat kali lebih banyak IP (2X untuk kondisi stabil dan 2X tambahan selama deployment) dari jumlah instance yang berjalan untuk memfasilitasi penskalaan dan update yang lancar.
Memecahkan masalah
Bagian ini menjelaskan error umum yang mungkin Anda temui saat men-deploy layanan App Engine dengan Direct VPC egress.
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 hal berikut:
Metadata VPC yang salah, seperti nama jaringan atau subnet yang salah ketik 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) - Pembuat Token Akun Layanan (
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. 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 mungkin terjadi karena penyebab berikut:
- Akun layanan deployment Anda hanya memiliki izin untuk mencadangkan alamat (
create,createInternal) dan tidak memiliki izin untuk merilis alamat (delete,deleteInternal). - Akun layanan Anda dihapus saat pencadangan alamat lain Google Cloud aktif.
- Akun Penagihan Cloud dihapus dan kemudian diaktifkan kembali di project saat pencadangan alamat Serverless aktif.
- Project Anda dihapus dan kemudian dipulihkan saat pencadangan alamat Serverless masih ada. Google Cloud
Untuk menyelesaikan masalah ini, ikuti langkah berikut:
Kueri log berikut di Logs Explorer untuk 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, 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 lain yang diperlukan pada akun layanan deployment Anda.Hapus alamat IP yang bocor secara manual menggunakan Google Cloud konsol atau Google Cloud CLI:
Konsol
Buka halaman Alamat IP di Google Cloud konsol:
Pilih alamat IP yang bocor yang Anda identifikasi pada 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.