استخدام المراجعات في وظائف Cloud Run لتقسيم الزيارات والعمليات الطرحية التدريجية وإلغاء عمليات الطرح

1. مقدمة

نظرة عامة

تتيح لك وظائف التشغيل في السحابة الإلكترونية تحديد النُسخ السابقة التي يجب أن تتلقى زيارات وتحديد النسب المئوية لعدد الزيارات التي تتلقاها النسخة السابقة. تتيح لك المراجعات التراجع إلى مراجعة سابقة، وطرح مراجعة تدريجيًا، وتقسيم عدد الزيارات بين مراجعات متعددة.

توضّح لك هذه الدروس التطبيقية حول الترميز كيفية استخدام المراجعات لإدارة عدد الزيارات إلى وظائف Cloud Run. يمكنك التعرّف على مزيد من المعلومات عن النُسخ السابقة في مستندات تشغيل Cloud.

ما ستتعرّف عليه

  • كيفية تقسيم الزيارات بين نسختَين أو أكثر من دالة Cloud Run
  • كيفية طرح نسخة جديدة تدريجيًا
  • كيفية الرجوع إلى إصدار سابق

2. الإعداد والمتطلبات

المتطلبات الأساسية

تفعيل Cloud Shell

  1. من Cloud Console، انقر على تفعيل Cloud Shell d1264ca30785e435.png.

cb81e7c8e34bc8d.png

إذا كانت هذه هي المرة الأولى التي تبدأ فيها Cloud Shell، ستظهر لك شاشة وسيطة تصف ماهيتها. إذا ظهرت لك شاشة وسيطة، انقر على متابعة.

d95252b003979716.png

من المفترَض أن تستغرق عملية إدارة الحسابات والاتصال بخدمة Cloud Shell بضع دقائق فقط.

7833d5e1c5d18f54.png

تم تحميل هذه الآلة الافتراضية بجميع أدوات التطوير اللازمة. ويقدّم هذا الدليل دليلاً منزليًا دائمًا بسعة 5 غيغابايت ويتم تشغيله في Google Cloud، ما يُحسِّن بشكل كبير أداء الشبكة والمصادقة. يمكنك تنفيذ معظم عملك، إن لم يكن كلّه، في هذا الدرس التطبيقي حول الترميز باستخدام متصفّح.

بعد الاتصال بـ Cloud Shell، من المفترض أن تظهر لك رسالة تفيد بأنّه تم مصادقة حسابك وأنّه تم ضبط المشروع على معرّف مشروعك.

  1. شغِّل الأمر التالي في Cloud Shell لتأكيد مصادقتك:
gcloud auth list

ناتج الأمر

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. شغِّل الأمر التالي في Cloud Shell للتأكّد من أنّ الأمر gcloud يعرف مشروعك:
gcloud config list project

ناتج الأمر

[core]
project = <PROJECT_ID>

إذا لم يكن كذلك، يمكنك تعيينه من خلال هذا الأمر:

gcloud config set project <PROJECT_ID>

مخرجات الأمر

Updated property [core/project].

3- تقسيم عدد الزيارات

يوضّح لك هذا المثال كيفية إنشاء دالة تقرأ متغيّر بيئة اللون وتردّ باسم المراجعة باستخدام لون الخلفية هذا.

على الرغم من أنّ هذا الدرس التطبيقي يستخدم عقدة.js، يمكنك استخدام أي وقت تشغيل.

ضبط متغيّرات البيئة

يمكنك ضبط متغيّرات البيئة التي سيتم استخدامها في هذا المختبر البرمجي.

REGION=<YOUR_REGION>
PROJECT_ID=<YOUR-PROJECT-ID>
BG_COLOR=darkseagreen

إنشاء الدالة

أولاً، أنشئ دليلاً لرمز المصدر والقرص المضغوط في هذا الدليل.

mkdir revisions-gcf-codelab && cd $_

بعد ذلك، أنشِئ ملف package.json يتضمّن المحتوى التالي:

{
    "dependencies": {
        "@google-cloud/functions-framework": "^3.0.0"
    }
}

بعد ذلك، أنشِئ ملف مصدر index.js يتضمّن المحتوى التالي:

const functions = require('@google-cloud/functions-framework');

const BG_COLOR = process.env.BG_COLOR;
const K_REVISION = process.env.K_REVISION;

functions.http('helloWorld', (req, res) => {
    res.writeHead(200, { 'Content-Type': 'text/html' });
    res.end('<html><body style="background-color:' + BG_COLOR + ';"' + '><div><p>' + 'Hello from ' + K_REVISION + ' using color ' + BG_COLOR + '</p></div></body>' + '</html>');
});

