لمحة عن هذا الدرس التطبيقي حول الترميز
1. مقدمة
نظرة عامة
تتيح لك نُسخ Cloud Run تحديد النُسخ التي يجب أن تتلقّى الزيارات والنسبة المئوية للزيارات التي سيتم إرسالها إلى كل نسخة. تتيح لك المراجعات التراجع إلى مراجعة سابقة، وطرح مراجعة تدريجيًا، وتقسيم عدد الزيارات بين مراجعات متعددة.
توضّح لك هذه المراجعات كيفية استخدام المراجعات لإدارة عدد الزيارات إلى خدمة Cloud Run. يمكنك الاطّلاع على مزيد من المعلومات عن المراجعات في مستندات Cloud Run.
ما ستتعرّف عليه
- كيفية تقسيم الزيارات بين نسختَين أو أكثر من خدمة Cloud Run
- كيفية طرح نسخة جديدة تدريجيًا
- كيفية الرجوع إلى إصدار سابق
2. الإعداد والمتطلبات
المتطلبات الأساسية
- أن تكون مسجِّلاً الدخول إلى Cloud Console
- سبق لك نشر خدمة Cloud Run. على سبيل المثال، يمكنك اتّباع خطوات نشر خدمة Cloud Run للبدء.
ضبط متغيّرات البيئة
يمكنك ضبط متغيّرات البيئة التي سيتم استخدامها في هذا المختبر البرمجي.
PROJECT_ID=YOUR-PROJECT-ID
REGION=YOUR_REGION
BG_COLOR=darkseagreen
SERVICE_NAME=traffic-revisions-color
AR_REPO=traffic-revisions-color-repo
أنشئ مستودعًا في Artifact Registry للخدمة.
gcloud artifacts repositories create $AR_REPO \
--repository-format=docker \
--location=$REGION \
--description="codelab for finetuning using CR jobs" \
--project=$PROJECT_ID
3. تقسيم عدد الزيارات
يوضّح لك هذا المثال كيفية إنشاء خدمة Cloud Run تقرأ متغيّر بيئة اللون وتردّ باسم المراجعة باستخدام لون الخلفية هذا.
على الرغم من أنّ هذا الدليل التعليمي يستخدم لغة Python، يمكنك استخدام أيّ وقت تشغيل.
ضبط متغيّرات البيئة
يمكنك ضبط متغيّرات البيئة التي سيتم استخدامها في هذا المختبر البرمجي.
REGION=<YOUR_REGION> PROJECT_ID=<YOUR-PROJECT-ID> BG_COLOR=darkseagreen SERVICE_NAME=traffic-revisions-color AR_REPO=traffic-revisions-color-repo
إنشاء الخدمة
أولاً، أنشئ دليلاً لرمز المصدر وانتقِل إليه باستخدام الأمر cd.
mkdir traffic-revisions-codelab && cd $_
بعد ذلك، أنشِئ ملف main.py
يتضمّن المحتوى التالي:
import os from flask import Flask, render_template_string app = Flask(__name__) TEMPLATE = """ <!doctype html> <html lang="en"> <head> <title>Cloud Run Traffic Revisions</title> <style> body { display: flex; justify-content: center; align-items: center; min-height: 50vh; background-color: {{ bg_color }}; /* Set by environment variable */ font-family: sans-serif; } .content { background-color: rgba(255, 255, 255, 0.8); /* Semi-transparent white background */ padding: 2em; border-radius: 8px; text-align: center; box-shadow: 0 4px 8px rgba(0,0,0,0.1); } </style> </head> <body> <div class="content"> <p>background color: <strong>{{ color_name }}</strong></p> </div> </body> </html> """ @app.route('/') def main(): """Serves the main page with a background color from the ENV.""" # Get the color from the 'BG_COLOR' environment variable. # Default to 'white' if the variable is not set. color = os.environ.get('BG_COLOR', 'white').lower() return render_template_string(TEMPLATE, bg_color=color, color_name=color) if __name__ == '__main__': port = int(os.environ.get('PORT', 8080)) app.run(debug=True, host='0.0.0.0', port=port)
بعد ذلك، أنشئ ملف requirements.txt
يتضمّن المحتوى التالي:
Flask>=2.0.0 gunicorn>=20.0.0
أخيرًا، أنشئ Dockerfile
.
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8080
ENV PYTHONPATH /app
CMD ["gunicorn", "--bind", "0.0.0.0:8080", "main:app"]
أنشئ الصورة في Artifact Registry باستخدام حِزم Buildpacks من خلال Cloud Build:
gcloud builds submit \
--tag $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$SERVICE_NAME
ونشر النسخة الأولى على Cloud Run باستخدام اللون الأخضر الداكن:
gcloud run deploy $SERVICE_NAME \
--image $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$SERVICE_NAME:latest \
--region $REGION \
--allow-unauthenticated \
--set-env-vars BG_COLOR=darkseagreen
لاختبار الخدمة، يمكنك فتح نقطة النهاية مباشرةً في متصفّح الويب للاطّلاع على لون الخلفية باللون الأخضر الداكن.
الآن، يمكنك نشر نسخة ثانية بلون خلفية بني فاتح.
# update the env var BG_COLOR=tan gcloud run deploy $SERVICE_NAME \ --image $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$SERVICE_NAME:latest \ --region $REGION \ --set-env-vars BG_COLOR=tan
الآن عند إعادة تحميل الموقع الإلكتروني، سيظهر لك لون الخلفية البني.
تقسيم عدد الزيارات بنسبة 50/50
لتقسيم عدد الزيارات بين الإصدارَين الأخضر الداكن والبني، عليك العثور على أرقام تعريف الإصدارات لخدمات Cloud Run الأساسية. يمكنك الاطّلاع على أرقام تعريف المراجعات من خلال تنفيذ هذا الأمر:
gcloud run revisions list --service $SERVICE_NAME \ --region $REGION --format 'value(REVISION)'
من المفترض أن تظهر لك نتائج مشابهة للنتائج أدناه.
traffic-revisions-color-00003-qoq traffic-revisions-color-00002-zag
يمكنك تقسيم عدد الزيارات بنسبة 50/50 بين النسختَين من خلال تنفيذ الأمر التالي مع النُسخ:
gcloud run services update-traffic $SERVICE_NAME \ --region $REGION \ --to-revisions YOUR_REVISION_1=50,YOUR_REVISION_2=50
اختبار تقسيم عدد الزيارات
يمكنك اختبار الخدمة من خلال إعادة تحميل الصفحة في المتصفّح.
من المفترض أن تظهر لك النسخة ذات اللون الأخضر الداكن في نصف الوقت، وفي النصف الآخر، ستظهر لك النسخة ذات اللون البني. سيظهر لك أيضًا اسم المراجعة في الإخراج، على سبيل المثال:
<html><body style="background-color:tan;"><div><p>Hello traffic-revisions-color-00003-qoq</p></div></body></html>
4. عمليات الطرح التدريجي
في هذا القسم، ستتعرّف على كيفية طرح التغييرات تدريجيًا في إصدار جديد من "خدمة السحابة الإلكترونية". يمكنك الاطّلاع على مزيد من المعلومات عن عمليات الطرح التدريجي في المستندات.
ستستخدم الرمز البرمجي نفسه المستخدَم في القسم السابق، ولكنك ستنشره كخدمة جديدة على Cloud Run.
أولاً، اضبط لون الخلفية على beige
ونشر الدالة باسم gradual-rollouts-colors
.
لنشر دالة Cloud Run مباشرةً على Cloud Run، نفِّذ الأمر التالي:
# update the env var BG_COLOR=beige gcloud beta run deploy gradual-rollouts-colors \ --image $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$SERVICE_NAME:latest \ --region $REGION \ --allow-unauthenticated \ --update-env-vars BG_COLOR=$BG_COLOR
لنفترض الآن أنّنا نريد طرح نسخة جديدة تدريجيًا باستخدام لون الخلفية البنفسجي.
أولاً، لنضبط النسخة الحالية على اللون البيج لتلقّي% 100 من الزيارات. سيضمن لك ذلك عدم تلقّي نُسخك المعدَّلة المستقبلية أي زيارات. بشكلٍ تلقائي، تضبط Cloud Run نسبة% 100 من عدد الزيارات على المراجعة التي تحمل العلامة latest
. من خلال تحديد يدويًا أنّ هذه النسخة الحالية من المراجعة هي التي يجب أن تتلقّى كل الزيارات، لن تتلقّى النسخة التي تحمل العلامة latest
نسبة% 100 من الزيارات. اطّلِع على المستندات.
# get the revision name BEIGE_REVISION=$(gcloud run revisions list --service gradual-rollouts-colors \ --region $REGION --format 'value(REVISION)') # now set 100% traffic to that revision gcloud run services update-traffic gradual-rollouts-colors \ --to-revisions=$BEIGE_REVISION=100 \ --region $REGION
سيظهر لك ناتج مشابه لما يلي: Traffic: 100% radual-rollouts-colors-00001-yox
يمكنك الآن نشر نسخة جديدة لن تتلقّى أيّ زيارات. بدلاً من إجراء أي تغييرات على الرمز، يمكنك تعديل متغيّر البيئة BG_COLOR لهذه النسخة.
لنشر دالة Cloud Run مباشرةً على Cloud Run، نفِّذ الأمر التالي:
# update color BG_COLOR=lavender # deploy the function that will not receive any traffic gcloud beta run deploy gradual-rollouts-colors \ --image $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$SERVICE_NAME:latest \ --region $REGION \ --allow-unauthenticated \ --update-env-vars BG_COLOR=$BG_COLOR
والآن عند زيارة الموقع الإلكتروني في المتصفّح، سيظهر لك اللون البيج، على الرغم من أنّ اللون البنفسجي هو النسخة التي تم نشرها مؤخرًا.
اختبار مراجعة تعرض 0% من الزيارات
لنفترض أنّك تأكّدت من أنّه تم نشر المراجعة بنجاح وأنّها تعرِض 0% من الزيارات. على الرغم من أنّه اجتاز عمليات التحقّق من الصحة، لا يزال عليك التأكّد من أنّ هذه النسخة تستخدم لون الخلفية البنفسجي.
لاختبار المراجعة باللون البنفسجي، يمكنك تطبيق علامة على هذه المراجعة. تتيح لك ميزة وضع العلامات اختبار النسخة الجديدة مباشرةً على عنوان URL محدّد، بدون عرض الزيارات.
أولاً، احصل على عنوان URL للصورة لهذه النسخة الأخيرة (وهي باللون البنفسجي).
IMAGE_URL_LAVENDER=$(gcloud run services describe gradual-rollouts-colors --region $REGION --format 'value(IMAGE)')
والآن، يمكنك الإشارة إلى هذه الصورة باللون المرتبط بها.
gcloud run deploy gradual-rollouts-colors --image $IMAGE_URL_LAVENDER --no-traffic --tag $BG_COLOR --region $REGION
سيظهر لك ناتج مشابه لما يلي:
The revision can be reached directly at https://lavender---gradual-rollouts-colors-<hash>-<region>.a.run.app
الآن، عند الانتقال إلى عنوان URL المحدّد للمراجعة، سيظهر لك اللون البنفسجي.
زيادة عدد الزيارات تدريجيًا
يمكنك الآن بدء إرسال الزيارات إلى النسخة البنفسجية. يوضّح المثال أدناه كيفية إرسال% 1 من الزيارات إلى lavender.
gcloud run services update-traffic gradual-rollouts-colors --region $REGION --to-tags lavender=1
لإرسال% 50 من الزيارات إلى اللون البنفسجي، يمكنك استخدام الأمر نفسه، ولكن حدِّد% 50 بدلاً من ذلك.
gcloud run services update-traffic gradual-rollouts-colors --region $REGION --to-tags lavender=50
من المفترض أن تظهر لك قائمة بعدد الزيارات التي تتلقّاها كل نسخة من المراجعة.
Traffic: 50% gradual-rollouts-colors-00001-hos 50% gradual-rollouts-colors-00004-mum lavender: https://lavender---gradual-rollouts-colors-<hash>-<region>.a.run.app
عندما تكون مستعدًا لطرح اللون البنفسجي الفاتح بالكامل، يمكنك ضبطه على 100% ليحلّ محلّ اللون البيج.
gcloud run services update-traffic gradual-rollouts-colors --region $REGION --to-tags lavender=100
والآن عند زيارة الموقع الإلكتروني، لن يظهر لك سوى اللون الأرجواني.
5. عمليات التراجع
لنفترض أنّه تم تلقّي ملاحظات مبكّرة حول تجربة المستخدم تشير إلى أنّ العملاء يفضّلون اللون البيج على البنفسجي، وأنّك بحاجة إلى الرجوع إلى اللون البيج.
يمكنك الرجوع إلى النسخة السابقة (بيج) من خلال تنفيذ هذا الأمر:
gcloud run services update-traffic gradual-rollouts-colors --region $REGION --to-revisions $BEIGE_REVISION=100
والآن عند زيارة الموقع الإلكتروني، سيظهر لك اللون البيج كخلفية.
يمكنك الاطّلاع على مزيد من المعلومات عن عمليات التراجع في المستندات.
6. تهانينا!
تهانينا على إكمال دورة codelab.
ننصحك بمراجعة المستندات حول عمليات الطرح وإلغاء الطرح ونقل الزيارات.
المواضيع التي تناولناها
- كيفية تقسيم الزيارات بين نسختَين أو أكثر من خدمة Cloud Run
- كيفية طرح نسخة جديدة تدريجيًا
- كيفية الرجوع إلى إصدار سابق
7. تَنظيم
لتجنُّب الرسوم غير المقصودة (على سبيل المثال، إذا تمّ استدعاء وظيفة Cloud Run هذه بدون قصد أكثر من المساحة المخصّصة لك شهريًا لاستدعاء Cloud Run في الفئة المجانية)، يمكنك إما حذف خدمة Cloud Run أو حذف المشروع الذي أنشأته في الخطوة 2.
لحذف خدمة Cloud Run، انتقِل إلى Cloud Run في Cloud Console على الرابط https://console.cloud.google.com/run/ واحذِف الدوالّ التي أنشأتها في هذا الدليل التعليمي.
إذا اخترت حذف المشروع بأكمله، يمكنك الانتقال إلى https://console.cloud.google.com/cloud-resource-manager واختيار المشروع الذي أنشأته في الخطوة 2 ثم اختيار "حذف". في حال حذف المشروع، عليك تغيير المشاريع في حزمة Cloud SDK. يمكنك عرض قائمة بجميع المشاريع المتاحة من خلال تشغيل gcloud projects list
.