Anda dapat mengaktifkan layanan App Engine untuk mengirim traffic ke jaringan VPC Bersama menggunakan Direct VPC egress tanpa memerlukan konektor Akses VPC Serverless.
Halaman ini menjelaskan cara mengonfigurasi izin IAM App Engine untuk menggunakan subnet jaringan VPC Bersama, lalu menempatkan layanan Anda di subnet bersama.
Sebelum memulai
Tinjau bagian Alokasi alamat IP untuk mendapatkan panduan terkait cara mengalokasikan alamat IP dari subnet Anda.
Batasan
Penggunaan 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 sesekali.
Mulai dingin: Waktu mulai dingin awal bergantung pada wilayah dan kasus penggunaan tertentu. Dalam kasus yang jarang terjadi, cold start dapat 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 Direct VPC.
Menyiapkan izin IAM
Sebelum App Engine di project layanan VPC Bersama dapat mengakses jaringan VPC Bersama, pastikan agen layanan App Engine memiliki izin yang memadai untuk menggunakan subnet.
Peran Agen Layanan App Engine: Untuk mengakses jaringan VPC Bersama, berikan izin yang memadai ke agen layanan App Engine dengan menambahkan salah satu peran berikut:
Compute Network User (
roles/compute.networkUser) pada project host VPC Bersama. 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 HOST_PROJECT_ID \ --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@gcp-gae-service.iam.gserviceaccount.com" \ --role "roles/compute.networkUser"
Ganti kode berikut:
- HOST_PROJECT_ID: ID project host VPC Bersama.
- SERVICE_PROJECT_NUMBER: nomor project layanan VPC Bersama tempat Anda men-deploy layanan App Engine.
Compute Network Viewer (
compute.networkViewer) pada project host VPC Bersama dan peran Compute Network User (compute.networkUser) pada subnet VPC Bersama. Subnet dengan IPv6 eksternal juga memerlukan peran Compute Public IP Admin (roles/compute.publicIpAdmin).Misalnya, untuk memberikan peran Compute Network User pada subnet, jalankan perintah berikut:
gcloud compute networks subnets add-iam-policy-binding SUBNET_NAME \ --region REGION \ --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@gcp-gae-service.iam.gserviceaccount.com" \ --role "roles/compute.networkUser" \ --project HOST_PROJECT_ID
Ganti kode berikut:
- SUBNET_NAME: nama resource yang sepenuhnya memenuhi syarat dari subnet yang ingin Anda jalankan untuk layanan App Engine.
- REGION: region untuk layanan App Engine Anda, yang harus sesuai dengan region subnet Anda.
- SERVICE_PROJECT_NUMBER: nomor project layanan VPC Bersama tempat Anda men-deploy layanan App Engine.
- HOST_PROJECT_ID: ID project host VPC Bersama.
Izin kustom: Untuk kontrol yang lebih terperinci, berikan izin tambahan berikut kepada agen layanan App Engine di project:
compute.networks.getpada project host VPC Bersamacompute.subnetworks.getpada project host atau subnet tertentucompute.subnetworks.usepada project host atau subnet tertentucompute.addresses.getpada project layanan VPC Bersamacompute.addresses.listpada project layanan VPC Bersamacompute.addresses.createpada project layanan VPC Bersamacompute.addresses.deletepada project layanan VPC Bersamacompute.addresses.createInternalpada project layanan VPC Bersamacompute.addresses.deleteInternalpada project layanan VPC Bersamacompute.regionOperations.getpada project layanan VPC Bersama
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 penskalaan yang lebih cepat selama lonjakan traffic, App Engine mencadangkan alamat IP dalam blok 16 (subnet mask 28) sekaligus. Untuk memastikan Anda memiliki alamat IPv4 yang cukup untuk digunakan di 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 kondisi stabil, App Engine menggunakan alamat IP 2 kali (2X) lebih banyak dari jumlah instance. Saat versi di-scale down, 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 penskalaan. Selama periode retensi 20 menit, Anda harus
mencadangkan minimal 400 alamat IP ((100 + 100) * 2).
Rentang IPv4 yang didukung
App Engine mendukung rentang IPv4 berikut untuk subnet Anda:
Men-deploy layanan App Engine
Traffic keluar VPC Langsung memungkinkan layanan App Engine Anda mengirim traffic ke jaringan VPC Bersama tanpa konektor Akses VPC Serverless. Anda dapat menetapkan tag jaringan ke versi tertentu dari layanan App Engine untuk keamanan jaringan yang lebih terperinci, seperti menerapkan aturan firewall VPC.
Untuk menempatkan layanan Anda pada subnet bersama, tentukan nama resource yang memenuhi syarat
sepenuhnya untuk subnet dan jaringan VPC Bersama dalam file app.yaml Anda.
Perbarui file
app.yamlAnda untuk menyertakan bagianvpc_access:vpc_access: network_interface: network: projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK subnet: projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME tags: - NETWORK_TAGS vpc_egress: EGRESS_SETTING
Ganti kode berikut:
- HOST_PROJECT_ID: ID project VPC Bersama Anda.
- VPC_NETWORK: nama jaringan VPC Bersama Anda.
- REGION: region untuk layanan App Engine Anda, yang harus sesuai dengan region subnet Anda.
- SUBNET_NAME: nama resource yang sepenuhnya memenuhi syarat dari subnet Anda.
- 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: Mengirim semua traffic keluar melalui jaringan VPC Bersama.private-ranges-only(default): Hanya mengirim traffic ke alamat internal melalui jaringan VPC Bersama.
Deploy layanan Anda dengan menjalankan perintah berikut:
gcloud beta app deploy
Memutuskan koneksi layanan
Untuk menghapus layanan Anda dari jaringan VPC Bersama:
- Hapus bagian
vpc_accessdari fileapp.yamlAnda. Deploy ulang layanan Anda:
gcloud beta app deploy
Memecahkan masalah
Bagian ini menjelaskan error umum yang mungkin Anda alami saat menggunakan egress VPC Langsung dengan jaringan VPC Bersama dan memberikan panduan tentang cara menyelesaikannya.
Tidak dapat menghapus subnet
Untuk menghapus semua subnet, Anda harus menghapus semua resource yang menggunakannya terlebih dahulu. Jika App Engine menggunakan subnet, Anda harus memutus koneksinya atau memindahkannya ke subnet lain sebelum menghapus subnet tersebut.
Setelah Anda menghapus atau memindahkan resource App Engine, tunggu 1-2 jam hingga App Engine merilis 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 jaringan VPC yang salah, seperti nama jaringan atau subnet yang salah eja dalam file
app.yaml. Untuk memperbaiki potensi error, tinjau konfigurasi jaringan VPC dalam fileapp.yaml.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 kepada akun layanan:
- Akun Layanan Cloud Build (
roles/cloudbuild.builds.builder) - Service Account Token Creator (
roles/iam.serviceAccountTokenCreator)
- Akun Layanan Cloud Build (
Tidak dapat melepas jaringan VPC Bersama
Untuk melepaskan jaringan VPC Bersama di project host, ikuti langkah-langkah untuk Mencabut Akses VPC Bersama dan pastikan untuk memutus koneksi layanan App Engine apa pun dari jaringan VPC Bersama.
Untuk melihat resource App Engine manakah yang menggunakan jaringan VPC Bersama, jalankan perintah berikut:
gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID
Ganti HOST_PROJECT_ID dengan ID Project host VPC Bersama milik Anda.
Subnet traffic keluar VPC Langsung kehabisan alamat IPv4
Jika subnet jaringan VPC kehabisan alamat IPv4, App Engine tidak dapat memulai instance layanan lagi.
Untuk mengatasi masalah ini, pertimbangkan untuk beralih ke subnetwork dengan lebih banyak alamat IP yang tersedia atau memperluas rentang subnet.
Melihat alamat IP yang dialokasikan
Untuk melihat alamat IP yang telah dialokasikan App Engine, buka halaman alamat IP di konsol Google Cloud atau jalankan perintah berikut dari Google Cloud CLI:
gcloud compute addresses list