Mengonfigurasi dan mengelola backend App Hosting

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:

  1. Mengimplementasikan pekerja layanan yang menambahkan header yang tepat untuk aplikasi Anda pada permintaan ke server.
  2. 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.

  1. 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
    
  2. (Opsional) Di kolom Tab Konsol Google Cloud untuk Artifact Registry, hapus gambar untuk backend Anda di "firebaseapphosting-images".

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