لنشر دالة في Cloud Run مباشرةً على Cloud Run، شغّل الأمر التالي:

gcloud beta run deploy traffic-splitting-gcf \
      --source . \
      --function helloWorld \
      --region $REGION \
      --no-allow-unauthenticated \
      --set-env-vars BG_COLOR=$BG_COLOR

إذا كنت تفضِّل النشر كجيل ثانٍ من Cloud Functions، استخدِم الأمر التالي:

gcloud functions deploy traffic-splitting-gcf \
  --gen2 \
  --runtime=nodejs20 \
  --region=$REGION \
  --source=. \
  --entry-point=helloWorld \
  --trigger-http \
  --no-allow-unauthenticated \
  --set-env-vars BG_COLOR=$BG_COLOR

لاختبار الدالة، يمكنك إما تمرير نقطة النهاية الحالية لمشاهدة اللون الأخضر الداكن في ملف html، أو استخدام المتصفح للوصول إلى نقطة النهاية مباشرةً لرؤية لون الخلفية.

SERVICE_URL=$(gcloud run services describe traffic-splitting-gcf --platform managed --region $REGION --format 'value(status.url)')

curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL

ويمكنك الآن نشر مراجعة ثانية بلون خلفية غامق.

لنشر دالة في Cloud Run مباشرةً على Cloud Run، شغّل الأمر التالي:

# update the env var
BG_COLOR=tan

gcloud beta run deploy traffic-splitting-gcf \
      --source . \
      --function helloWorld \
      --region $REGION \
      --no-allow-unauthenticated \
      --update-env-vars BG_COLOR=$BG_COLOR

إذا كنت تفضّل النشر كخدمة من الجيل الثاني من Cloud Functions، استخدِم الأمر التالي:

# update the env var
BG_COLOR=tan

gcloud functions deploy traffic-splitting-gcf \
  --gen2 \
  --runtime nodejs20 \
  --entry-point helloHttp \
  --source . \
  --region $REGION \
  --trigger-http \
  --no-allow-unauthenticated \
  --update-env-vars BG_COLOR=$BG_COLOR

الآن عند لف نقطة النهاية، سيظهر لك لون الخلفية الأسمر.

curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL

تقسيم عدد الزيارات بنسبة 50/50

لتقسيم حركة البيانات بين المراجعات ذات اللون الأخضر والأخضر الغامق، ستحتاج إلى العثور على معرّفات النسخة السابقة لخدمات Cloud Run الأساسية. يمكنك الاطّلاع على معرّفات النُسخ السابقة من خلال تشغيل الأمر التالي:

gcloud run revisions list --service traffic-splitting-gcf \
  --region $REGION --format 'value(REVISION)'

من المفترض أن تظهر لك نتائج مشابهة لتلك التي تظهر أدناه

traffic-splitting-gcf-00003-qoq
traffic-splitting-gcf-00002-zag

يمكنك تقسيم عدد الزيارات 50/50 بين النسختين عن طريق تشغيل الأمر التالي:

gcloud run services update-traffic traffic-splitting-gcf \
  --region $REGION \
  --to-revisions <REVISION1>=50,<REVISION2>=50

اختبار تقسيم عدد الزيارات

يمكنك اختبار الدالة من خلال الانتقال إلى عنوان URL العلني الخاص بها (إمّا من خلال curl أو من خلال المتصفّح مباشرةً).

curl -H "Authorization: bearer $(gcloud auth print-identity-token)" $SERVICE_URL

من المفترض أن تظهر لك النسخة ذات اللون الأخضر الداكن في نصف الوقت، وفي النصف الآخر النسخة ذات اللون البني. سيظهر لك أيضًا اسم المراجعة في الإخراج، على سبيل المثال:

<html><body style="background-color:tan;"><div><p>Hello traffic-splitting-gcf-00006-qoq</p></div></body></html>

4. عمليات الطرح التدريجية

في هذا القسم، ستتعرّف على كيفية طرح التغييرات تدريجيًا إلى مراجعة جديدة لدالة Cloud. يمكنك الاطّلاع على مزيد من المعلومات حول عمليات الطرح التدريجي في المستندات.

ستستخدم الرمز البرمجي نفسه المستخدَم في القسم السابق، ولكنك ستنشره كوظيفة جديدة في Cloud.

أولاً، اضبط لون الخلفية على beige ونشر الدالة باسم gradual-rollouts-gcf.

لنشر دالة Cloud Run مباشرةً على Cloud Run، نفِّذ الأمر التالي:

# update the env var
BG_COLOR=beige

