App Hosting telah dirancang untuk kemudahan penggunaan dan pemeliharaan yang rendah, dengan setelan default yang dioptimalkan untuk sebagian besar kasus penggunaan. Pada saat yang sama, App Hosting menyediakan alat bagi Anda untuk mengelola dan mengonfigurasi backend untuk 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
file apphosting.yaml
di direktori utama aplikasi. File ini juga
mendukung referensi ke secret yang dikelola
dengan Cloud Secret Manager, sehingga aman untuk diperiksa ke dalam kontrol sumber.
Untuk membuat apphosting.yaml
, jalankan perintah berikut:
firebase init apphosting
Tindakan ini akan membuat file apphosting.yaml
awal dasar dengan contoh konfigurasi
(diberi komentar). Setelah pengeditan, file apphosting.yaml
standar mungkin akan terlihat seperti berikut, 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 setelan ini.
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 penayangan dalam MiB (default 512)maxInstances
– Jumlah maksimum container yang pernah dijalankan pada satu waktu (default 100 dan dikelola berdasarkan kuota)minInstances
– Jumlah penampung yang akan selalu aktif (default 0).concurrency
– Jumlah permintaan maksimum yang dapat diterima setiap instance penayangan (default 80).
Perhatikan hubungan penting antara cpu
dan memoryMiB
; memori dapat ditetapkan
ke nilai bilangan bulat antara 128 hingga 32768, tetapi meningkatkan batas memori mungkin
memerlukan peningkatan batas CPU:
- Lebih dari 4 GiB memerlukan minimal 2 CPU
- Lebih dari 8 GiB memerlukan minimal 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 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 memerlukan konfigurasi tambahan untuk proses build, seperti
kunci API pihak ketiga atau setelan yang dapat disesuaikan. App Hosting menawarkan konfigurasi lingkungan di apphosting.yaml
untuk menyimpan dan mengambil jenis data ini untuk project Anda.
env:
- variable: STORAGE_BUCKET
value: mybucket.appspot.com
Untuk aplikasi Next.js, file dotenv yang berisi variabel lingkungan juga akan berfungsi dengan App Hosting. Sebaiknya gunakan apphosting.yaml
untuk kontrol variabel lingkungan terperinci 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 agar hanya tersedia untuk lingkungan build atau hanya tersedia untuk lingkungan runtime. Secara default, fitur 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
dalam file dotenv 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. Beberapa kunci variabel lingkungan dicadangkan untuk penggunaan internal. Jangan gunakan kunci berikut dalam file konfigurasi Anda:
- Setiap variabel 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
mereferensikan secret di apphosting.yaml
untuk menghindari pemeriksaan informasi sensitif
ke dalam kontrol sumber.
Parameter jenis secret
mewakili parameter string yang memiliki nilai yang disimpan di Cloud Secret Manager.
Alih-alih
mengambil nilai secara langsung, parameter secret memeriksa keberadaan nilai 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 live Anda disematkan ke versi secret terbaru yang tersedia pada saat backend dibuat. Jika Anda memiliki persyaratan untuk pembuatan versi dan pengelolaan siklus proses parameter, Anda dapat mengaitkan ke versi tertentu dengan Cloud Secret Manager. Misalnya, untuk menyematkan ke 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 yang diperlukan. Alur ini memberi Anda
opsi untuk menambahkan referensi secret secara otomatis ke apphosting.yaml
.
Untuk menggunakan rangkaian lengkap fungsi Cloud Secret Manager, Anda dapat menggunakan konsol Cloud Secret Manager. Jika melakukannya, 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 untuk menggunakan Firebase Web SDK untuk membantu menjaga status autentikasi tetap disinkronkan antara klien dan server. Hal ini dapat
dimudahkan dengan menerapkan FirebaseServerApp
dengan pekerja layanan. Alur tugas dasar adalah:
- Terapkan pekerja layanan yang menambahkan header yang tepat untuk aplikasi Anda pada permintaan ke server.
- Dapatkan header dari permintaan di server, dan konversikan ke pengguna autentikasi dengan
FirebaseServerApp
.
Mengelola backend
Perintah untuk pengelolaan dasar backend App Hosting disediakan di Firebase CLI. Beberapa operasi juga tersedia di konsol Firebase. Bagian ini akan menjelaskan beberapa tugas pengelolaan yang lebih umum, termasuk membuat dan menghapus backend.
Membuat backend
Backend App Hosting adalah kumpulan resource terkelola yang dibuat App Hosting untuk membangun dan menjalankan aplikasi Web Anda. Anda dapat membuat dan mencantumkan backend App Hosting menggunakan konsol Firebase atau Firebase CLI.
Firebase console: Dari menu Build, pilih App Hosting, lalu Get started.
CLI: (Versi 13.15.4 atau yang lebih baru) Untuk membuat backend, jalankan perintah berikut dari root direktori project lokal Anda, dengan memberikan projectID dan region pilihan sebagai argumen:
firebase apphosting:backends:create --project PROJECT_ID --location us-central1
Untuk konsol atau CLI, ikuti petunjuk untuk menetapkan nama ke backend Anda, untuk menyiapkan koneksi GitHub, dan mengonfigurasi setelan deployment dasar ini:
Tetapkan direktori utama aplikasi (defaultnya
/
)Biasanya, file
package.json
Anda berada di sini.
Menetapkan live branch
Ini adalah cabang repositori GitHub Anda yang di-deploy ke URL aktif Anda. Sering kali, ini adalah cabang tempat cabang fitur atau cabang pengembangan digabungkan.
Menerima atau menolak peluncuran otomatis
Peluncuran otomatis diaktifkan secara default. Setelah pembuatan backend selesai, Anda dapat memilih agar aplikasi segera di-deploy ke App Hosting.
Hapus backend
Untuk menghapus backend sepenuhnya, gunakan Firebase CLI terlebih dahulu, lalu hapus secara manual aset terkait, dengan berhati-hati agar tidak menghapus resource apa pun yang 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 layanan Cloud Run terkait:
firebase apphosting:backends:delete BACKEND_ID --project PROJECT_ID --location us-central1
(Opsional) Di tab Google Cloud Console untuk Artifact Registry, hapus image untuk backend Anda di "firebaseapphosting-images".
Di Cloud Secret Manager, hapus secret apa pun dengan "apphosting" dalam nama secret, dengan perhatian khusus untuk memastikan secret ini tidak digunakan oleh backend lain atau aspek lain dari project Firebase Anda.