إعداد وإدارة الخلفيات الخاصة باستضافة التطبيقات

تم تصميم استضافة App Hosting لتيسير الاستخدام والصيانة البسيطة، من خلال الإعدادات التلقائية المحسَّنة لمعظم حالات الاستخدام في الوقت نفسه، توفّر لك خدمة "استضافة التطبيقات" أدوات لإدارة الخلفيات وإعدادها لاحتياجاتك الخاصة. يصف هذا الدليل تلك الأدوات والعمليات.

إعداد واجهة خلفية

للضبط المتقدّم، مثل متغيّرات البيئة أو إعدادات وقت التشغيل مثل التزامن ووحدة المعالجة المركزية وحدود الذاكرة، ستحتاج إلى إنشاء ملف apphosting.yaml في الدليل الجذري لتطبيقك. يحتوي هذا الملف أيضًا يدعم مراجع الأسرار المُدارة مع Cloud Secret Manager، ما يجعل من الآمن التحقّق من عنصر التحكّم في المصدر.

إليك الشكل الذي قد يبدو عليه ملف apphosting.yaml العادي، مع إعدادات خدمة Cloud Run في الخلفية، وبعض متغيرات البيئة، وبعض مراجع للأسرار التي يديرها 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

يقدّم باقي هذا الدليل مزيدًا من المعلومات والسياق لهذا المثال. الإعدادات.

ضبط إعدادات خدمة Cloud Run

باستخدام إعدادات apphosting.yaml، يمكنك ضبط كيفية خدمة تشغيل السحابة الإلكترونية هي توفير المتطلبات اللازمة. الإعدادات المتاحة تتوفر خدمة تشغيل السحابة الإلكترونية في الكائن runConfig:

  • cpu – عدد وحدات المعالجة المركزية المستخدَمة لكل مثيل عرض (القيمة التلقائية 0).
  • memoryMiB – مقدار الذاكرة المخصصة لكل مثيل عرض بالميبيبايت (الخطأ الافتراضي 512)
  • maxInstances – الحد الأقصى لعدد الحاويات التي يمكن تشغيلها في وقت واحد (الإعداد التلقائي من 100 وتدير حسب الحصة)
  • minInstances – عدد الحاويات المطلوب الاحتفاظ بها دائمًا (القيمة التلقائية 0).
  • concurrency – الحد الأقصى لعدد الطلبات التي يمكن لكل مثيل عرض أن يقوم استلام (القيمة التلقائية 80).

لاحِظ العلاقة المهمة بين "cpu" و"memoryMiB". يمكن ضبط الذاكرة إلى أي قيمة عددية بين 128 و32768، ولكن قد تؤدي زيادة حد الذاكرة إلى زيادة حدود وحدة المعالجة المركزية (CPU):

  • يجب استخدام وحدتَي معالجة مركزية (CPU) على الأقل مع ما يزيد عن 4 غيبي بايت
  • يتطلب استخدام أكثر من 8 غيبي بايت 4 وحدات معالجة مركزية (CPU) على الأقل.
  • يتطلب استخدام أكثر من 16 غيبي بايت استخدام 6 وحدات معالجة مركزية (CPU) على الأقل.
  • يجب استخدام 8 وحدات معالجة مركزية (CPU) على الأقل مع ما يزيد عن 24 غيبي بايت.

وبالمثل، تؤثر قيمة cpu في إعدادات المزامنة. في حال تحديد قيمة أقل من وحدة معالجة مركزية (CPU) واحدة، ويجب ضبط التزامن على 1، وسيتم تخصيص وحدة المعالجة المركزية (CPU) فقط أثناء معالجة الطلب.

ضبط بيئة الإصدار

ستحتاج في بعض الأحيان إلى إعدادات إضافية لعملية التصميم، مثل مفاتيح واجهة برمجة التطبيقات التابعة لجهة خارجية أو الإعدادات القابلة للضبط بيئة تقدّم App Hosting الإعدادات في apphosting.yaml لتخزين هذه البيانات واستردادها. ونوع البيانات لمشروعك.

