App Hosting telah dirancang agar mudah digunakan dan perawatannya 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 sesuai kebutuhan spesifik Anda. Panduan ini menjelaskan alat dan proses tersebut.
Membuat dan mengedit apphosting.yaml
Untuk konfigurasi lanjutan seperti variabel lingkungan atau setelan runtime seperti batas serentak, CPU, dan memori, Anda harus membuat dan mengedit file apphosting.yaml
di direktori root aplikasi. File ini juga mendukung referensi ke secret yang dikelola dengan Cloud Secret Manager, sehingga aman untuk diperiksa ke kontrol sumber.
Untuk membuat apphosting.yaml
, jalankan perintah berikut:
firebase init apphosting
Tindakan ini akan membuat file apphosting.yaml
dasar dengan contoh konfigurasi (berkomentar). Setelah diedit, file apphosting.yaml
standar mungkin 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.firebasestorage.app
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 informasi dan konteks selengkapnya untuk contoh setelan ini.
Mengonfigurasi setelan layanan Cloud Run
Dengan setelan apphosting.yaml
, Anda dapat mengonfigurasi cara layanan
Cloud Run Anda disediakan. Setelan yang tersedia untuk
layanan Cloud Run diberikan dalam objek runConfig
:
cpu
– Jumlah CPU yang digunakan untuk setiap instance inferensi (default 0).memoryMiB
– Jumlah memori yang dialokasikan untuk setiap instance penayangan dalam MiB (default 512)maxInstances
– Jumlah maksimum container yang pernah dijalankan sekaligus (default 100 dan dikelola oleh kuota)minInstances
– Jumlah penampung yang harus selalu aktif (default 0).concurrency
– Jumlah maksimum permintaan yang dapat diterima setiap instance penayangan (default 80).
Perhatikan hubungan penting antara cpu
dan memoryMiB
; memori dapat ditetapkan
ke nilai bilangan bulat apa pun 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 minimal 6 CPU
- Lebih dari 24 GiB memerlukan minimal 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
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.firebasestorage.app
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 Anda 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.firebasestorage.app
availability:
- BUILD
- RUNTIME
Untuk aplikasi Next.js, Anda juga dapat menggunakan awalan NEXT_PUBLIC_
dengan cara yang sama seperti yang Anda lakukan di file dotenv untuk membuat variabel dapat diakses di browser.
env:
- variable: NEXT_PUBLIC_STORAGE_BUCKET
value: mybucket.firebasestorage.app
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:
- Variabel apa pun yang diawali dengan
X_FIREBASE_
PORT
K_SERVICE
K_REVISION
K_CONFIGURATION
Mengganti skrip build dan run
App Hosting menyimpulkan perintah build dan mulai aplikasi Anda berdasarkan framework yang terdeteksi. Jika ingin menggunakan perintah build atau mulai kustom, Anda dapat mengganti
nilai default App Hosting di apphosting.yaml
.
scripts:
buildCommand: next build --no-lint
runCommand: node dist/index.js
Penggantian perintah build lebih diprioritaskan daripada perintah build lainnya dan
membuat aplikasi Anda tidak menggunakan adaptor framework serta menonaktifkan pengoptimalan
khusus framework yang disediakan App Hosting. Sebaiknya digunakan saat fitur aplikasi Anda tidak didukung dengan baik oleh adaptor. Jika Anda ingin mengubah perintah build
tetapi tetap menggunakan adaptor yang kami sediakan, tetapkan skrip build di package.json
seperti yang dijelaskan dalam adaptor framework App Hosting.
Gunakan penggantian perintah run jika ada perintah tertentu yang ingin Anda gunakan untuk memulai aplikasi yang berbeda dari perintah yang disimpulkan App Hosting.
Mengonfigurasi output build
App Hosting mengoptimalkan deployment aplikasi Anda secara default dengan menghapus file output yang tidak digunakan seperti yang ditunjukkan oleh framework. Jika ingin mengoptimalkan lebih lanjut ukuran deployment aplikasi atau mengabaikan pengoptimalan default, Anda dapat mengganti setelan ini di apphosting.yaml
.
outputFiles:
serverApp:
include: [dist, server.js]
Parameter include
menerima daftar direktori dan file relatif ke
direktori root aplikasi yang diperlukan untuk men-deploy aplikasi Anda. Jika Anda ingin memastikan
semua file tetap ada, tetapkan include ke [.]
dan semua file akan di-deploy.
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 mendapatkan 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 rahasia ke apphosting.yaml
secara otomatis.
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
.
Mengonfigurasi akses VPC
Backend App Hosting Anda dapat terhubung ke jaringan Virtual Private Cloud (VPC). Untuk mengetahui informasi dan contoh selengkapnya, lihat Menghubungkan Firebase App Hosting ke jaringan VPC.
Gunakan pemetaan vpcAccess
dalam file apphosting.yaml
untuk mengonfigurasi akses.
Gunakan nama jaringan yang sepenuhnya memenuhi syarat atau ID. Penggunaan ID memungkinkan portabilitas antara lingkungan staging dan produksi dengan konektor/jaringan yang berbeda.
runConfig:
vpcAccess:
egress: PRIVATE_RANGES_ONLY # Default value
networkInterfaces:
# Specify at least one of network and/or subnetwork
- network: my-network-id
subnetwork: my-subnetwork-id
Mengelola backend
Perintah untuk pengelolaan dasar backend App Hosting disediakan di CLI Firebase dan konsol Firebase. Bagian ini 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.
Firebase console: Dari menu Build, pilih App Hosting, lalu klik Mulai.
CLI: (Versi 13.15.4 atau yang lebih baru) Untuk membuat backend, jalankan perintah berikut dari root direktori project lokal Anda, dengan memberikan projectID sebagai argumen:
firebase apphosting:backends:create --project PROJECT_ID
Untuk konsol atau CLI, ikuti perintah untuk memilih region, menyiapkan koneksi GitHub, dan mengonfigurasi setelan deployment dasar berikut:
Tetapkan direktori root aplikasi Anda (defaultnya adalah
/
)Biasanya, di sinilah file
package.json
Anda berada.
Tetapkan cabang aktif
Ini adalah cabang repositori GitHub Anda yang di-deploy ke URL aktif Anda. Sering kali, cabang ini adalah cabang tempat cabang fitur atau cabang pengembangan digabungkan.
Menyetujui atau menolak peluncuran otomatis
Peluncuran otomatis diaktifkan secara default. Setelah pembuatan backend selesai, Anda dapat memilih agar aplikasi di-deploy ke App Hosting dengan segera.
Tetapkan nama untuk backend Anda.
Hapus backend
Untuk menghapus backend sepenuhnya, pertama-tama gunakan Firebase CLI atau konsol Firebase untuk menghapusnya, lalu hapus aset terkait secara manual, dengan berhati-hati agar tidak menghapus resource yang mungkin digunakan oleh backend lain atau aspek lain dari project Firebase Anda.
Firebase console: Dari menu Setting, pilih Delete backend.
CLI: (Versi 13.15.4 atau yang lebih baru)
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
(Opsional) Di tab Konsol Google Cloud untuk Artifact Registry, hapus image untuk backend Anda di "firebaseapphosting-images".
Di Cloud Secret Manager, hapus semua secret dengan "apphosting" di nama secret, dengan sangat berhati-hati untuk memastikan secret ini tidak digunakan oleh backend lain atau aspek lain dari project Firebase Anda.