gcloud beta run deploy gradual-rollouts-gcf \
      --source . \
      --function helloWorld \
      --region $REGION \
      --no-allow-unauthenticated \
      --update-env-vars BG_COLOR=$BG_COLOR

إذا كنت تفضِّل النشر كجيل ثانٍ من Cloud Functions، استخدِم الأمر التالي:

# update the env var
BG_COLOR=beige

# deploy the function
gcloud functions deploy gradual-rollouts-gcf \
  --gen2 \
  --runtime nodejs20 \
  --entry-point helloHttp \
  --source . \
  --region $REGION \
  --trigger-http \
  --no-allow-unauthenticated \
  --update-env-vars BG_COLOR=$BG_COLOR

لنفترض الآن أنّنا نريد طرح نسخة جديدة تدريجيًا باستخدام لون الخلفية البنفسجي.

أولاً، هيا نضبط الإصدار الحالي باللون البيج لتلقي حركة مرور بنسبة 100%. سيضمن ذلك عدم تلقّي عمليات نشر دوالّ Cloud المستقبلية أيّ زيارات. تضبط دوال Cloud تلقائيًا عدد الزيارات على النسخة السابقة بنسبة% 100 باستخدام علامة latest. من خلال تحديد يدويًا أنّ هذه النسخة الحالية من المراجعة هي النسخة التي يجب أن تتلقّى كل الزيارات، لن تتلقّى النسخة التي تحمل العلامة latest نسبة 100% من الزيارات. اطّلِع على المستندات.

# get the revision name

BEIGE_REVISION=$(gcloud run revisions list --service gradual-rollouts-gcf \
  --region $REGION --format 'value(REVISION)')

# now set 100% traffic to that revision

gcloud run services update-traffic gradual-rollouts-gcf --to-revisions=$BEIGE_REVISION=100 --region $REGION

سيظهر لك ناتج مشابه لما يلي: Traffic: 100% gradual-rollouts-gcf2-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-gcf \
      --source . \
      --function helloWorld \
      --region $REGION \
      --no-allow-unauthenticated \
      --update-env-vars BG_COLOR=$BG_COLOR

إذا كنت تفضّل النشر كخدمة من الجيل الثاني من Cloud Functions، استخدِم الأمر التالي:

# update color

BG_COLOR=lavender

# deploy the function that will not receive any traffic
gcloud functions deploy gradual-rollouts-gcf \
  --gen2 \
  --runtime nodejs20 \
  --entry-point helloHttp \
  --source . \
  --region $REGION \
  --trigger-http \
  --no-allow-unauthenticated \
  --update-env-vars BG_COLOR=$BG_COLOR \
  --tag $BG_COLOR

عدِّل الآن متغيّر البيئة SERVICE_URL لاستخدام الدالة gradual-rollouts-gcf.

SERVICE_URL=$(gcloud run services describe gradual-rollouts-gcf --platform managed --region $REGION --format 'value(status.url)')

والآن عندما تجعّد الخدمة

curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL

سيظهر لك اللون البيج، على الرغم من أنّ اللون البنفسجي هو النسخة التي تم نشرها مؤخرًا.

<html><body style="background-color:beige;"><div><p>Hello from gradual-rollouts-gcf-24jan16-staging-2-00001-kop using color beige</p></div></body></html>

اختبار نسخة تعرض 0% من الزيارات

لنفترض أنّك تأكّدت من أنّه تم نشر المراجعة بنجاح وأنّها تعرِض 0% من الزيارات. على الرغم من أنّه اجتاز عمليات التحقّق من الصحة، لا يزال عليك التأكّد من أنّ هذه النسخة تستخدم لون الخلفية البنفسجي.

لاختبار المراجعة باللون البنفسجي، يمكنك تطبيق علامة على هذه المراجعة. ويسمح لك وضع العلامات باختبار النسخة الجديدة مباشرةً على عنوان URL محدّد، وذلك بدون عرض زيارات.

عليك أولاً الحصول على عنوان URL الخاص بالصورة لتلك النسخة.

IMAGE_URL=$(gcloud run services describe gradual-rollouts-gcf --region $REGION --format 'value(IMAGE)')

والآن، يمكنك الإشارة إلى هذه الصورة باللون المرتبط بها.

gcloud run deploy gradual-rollouts-gcf --image $IMAGE_URL --no-traffic --tag $BG_COLOR --region $REGION --no-allow-unauthenticated

ستظهر لك نتيجة مشابهة لما يلي:

The revision can be reached directly at https://lavender---gradual-rollouts-gcf-k6msmyp47q-lz.a.run.app

يمكنك الآن استخدام هذه النسخة مباشرةً.

curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET <DIRECT_REVISION_URL>

ويمكنك الاطّلاع على اللون الأرجواني في النتائج:

<html><body style="background-color:lavender;"><div><p>Hello from gradual-rollouts-gcf-24jan16-00003-xik using color lavender</p></div></body></html>

زيادة عدد الزيارات تدريجيًا

الآن، يمكنك البدء في إرسال الزيارات إلى مراجعة الخزامى. يوضح المثال أدناه كيفية إرسال 1% من الزيارات إلى خزامى.

gcloud run services update-traffic gradual-rollouts-gcf --region $REGION --to-tags lavender=1

لإرسال 50% من الزيارات إلى أرجواني فاتح، يمكنك استخدام الأمر نفسه مع تحديد% 50 بدلاً من ذلك.

gcloud run services update-traffic gradual-rollouts-gcf --region $REGION --to-tags lavender=50

من المفترض أن تظهر لك قائمة بعدد الزيارات التي تتلقّاها كل نسخة من المراجعة.

Traffic:
  50% gradual-rollouts-gcf-00001-hos
  50% gradual-rollouts-gcf-00004-mum
        lavender: https://lavender---gradual-rollouts-gcf-k6msmyp47q-uc.a.run.app

عندما تكون جاهزًا لطرح الخزامى بالكامل، يمكنك ضبط اللون الخزامى على% 100 بدلاً من اللون البيج.

gcloud run services update-traffic gradual-rollouts-gcf --region $REGION --to-tags lavender=100

والآن، عندما تقوم بزيارة أو تجعّد عنوان URL لخدمة التدريج التدريجي لدالة gcf،

curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL

ستظهر لك إشارة البنفسج فقط.

<html><body style="background-color:lavender;"><div><p>Hello gradual-rollouts-gcf-00004-mum</p></div></body></html>

5- عمليات التراجع

لنفترض أنّه تم تلقّي ملاحظات مبكّرة حول تجربة المستخدم تشير إلى أنّ العملاء يفضّلون اللون البيج على البنفسجي، وأنّك بحاجة إلى الرجوع إلى اللون البيج.

يمكنك العودة إلى النسخة السابقة (اللون البيج) من خلال تنفيذ الأمر التالي.

gcloud run services update-traffic gradual-rollouts-gcf --region $REGION --to-revisions $BEIGE_REVISION=100

والآن عند استخدام curl أو زيارة نقطة نهاية عنوان URL للدالة،

curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL

سيظهر لك اللون البيج.

<html><body style="background-color:beige;"><div><p>Hello gradual-rollouts-gcf-00001-hos</p></div></body></html>

يمكنك الاطّلاع على المزيد من المعلومات حول العودة إلى الإصدارات السابقة في المستندات.

6- تهانينا!

تهانينا على إكمال الدرس التطبيقي حول الترميز.

ننصحك بمراجعة المستندات حول عمليات الطرح وإلغاء الطرح ونقل الزيارات.

النقاط التي تناولناها

  • كيفية تقسيم الزيارات بين نسختَين أو أكثر من دالة Cloud Run
  • كيفية طرح نسخة جديدة تدريجيًا
  • كيفية الرجوع إلى إصدار سابق

7- تَنظيم

لتجنُّب تحصيل رسوم غير مقصودة، (على سبيل المثال، إذا تم استدعاء دالة Cloud Run هذه عن غير قصد أكثر من تخصيص استدعاء الدالة Cloud الشهري في الفئة المجانية)، يمكنك إما حذف دالة Cloud Run أو حذف المشروع الذي أنشأته في الخطوة 2.

لحذف دالة Cloud Run تم نشرها على Cloud Run، انتقِل إلى Cloud Run في Cloud Console على الرابط https://console.cloud.google.com/functions/ واحذِف الدوال التي أنشأتها في هذا الدليل التعليمي.

لحذف دوال التشغيل في السحابة الإلكترونية التي تم نشرها كدوال من الجيل الثاني، انتقِل إلى دوال Cloud في Cloud Console على الرابط https://console.cloud.google.com/functions/ واحذف الوظائف التي أنشأتها في هذا الدرس التطبيقي حول الترميز.

إذا اخترت حذف المشروع بأكمله، يمكنك الانتقال إلى https://console.cloud.google.com/cloud-resource-manager واختيار المشروع الذي أنشأته في الخطوة 2 ثم اختيار "حذف". في حال حذف المشروع، عليك تغيير المشاريع في حزمة تطوير البرامج (SDK) من Cloud. يمكنك عرض قائمة بكل المشاريع المتاحة من خلال تشغيل gcloud projects list.