env:
-   variable: STORAGE_BUCKET
    value: mybucket.appspot.com

بالنسبة لتطبيقات Next.js، فإن ملفات dotenv تحتوي على المتغيّرات البيئية سيقوم أيضًا مع استضافة التطبيقات. ننصحك باستخدام السمة apphosting.yaml لإجراء تعديلات دقيقة التحكم في متغير البيئة باستخدام أي إطار عمل.

في apphosting.yaml، يمكنك تحديد العمليات التي يمكنها الوصول إلى متغير البيئة باستخدام السمة availability. يمكنك تقييد متغير البيئة ليكون متاحًا لبيئة الإصدار فقط أو متاح مع بيئة وقت التشغيل فقط. وتكون هذه الميزة متاحة لكليهما تلقائيًا.

env:
-   variable: STORAGE_BUCKET
    value: mybucket.appspot.com
    availability:
    -   BUILD
    -   RUNTIME

بالنسبة إلى تطبيقات Next.js، يمكنك أيضًا استخدام بادئة NEXT_PUBLIC_ بالطريقة نفسها في ملف dotenv لديك لإتاحة الوصول إلى متغير في المتصفح.

env:
-   variable: NEXT_PUBLIC_STORAGE_BUCKET
    value: mybucket.appspot.com
    availability:
    -   BUILD
    -   RUNTIME

تتكون مفاتيح المتغير الصالحة من أحرف A-Z أو شرطات سفلية. بعض الإشعارات يتم حجز مفاتيح متغيرات البيئة للاستخدام الداخلي. لا تستخدم أيًا مما يلي المفاتيح في ملفات التهيئة:

  • أي متغيّر يبدأ بـ X_FIREBASE_
  • PORT
  • K_SERVICE
  • K_REVISION
  • K_CONFIGURATION

تخزين المعلمات السرية والوصول إليها

يجب تخزين المعلومات الحساسة مثل مفاتيح واجهة برمجة التطبيقات كمعلومات سرية. يمكنك مراجع سرية في apphosting.yaml لتجنُّب التحقق من المعلومات الحساسة في التحكم في المصدر.

تمثِّل المَعلمات من النوع secret مَعلمات سلسلة تحتوي على قيمة. البيانات المخزَّنة في Cloud Secret Manager. بدلاً من التي تستمد القيمة مباشرةً، تتحقق المعلمات السرية من وجودها في السحابة Secret Manager، وقم بتحميل القيم أثناء الطرح.

  -   variable: API_KEY
      secret: myApiKeySecret

يمكن أن يكون للأسرار في Cloud Secret Manager عدة إصدارات. بشكل افتراضي، يتم تثبيت قيمة المعلَمة السرية المتاحة في الواجهة الخلفية المباشرة في أحدث إصدار متاح من السر في وقت إنشاء الواجهة الخلفية. إذا كنت متطلبات لتحديد الإصدارات وإدارة مراحل النشاط للمعلمات، يمكنك والتثبيت على إصدارات محددة باستخدام Cloud Secret Manager على سبيل المثال، للتثبيت على الإصدار 5:

  - variable: PINNED_API_KEY
    secret: myApiKeySecret@5

يمكنك إنشاء المفاتيح السرّية باستخدام أمر واجهة سطر الأوامر firebase apphosting:secrets:set (CLI). وسيُطلب منك إضافة الأذونات اللازمة يمنحك هذا التدفق لإضافة المرجع السرّي إلى apphosting.yaml تلقائيًا.

لاستخدام الحزمة الكاملة من وظائف Cloud Secret Manager، يمكنك بدلاً من ذلك استخدام وحدة تحكم Cloud Secret Manager إذا قمت بذلك، فستحتاج إلى منح أذونات للواجهة الخلفية لاستضافة التطبيق باستخدام أمر واجهة سطر الأوامر firebase apphosting:secrets:grantaccess

مزامنة حالة مصادقة Firebase

