لإجراء عملية ضبط متقدّمة، مثل متغيّرات البيئة أو إعدادات وقت التشغيل،
مثل التزامن ووحدة المعالجة المركزية (CPU) وحدود الذاكرة، عليك إنشاء
ملف 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
، يمكنك ضبط طريقة توفير المتطلبات اللازمة لخدمة Cloud Run. يتم توفير الإعدادات المتاحة لخدمة التشغيل في السحابة الإلكترونية في الكائن 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
في إعدادات المزامنة. إذا تم ضبط قيمة أقل من وحدة معالجة مركزية واحدة، يجب ضبط التزامن على 1، ولن يتم تخصيص وحدة المعالجة المركزية
إلا أثناء معالجة الطلب.
ضبط بيئة الإصدار
قد تحتاج أحيانًا إلى ضبط إعدادات إضافية لعملية التصميم، مثل مفاتيح واجهة برمجة التطبيقات التابعة لجهات خارجية أو الإعدادات القابلة للضبط. توفّر خدمة "استضافة التطبيقات" إعدادًا للبيئة في 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.
بدلاً من اشتقاق القيمة مباشرةً، تتحقق المعلمات السرية من وجودها في Cloud 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
،
وسيُطلب منك إضافة الأذونات اللازمة. يتيح لك هذا المسار إضافة
المرجع السري تلقائيًا إلى apphosting.yaml
.
لاستخدام الحزمة الكاملة من وظائف Cloud Secret Manager، يمكنك بدلاً من ذلك استخدام
وحدة تحكّم Cloud Secret Manager. في حال إجراء ذلك، عليك منح
الأذونات إلى واجهة "استضافة التطبيقات" باستخدام أمر واجهة سطر الأوامر firebase
apphosting:secrets:grantaccess
.
مزامنة حالة مصادقة Firebase
ننصح التطبيقات التي تستخدم مصادقة Firebase باستخدام حزمة تطوير البرامج (SDK) للويب في Firebase للمساعدة في الحفاظ على مزامنة حالة المصادقة بين العميل والخادم. ويمكن تسهيل ذلك من خلال تنفيذ FirebaseServerApp
مع مشغّل خدمات. تدفق المهام الأساسي هو:
- تنفيذ عامل خدمة يضيف العناوين المناسبة لتطبيقك في الطلبات المرسَلة إلى الخادم
- احصل على العناوين من الطلب على الخادم، وحوِّلها إلى مستخدم
مصادق باستخدام
FirebaseServerApp
.