ID region
REGION_ID
adalah kode singkat yang ditetapkan Google berdasarkan region yang Anda pilih saat membuat aplikasi. Kode ini tidak sesuai dengan negara atau provinsi, meskipun beberapa ID region mungkin tampak mirip dengan kode negara dan provinsi yang umum digunakan. Untuk aplikasi yang dibuat setelah Februari 2020, REGION_ID.r
disertakan dalam URL App Engine. Untuk aplikasi lama yang dibuat sebelum tanggal tersebut, ID region bersifat opsional dalam URL.
Pelajari ID region lebih lanjut.
Panduan ini membahas cara menyiapkan endpoint publik baru untuk aplikasi App Engine Anda menggunakan Cloud Load Balancing.
Dengan Cloud Load Balancing, Anda dapat mengonfigurasi endpoint domain kustom sebagai layanan frontend, dan mengonfigurasi aplikasi App Engine sebagai layanan backend menggunakan grup endpoint jaringan (NEG) serverless.
Traffic ke endpoint layanan frontend Cloud Load Balancing dirutekan dengan cara yang sama seperti sebelumnya, termasuk semua aturan perutean yang Anda tentukan di file dispatch.yaml
aplikasi Anda.
Diagram berikut menjelaskan perubahan pada aplikasi Anda:
Dengan bermigrasi ke Cloud Load Balancing, Anda akan mendapatkan fleksibilitas yang jauh lebih tinggi dalam menangani traffic saat mencapai domain Anda, seperti menyalurkan konten statis dari Cloud Storage, atau menambahkan layanan yang berjalan di platform komputasi lain seperti Cloud Run dan Google Kubernetes Engine.
Anda juga mendapatkan akses ke kemampuan utama Google Cloud yang tidak tersedia di App Engine, termasuk:
- Google Cloud Armor, untuk keamanan yang lebih baik dengan perlindungan DDoS lanjutan, kontrol akses berbasis IP dan posisi geografis, aturan firewall aplikasi web, serta masih banyak lagi
- Cloud CDN, untuk penayangan konten yang di-cache
- Kebijakan SSL, untuk mengelola fitur SSL dan versi TLS yang akan diterima aplikasi Anda
Panduan ini membahas petunjuk penyiapan untuk mengalihkan permintaan masuk dari layanan App Engine Anda dengan domain kustom ke layanan frontend Cloud Load Balancing:
- Memastikan Anda memiliki izin yang diperlukan
- Membuat sertifikat yang dikelola Google
- Mengonfigurasi Cloud Load Balancing
- Menguji load balancer
- Menghubungkan domain ke load balancer
- Menghapus pemetaan domain kustom App Engine
- Menyiapkan kontrol traffic masuk untuk hanya mengizinkan akses melalui Cloud Load Balancing
Sebelum memulai
Dapatkan aplikasi App Engine dengan domain kustom yang dikonfigurasi di setelan App Engine.
Konfigurasikan izin
Untuk mengikuti panduan ini, Anda perlu membuat sertifikat yang dikelola Google, NEG tanpa server, dan load balancer HTTP(S) eksternal dalam sebuah project. Anda harus menjadi pemilik atau editor project, atau memiliki peran IAM berikut:
Tugas | Peran yang Diperlukan |
---|---|
Membuat sertifikat SSL yang dikelola Google menggunakan Pengelola Sertifikat | Pemilik Pengelola Sertifikat atau Editor Pengelola Sertifikat, dan Admin Load Balancer Compute |
Memperbarui data DNS untuk domain kustom | Administrator Cloud DNS jika menggunakan Cloud DNS sebagai solusi DNS Anda. Jika menggunakan penyedia DNS lain, Anda memerlukan izin untuk menambahkan dan memperbarui data DNS untuk domain kustom. |
Membuat komponen jaringan dan load balancer | Compute Network Admin |
Membuat dan mengubah NEG | Compute Instance Admin |
Membuat dan mengubah sertifikat SSL | Compute Security Admin |
Menghapus domain kustom di setelan App Engine | Peran App Engine Admin atau peran yang berisi izin appengine.applications.update . |
Membuat sertifikat SSL yang dikelola Google
Sertifikat SSL yang dikelola Google (juga dikenal sebagai sertifikat TLS dalam dokumentasi) memungkinkan Google Cloud mendapatkan, mengelola, dan memperpanjang sertifikat secara otomatis. Untuk bermigrasi ke frontend Cloud Load Balancing tanpa menyebabkan periode nonaktif untuk layanan App Engine yang ada, Anda harus menggunakan Pengelola Sertifikat untuk membuat otorisasi DNS dan sertifikat yang dikelola Google.
Perlu diperhatikan bahwa dokumentasi Cloud Load Balancing memiliki petunjuk yang serupa dengan membuat sertifikat SSL yang dikelola Google, tetapi petunjuknya menggunakan otorisasi load balancer, yang memerlukan periode nonaktif untuk layanan App Engine Anda yang bisa berlangsung hingga beberapa jam. Untuk informasi lebih lanjut, lihat Otorisasi domain untuk sertifikat yang dikelola Google.
Untuk menghindari periode nonaktif aplikasi, ikuti langkah-langkah di halaman ini.
Buat otorisasi DNS
Buat otorisasi DNS di Pengelola Sertifikat dengan menjalankan perintah berikut:
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \ --domain="DOMAIN_NAME" gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME
Ganti kode berikut:
AUTHORIZATION_NAME
adalah nama unik yang menjelaskan otorisasi DNS ini.DOMAIN_NAME
adalah nama domain kustom App Engine tempat Anda membuat otorisasi DNS ini.
Perhatikan CNAME yang ditampilkan oleh perintah
gcloud
. Anda harus menggunakannya untuk memperbarui data DNS Anda dengan langkah-langkah berikut.
Tambahkan data CNAME ke konfigurasi DNS Anda
Bergantung pada apakah Anda menggunakan Cloud DNS atau solusi DNS pihak ketiga lainnya, ikuti petunjuk yang sesuai untuk kasus penggunaan Anda:
Cloud DNS
Saat Anda membuat otorisasi DNS, perintah gcloud
akan menampilkan
data CNAME yang sesuai. Anda harus menambahkan data CNAME ini ke konfigurasi DNS di zona DNS domain target sebagai berikut:
Mulai transaksi data DNS:
gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
Ganti
DNS_ZONE_NAME
dengan nama zona DNS publik. Jika Anda menggunakan Google Cloud untuk mengelola domain dan menerima traffic ke domain tersebut, berarti Anda telah membuat zona DNS publik. Untuk melihat zona DNS publik, lihat Mencantumkan dan menjelaskan zona terkelola.Tambahkan data CNAME ke zona DNS target:
gcloud dns record-sets transaction add CNAME_RECORD \ --name="_acme-challenge.DOMAIN_NAME." \ --ttl="30" \ --type="CNAME" \ --zone="DNS_ZONE_NAME"
Ganti kode berikut:
CNAME_RECORD
adalah nilai lengkap data CNAME yang ditampilkan oleh perintahgcloud
yang membuat otorisasi DNS yang sesuai.DOMAIN_NAME
adalah nama domain kustom App Engine. Anda harus menyertakan titik di akhir setelah nama domain target.DNS_ZONE_NAME
adalah nama zona DNS target dari sebelumnya.
Jalankan transaksi data DNS untuk menyimpan perubahan:
gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
Ganti
DNS_ZONE_NAME
dengan nama zona DNS target dari yang sebelumnya.
Solusi DNS lainnya
Tambahkan data CNAME ke konfigurasi DNS untuk domain Anda, menggunakan
nama (host) (_acme-challenge.DOMAIN_NAME
) dan isian data dari
bagian sebelumnya. Lihat dokumentasi untuk solusi DNS pihak ketiga Anda.
Buat sertifikat yang dikelola Google yang merujuk pada otorisasi DNS
Untuk membuat sertifikat yang dikelola Google yang merujuk ke otorisasi DNS yang Anda buat pada langkah sebelumnya, jalankan perintah berikut:
Buat sertifikat yang dikelola Google:
gcloud certificate-manager certificates create CERTIFICATE_NAME \ --domains=DOMAIN_NAME --dns-authorizations=AUTHORIZATION_NAME
Ganti kode berikut:
CERTIFICATE_NAME
adalah nama unik yang mendeskripsikan sertifikat.DOMAIN_NAME
adalah nama domain kustom App Engine.AUTHORIZATION_NAME
adalah nama otorisasi DNS yang dibuat sebelumnya.
Pastikan bahwa sertifikat aktif.
Gunakan perintah berikut untuk memverifikasi bahwa sertifikat aktif sebelum men-deploy-nya ke load balancer Anda. Harus diperhatikan bahwa diperlukan waktu hingga beberapa jam agar status sertifikat berubah menjadi
ACTIVE
.gcloud certificate-manager certificates describe CERTIFICATE_NAME
Ganti
CERTIFICATE_NAME
dengan nama sertifikat yang dikelola Google yang dibuat sebelumnya.Alat
gcloud
menampilkan output yang mirip dengan berikut ini:certificatePem: myPEM createTime: '2021-10-20T12:19:53.370778666Z' expireTime: '2022-05-07T05:03:49Z' managed: authorizationAttemptInfo: - domain: example.com state: AUTHORIZED dnsAuthorizations: - projects/my-project/locations/global/dnsAuthorizations/myAuth domains: - example.com state: ACTIVE name: projects/myProject/locations/global/certificates/myCert scope: myScope sanDnsnames: - example.com updateTime: '2021-10-20T12:19:55.083385630Z'
Jika alat
gcloud
menampilkan output yang berbeda, lihat Pemecahan Masalah Pengelola Sertifikat.
Buat peta sertifikat
Buat peta sertifikat:
gcloud certificate-manager maps create CERTIFICATE_MAP_NAME
Ganti
CERTIFICATE_MAP_NAME
dengan nama unik yang menjelaskan peta sertifikat.Buat entri peta sertifikat, lalu kaitkan dengan sertifikat dan peta sertifikat Anda dari sesi sebelumnya:
gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \ --map=CERTIFICATE_MAP_NAME \ --certificates=CERTIFICATE_NAME \ --set-primary
Ganti kode berikut:
CERTIFICATE_MAP_ENTRY_NAME
adalah nama unik yang menjelaskan entri peta sertifikat ini.CERTIFICATE_MAP_NAME
adalah nama peta sertifikat tempat entri peta sertifikat ini dilampirkan.CERTIFICATE_NAME
adalah nama sertifikat yang ingin Anda kaitkan dengan entri peta sertifikat ini.
Anda dapat menambahkan flag
--set-primary
untuk memastikan bahwa sertifikat digunakan sebagai sertifikat default jika nama domain tidak ditentukan.Pastikan peta sertifikat aktif.
Gunakan perintah berikut untuk memverifikasi bahwa entri peta sertifikat aktif sebelum melampirkan peta sertifikat yang sesuai ke proxy target:
gcloud certificate-manager maps entries describe CERTIFICATE_MAP_ENTRY_NAME \ --map=CERTIFICATE_MAP_NAME
Ganti kode berikut:
CERTIFICATE_MAP_ENTRY_NAME
adalah nama entri peta sertifikat dari sebelumnya.CERTIFICATE_MAP_NAME
adalah nama peta sertifikat yang dilampirkan oleh entri peta sertifikat ini.
Alat
gcloud
menampilkan output yang mirip dengan berikut ini:createTime: '2021-09-06T10:01:56.229472109Z' name: projects/my-project/locations/global/certificateMaps/myCertMap/certificateMapEntries/myCertMapEntry state: ACTIVE updateTime: '2021-09-06T10:01:58.277031787Z'
Untuk informasi selengkapnya tentang penggunaan Pengelola Sertifikat, lihat Cara kerja Pengelola Sertifikat.
Mengonfigurasi Cloud Load Balancing
Setelah memiliki sertifikat yang dikelola Google, Anda dapat mengganti domain kustom App Engine dengan layanan frontend Cloud Load Balancing.
Diagram berikut menunjukkan load balancer HTTPS dengan satu layanan backend dan NEG tanpa server.
Aturan penerusan mengarahkan permintaan masuk dari alamat IP eksternal dan permintaan langsung ke proxy HTTPS target. Load balancer HTTPS menggunakan peta URL untuk mengarahkan permintaan ke layanan backend, yang berisi NEG tanpa server untuk layanan App Engine.
Mencadangkan alamat IP eksternal
Sebelum mengonfigurasi Cloud Load Balancing, Anda perlu menyiapkan alamat IP eksternal statis global bagi pengguna untuk menjangkau load balancer Anda.
Konsol
Buka halaman External IP addresses di konsol Google Cloud.
Klik Reserve static address untuk memesan alamat IPv4.
Tetapkan Name untuk alamat statis, misalnya,
appengine-external-ip
.Tetapkan paket Jaringan ke Premium.
Tetapkan IP version ke IPv4.
Tetapkan Type ke Global.
Klik Reserve.
gcloud
Buat reservasi alamat IP eksternal:
gcloud compute addresses create EXTERNAL_IP \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global
EXTERNAL_IP
adalah nama alamat yang akan dibuat.Perhatikan alamat IPv4 yang dicadangkan:
gcloud compute addresses describe EXTERNAL_IP \ --format="get(address)" \ --global
Mengonfigurasi layanan backend untuk App Engine
Grup endpoint jaringan (NEG) digunakan untuk menentukan grup endpoint backend untuk load balancer. Untuk menentukan backend yang mengarah ke layanan App Engine, konfigurasikan NEG tanpa server, lalu konfigurasikan layanan backend, aturan perutean, dan layanan frontend di Cloud Load Balancing.
Buat NEG tanpa server untuk aplikasi App Engine Anda:
gcloud compute network-endpoint-groups create APP_ENGINE_NEG \ --network-endpoint-type=serverless \ --app-engine-app \ --region=APP_ENGINE_REGION
Ganti kode berikut:
APP_ENGINE_NEG
adalah nama grup endpoint jaringan.APP_ENGINE_REGION
adalah region yang ditetapkan di App Engine.
Anda dapat menambahkan flag
--app-engine-app
di atas untuk menggunakan perutean default, bukan mengarahkan ke layanan App Engine tertentu. Menggunakan pemilihan rute default berarti permintaan akan dikirim ke layanan default (https://PROJECT_ID.REGION_ID.r.appspot.com
), dan mengikuti semua aturan perutean yang Anda tentukan dalam filedispatch.yaml
. Perilaku ini sama dengan domain kustom yang dikonfigurasi menggunakan App Engine.Buat layanan backend:
gcloud compute backend-services create APP_ENGINE_BACKEND \ --global \ --load-balancing-scheme=EXTERNAL_MANAGED
Ganti
APP_ENGINE_BACKEND
dengan nama layanan backend yang akan dibuat.Tambahkan NEG tanpa server ke layanan backend App Engine
gcloud compute backend-services add-backend APP_ENGINE_BACKEND \ --global --network-endpoint-group=APP_ENGINE_NEG \ --network-endpoint-group-region=APP_ENGINE_REGION
Ganti kode berikut:
APP_ENGINE_BACKEND
adalah nama layanan backend dari sebelumnya.APP_ENGINE_NEG
adalah nama grup endpoint jaringan.APP_ENGINE_REGION
adalah region yang ditetapkan di App Engine.
Buat peta URL untuk mengarahkan permintaan masuk ke layanan backend:
gcloud compute url-maps create URL_MAP_NAME \ --default-service APP_ENGINE_BACKEND
Ganti kode berikut:
URL_MAP_NAME
adalah nama unik untuk resource peta URL yang menentukan pemetaan URL ke layanan backend.APP_ENGINE_BACKEND
adalah nama layanan backend dari sebelumnya.
Buat proxy HTTPS target untuk mengarahkan permintaan ke peta URL:
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --certificate-map=CERTIFICATE_MAP_NAME \ --url-map=URL_MAP_NAME
Ganti kode berikut:
TARGET_HTTPS_PROXY_NAME
adalah nama unik yang Anda pilih untuk mendeskripsikan proxy HTTPS.CERTIFICATE_MAP_NAME
adalah nama peta sertifikat yang merujuk pada entri peta sertifikat dan sertifikat yang terkait.URL_MAP_NAME
adalah nama peta URL dari pembahasan sebelumnya.
Buat aturan penerusan untuk mengarahkan permintaan masuk ke proxy:
gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=EXTERNAL_IP \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --global \ --ports=443
Ganti kode berikut:
HTTPS_FORWARDING_RULE_NAME
adalah nama unik yang menjelaskan aturan penerusan untuk mengarahkan traffic jaringan ke proxy HTTPS.TARGET_HTTPS_PROXY_NAME
adalah nama proxy HTTPS sebelumnya.EXTERNAL_IP
adalah nama alamat IPv4 yang dibuat sebelumnya.
Menguji load balancer
Setelah mengonfigurasi load balancer, Anda dapat mulai mengirimkan traffic ke alamat IP load balancer untuk pengujian sebelum memigrasikan domain.
- Buka halaman Load balancing di konsol Google Cloud.
Buka Load balancing - Klik load balancer yang baru saja dibuat.
- Catat alamat IP load balancer internal.
Untuk load balancer HTTPS, Anda dapat menguji load balancer Anda menggunakan browser web dengan membuka
https://IP_ADDRESS
. GantiIP_ADDRESS
dengan alamat IP load balancer, misalnya30.90.80.100
.- Jika tidak berhasil dan Anda menggunakan sertifikat yang dikelola Google,
pastikan bahwa sertifikat Anda merupakan
ACTIVE
, dan bahwapeta sertifikat merupakanACTIVE
. - Jika Anda menggunakan sertifikat yang ditandatangani sendiri untuk pengujian, browser akan menampilkan peringatan. Anda harus secara eksplisit memerintahkan browser untuk menerima sertifikat yang ditandatangani sendiri. Klik peringatan untuk melihat halaman sebenarnya.
Untuk opsi konfigurasi lainnya, lihat Menyiapkan load balancing HTTP(S) eksternal global dengan platform Serverless.
- Jika tidak berhasil dan Anda menggunakan sertifikat yang dikelola Google,
pastikan bahwa sertifikat Anda merupakan
Menghubungkan domain ke load balancer
Setelah load balancer dibuat, catat alamat IP yang terkait dengan load balancer, misalnya, 30.90.80.100
. Untuk mengarahkan domain ke load balancer, buat data A
menggunakan layanan pendaftaran domain. Jika
Anda menambahkan beberapa domain ke sertifikat SSL, Anda harus menambahkan data A
untuk setiap domain, yang semuanya mengarah ke alamat IP load balancer. Misalnya, untuk
membuat data A
bagi www.example.com
dan example.com
, gunakan string berikut:
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Jika Anda menggunakan Cloud DNS sebagai penyedia DNS, lihat Menambahkan, mengubah, dan menghapus data.
Menghapus pemetaan domain kustom App Engine
Di konsol Google Cloud:
Buka tab Custom Domains di halaman Settings App Engine.
Pilih nama domain kustom, lalu klik Delete.
Atau, Anda dapat menggunakan perintah gcloud atau Admin API untuk menghapus domain kustom.
Menyiapkan kontrol traffic masuk untuk hanya mengizinkan akses melalui Cloud Load Balancing
Setelah menguji load balancer, sebaiknya update aplikasi App Engine Anda agar hanya menerima traffic dari Cloud Load Balancing. Untuk mempelajari cara
mengonfigurasi kontrol traffic masuk internal-and-cloud-load-balancing
, lihat
Setelan Traffic Masuk.