App Hosting telah dirancang untuk kemudahan penggunaan dan rendah pemeliharaan, dengan setelan default yang dioptimalkan untuk sebagian besar kasus penggunaan. Pada saat yang sama, App Hosting menyediakan alat untuk mengelola dan mengonfigurasi backend yang sesuai dengan kebutuhan spesifik Anda. Panduan ini menjelaskan alat dan proses tersebut.
Mengonfigurasi backend
Untuk konfigurasi lanjutan seperti variabel lingkungan atau setelan runtime
seperti konkurensi, CPU, dan batas memori, Anda harus membuat dan mengedit
apphosting.yaml
di direktori utama aplikasi Anda. File ini juga
mendukung referensi ke secret yang dikelola
dengan Cloud Secret Manager, yang membuatnya aman untuk memeriksa kontrol sumber.
Berikut adalah tampilan file apphosting.yaml
biasa, dengan setelan untuk
layanan Cloud Run backend, beberapa variabel lingkungan, dan beberapa
referensi ke secret yang dikelola oleh Cloud Secret Manager:
# Settings for Cloud Run
runConfig:
minInstances: 2
maxInstances: 100
concurrency: 100
cpu: 2
memoryMiB: 1024
# Environment variables and secrets
env:
- variable: STORAGE_BUCKET
value: mybucket.appspot.com
availability:
- BUILD
- RUNTIME
- variable: API_KEY
secret: myApiKeySecret
# Same as API_KEY above but with a pinned version.
- variable: PINNED_API_KEY
secret: myApiKeySecret@5
# Same as API_KEY above but with the long form secret reference as defined by Cloud Secret Manager.
- variable: VERBOSE_API_KEY
secret: projects/test-project/secrets/secretID
# Same as API_KEY above but with the long form secret reference with pinned version.
- variable: PINNED_VERBOSE_API_KEY
secret: projects/test-project/secrets/secretID/versions/5
Bagian selanjutnya dari panduan ini memberikan lebih banyak informasi dan konteks untuk contoh-contoh ini setelan.
Mengonfigurasi setelan layanan Cloud Run
Dengan setelan apphosting.yaml
, Anda dapat mengonfigurasi cara
Layanan Cloud Run
disediakan. Setelan yang tersedia untuk
Layanan Cloud Run disediakan dalam objek runConfig
:
cpu
– Jumlah CPU yang digunakan untuk setiap instance penayangan (default 0).memoryMiB
– Jumlah memori yang dialokasikan untuk setiap instance inferensi dalam MiB (default 512)maxInstances
– Jumlah maksimum container yang pernah dijalankan pada satu waktu (default 100 dan dikelola oleh kuota)minInstances
– Jumlah penampung yang selalu aktif (default 0).concurrency
– Jumlah permintaan maksimum yang dapat dilakukan setiap instance penayangan terima (default 80).
Perhatikan hubungan penting antara cpu
dan memoryMiB
; memori bisa disetel
ke nilai bilangan bulat apa pun antara 128 sampai 32768, tetapi
meningkatkan batas memori
memerlukan peningkatan batas CPU:
- Lebih dari 4 GiB memerlukan setidaknya 2 CPU
- Lebih dari 8 GiB memerlukan setidaknya 4 CPU
- Lebih dari 16 GiB memerlukan setidaknya 6 CPU
- Lebih dari 24 GiB memerlukan setidaknya 8 CPU
Demikian pula, nilai cpu
memengaruhi setelan serentak. Jika Anda menetapkan nilai
kurang dari 1 CPU, Anda harus menetapkan konkurensi ke 1, dan CPU hanya akan dialokasikan
selama pemrosesan permintaan.
Mengonfigurasi lingkungan build
Terkadang Anda membutuhkan konfigurasi tambahan untuk proses build, seperti
kunci API pihak ketiga atau setelan yang dapat disesuaikan. App Hosting lingkungan penawaran
di apphosting.yaml
untuk menyimpan dan mengambil data
jenis data yang diperlukan
untuk proyek Anda.
env:
- variable: STORAGE_BUCKET
value: mybucket.appspot.com
Untuk aplikasi Next.js, file dotenv yang berisi
variabel lingkungan
juga akan
bekerja dengan App Hosting. Sebaiknya gunakan apphosting.yaml
untuk
variabel lingkungan dengan
framework apa pun.
Di apphosting.yaml
, Anda dapat menentukan proses mana yang memiliki akses ke
variabel lingkungan menggunakan properti availability
. Anda dapat membatasi
variabel lingkungan tersedia hanya untuk lingkungan build atau yang tersedia
hanya untuk lingkungan runtime. Secara default, opsi ini tersedia untuk keduanya.
env:
- variable: STORAGE_BUCKET
value: mybucket.appspot.com
availability:
- BUILD
- RUNTIME
Untuk aplikasi Next.js, Anda juga dapat menggunakan awalan NEXT_PUBLIC_
dengan cara yang sama seperti
akan dilakukan pada file dotenv Anda untuk membuat
variabel dapat diakses di browser.
env:
- variable: NEXT_PUBLIC_STORAGE_BUCKET
value: mybucket.appspot.com
availability:
- BUILD
- RUNTIME
Kunci variabel yang valid terdiri dari karakter A-Z atau garis bawah. Agak besar kunci variabel lingkungan disediakan untuk penggunaan internal. Jangan gunakan dalam file konfigurasi Anda:
- Variabel apa pun yang diawali dengan
X_FIREBASE_
PORT
K_SERVICE
K_REVISION
K_CONFIGURATION
Menyimpan dan mengakses parameter secret
Informasi sensitif seperti kunci API harus disimpan sebagai secret. Anda dapat
rahasia referensi di apphosting.yaml
agar tidak memeriksa informasi sensitif
ke dalam kontrol sumber.
Parameter jenis secret
mewakili parameter string yang memiliki nilai
yang disimpan di Cloud Secret Manager.
Daripada fokus pada
agar mendapatkan nilai secara langsung, parameter secret memeriksa keberadaan di Cloud
Secret Manager, dan memuat nilai selama peluncuran.
- variable: API_KEY
secret: myApiKeySecret
Secret di Cloud Secret Manager dapat memiliki beberapa versi. Secara default, nilai parameter secret yang tersedia untuk backend langsung Anda disematkan ke rahasia versi terbaru yang tersedia pada saat backend dibuat. Jika Anda memiliki persyaratan untuk pembuatan versi dan pengelolaan siklus proses parameter, Anda dapat disematkan ke versi tertentu dengan Cloud Secret Manager. Misalnya, untuk menyematkan versi 5:
- variable: PINNED_API_KEY
secret: myApiKeySecret@5
Anda dapat membuat secret dengan perintah CLI firebase apphosting:secrets:set
,
dan Anda akan diminta untuk
menambahkan izin akses yang diperlukan. Alur ini memberi Anda
untuk menambahkan referensi rahasia ke apphosting.yaml
secara otomatis.
Untuk menggunakan rangkaian lengkap fungsi Cloud Secret Manager, Anda dapat menggunakan
konsol Cloud Secret Manager. Jika Anda melakukan ini, Anda harus memberikan
izin ke backend App Hosting dengan perintah CLI firebase
apphosting:secrets:grantaccess
.
Menyinkronkan status Firebase Auth
Aplikasi yang menggunakan Firebase Auth harus mempertimbangkan penggunaan Firebase Web SDK untuk membantu menjaga
status otentikasi yang
disinkronkan antara klien dan server. Dapat berupa
difasilitasi dengan menerapkan FirebaseServerApp
dengan pekerja layanan. Dasar-dasar
alur tugasnya adalah:
- Mengimplementasikan pekerja layanan yang menambahkan header yang tepat untuk aplikasi Anda pada permintaan ke server.
- Mendapatkan header dari permintaan di server, lalu mengonversinya menjadi autentikasi
dengan
FirebaseServerApp
.
Mengelola backend
Perintah untuk pengelolaan dasar backend App Hosting yang disediakan di CLI Firebase. Agak besar juga tersedia di konsol Firebase. Bagian ini akan menjelaskan beberapa tugas manajemen yang lebih umum, termasuk membuat dan menghapus backend.
Membuat backend
Backend App Hosting adalah kumpulan resource terkelola yang App Hosting buat untuk membangun dan menjalankan aplikasi Web Anda. Anda dapat membuat dan mencantumkan App Hosting backend menggunakan konsol Firebase atau CLI Firebase.
Firebase console: Dari menu Build, pilih App Hosting, lalu Mulai.
CLI: (Versi 3.9 atau yang lebih baru) Untuk membuat backend, jalankan perintah berikut
dari root direktori proyek lokal Anda, yang menyediakan
project ID sebagai argumen (untuk pratinjau,
hanya region us-central1
yang didukung):
firebase apphosting:backends:create --project PROJECT_ID --location us-central1
Untuk konsol atau CLI, ikuti petunjuk untuk menetapkan nama ke backend Anda, untuk tolong atur Koneksi GitHub, dan mengonfigurasi setelan deployment dasar ini:
Menyetel direktori utama aplikasi Anda (default-nya adalah
/
)Biasanya di sinilah file
package.json
Anda berada.
Menetapkan live branch
Ini adalah cabang dari repositori GitHub Anda yang akan di-deploy ke URL aktif. Sering kali, ini adalah cabang tempat cabang atau pengembangan fitur cabang-cabang digabungkan.
Menyetujui atau menolak peluncuran otomatis
Peluncuran otomatis diaktifkan secara default. Setelah selesai membuat backend, Anda dapat memilih agar aplikasi Anda segera di-deploy ke App Hosting.
Hapus backend
Untuk menghapus backend sepenuhnya, pertama-tama gunakan CLI Firebase, lalu secara manual menghapus aset yang terkait, berhati-hatilah agar tidak menghapus sumber daya apa pun mungkin digunakan oleh backend lain atau aspek lain dari project Firebase Anda.
Jalankan perintah berikut untuk menghapus Backend App Hosting. Tindakan ini akan menonaktifkan semua domain untuk backend Anda dan menghapus domain terkait Layanan Cloud Run:
firebase apphosting:backends:delete BACKEND_ID --project PROJECT_ID --location us-central1
(Opsional) Di kolom Tab Konsol Google Cloud untuk Artifact Registry, hapus gambar untuk backend Anda di "firebaseapphosting-images".
Di Cloud Secret Manager, hapus rahasia dengan "apphosting" dengan menggunakan nama rahasia, mengambil memastikan bahwa rahasia ini tidak digunakan oleh {i>backend<i} lain atau aspek lain dari project Firebase.