Traffic keluar VPC Langsung

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.yaml layanan 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:

  • RFC 1918
    • 10.0.0.0/8
    • 172.16.0.0/12
    • 192.168.0.0/16
  • RFC 6598
    • 100.64.0.0/10
  • Kelas E
    • 240.0.0.0/4

Sebelum memulai

  1. 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.

  2. Aktifkan Compute Engine API dan Cloud Build API:

    Aktifkan API

  3. 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.get
    • compute.subnetworks.get
    • compute.subnetworks.use di project atau subnet tertentu
    • compute.addresses.get
    • compute.addresses.list
    • compute.addresses.create
    • compute.addresses.delete
    • compute.addresses.createInternal
    • compute.addresses.deleteInternal
    • compute.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:

  1. Tambahkan setelan vpc_access berikut ke file app.yaml Anda:

    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.
  2. Deploy ke App Engine dengan menjalankan perintah berikut:

    gcloud beta app deploy

Memutuskan koneksi layanan

Untuk memutuskan koneksi layanan Anda dari jaringan VPC:

  1. Hapus bagian vpc_access dari file app.yaml Anda.

  2. 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 /26 atau 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.yaml Anda. Untuk memperbaiki potensi error, tinjau konfigurasi VPC di file app.yaml Anda.

  • 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:

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:

  1. 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>=WARNING
    

    Jika kueri ini tidak menampilkan hasil, tidak ada kebocoran alamat IP, dan tidak ada tindakan lebih lanjut yang diperlukan.

  2. 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.

  3. Hapus alamat IP yang bocor secara manual menggunakan Google Cloud konsol atau Google Cloud CLI:

    Konsol

    1. Buka halaman Alamat IP di Google Cloud konsol:

      Buka IP addresses

    2. Pilih alamat IP yang bocor yang Anda identifikasi pada langkah sebelumnya dengan menjalankan kueri.

    3. 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.