ننصح التطبيقات التي تستخدم مصادقة Firebase باستخدام حزمة تطوير البرامج (SDK) على الويب لمنصة Firebase للمساعدة في الحفاظ على حالة المصادقة المتزامنة بين العميل والخادم. يمكن أن تظهر فائدة هذا بوضوح أكبر من خلال تنفيذ FirebaseServerApp مع مشغّل الخدمات. الطريقة الأساسية تدفق المهمة هو:

  1. تنفيذ مشغّل الخدمات تُضيف العناوين المناسبة لتطبيقك في الطلبات المقدَّمة إلى الخادم.
  2. احصل على العناوين من الطلب على الخادم، وحوِّلها إلى طلب مصادقة. مستخدم لديه FirebaseServerApp.

إدارة الخلفيات

تتمثل أوامر الإدارة الأساسية للواجهات الخلفية لاستضافة التطبيقات في ما يلي: الواردة في واجهة سطر الأوامر في Firebase بعض الإشعارات تتوفر العمليات أيضًا في وحدة تحكم Firebase. سيعتمد هذا القسم ووصف بعض مهام الإدارة الأكثر شيوعًا، بما في ذلك إنشاء حذف الخلفيات.

إنشاء واجهة خلفية

الواجهة الخلفية لاستضافة التطبيق هي مجموعة من الموارد المُدارة التي تنشئ ميزة "استضافة التطبيقات" لإنشاء تطبيق الويب وتشغيله. يمكنك إنشاء قائمة الواجهات الخلفية لاستضافة التطبيقات باستخدام وحدة تحكُّم Firebase واجهة سطر الأوامر في Firebase:

وحدة تحكم Firebase: من قائمة إنشاء، اختر استضافة التطبيق ثم البدء

CLI: (الإصدار 3.9 أو إصدار أحدث) لإنشاء واجهة خلفية، شغِّل الأمر التالي من جذر دليل المشروع المحلي، وتوفير رقم تعريف المشروع كوسيطة (للمعاينة، يتم اعتماد منطقة us-central1 فقط):

firebase apphosting:backends:create --project PROJECT_ID --location us-central1

لكل من وحدة التحكم أو واجهة سطر الأوامر، اتبع التعليمات لتعيين اسم للواجهة الخلفية إعداد اتصال GitHub وضبط إعدادات النشر الأساسية التالية:

  • ضبط الدليل الجذر لتطبيقك (القيمة التلقائية على /)

    وعادةً ما يكون هذا هو المكان الذي يتم وضع ملف package.json فيه.

  • ضبط الفرع المباشر

    وهذا هو فرع مستودع جيت هب الذي يتم نشره في عنوان URL منشور. غالبًا ما يكون الفرع الذي يميز الفروع أو النمو دمج فروعها.

  • قبول عمليات الطرح التلقائي أو رفضها

    تكون عمليات الطرح التلقائية مفعَّلة تلقائيًا. عند الانتهاء من إنشاء الخلفية يمكنك اختيار نشر تطبيقك على "استضافة التطبيقات" على الفور.

حذف واجهة خلفية

لإزالة واجهة خلفية بالكامل، استخدِم أولاً واجهة سطر الأوامر في Firebase ثم يدويًا. إزالة الأصول ذات الصلة، مع الحرص الخاص على عدم حذف أي موارد ويمكن استخدامها في خلفيات أخرى أو في جوانب أخرى من مشروع Firebase.

  1. شغِّل الأمر التالي لحذف واجهة استضافة التطبيق. سيؤدي ذلك إلى إيقاف جميع النطاقات للواجهة الخلفية وحذف الملف المرتبط بها خدمة تشغيل السحابة الإلكترونية:

    firebase apphosting:backends:delete BACKEND_ID --project PROJECT_ID --location us-central1
    
  2. (اختياري) في قسم علامة التبويب Google Cloud Console الخاصة بخدمة Artifact Registry، احذف صورة الخلفية في "firebaseapphosting-images".

  3. في Cloud Secret Manager، حذف أي أسرار تتضمّن "apphosting" بالاسم السري، مع أخذ طابع خاص احرص على عدم استخدام هذه الأسرار من قبل خلفيات أو والجوانب الأخرى لمشروع Firebase.