এই কোডল্যাব সম্পর্কে
1. ভূমিকা
ওভারভিউ
ক্লাউড রান রিভিশন আপনাকে নির্দিষ্ট করতে দেয় যে কোন রিভিশনে ট্রাফিক পাওয়া উচিত এবং প্রতিটি রিভিশনে কত শতাংশ ট্রাফিক পাঠাতে হবে। রিভিশন আপনাকে আগের রিভিশনে রোলব্যাক করতে, ধীরে ধীরে রিভিশন রোল আউট করতে এবং একাধিক রিভিশনের মধ্যে ট্রাফিককে বিভক্ত করতে দেয়।
এই কোডল্যাবগুলি আপনাকে দেখায় কিভাবে আপনার ক্লাউড রান পরিষেবাতে ট্র্যাফিক পরিচালনা করতে সংশোধনগুলি ব্যবহার করতে হয়৷ আপনি ক্লাউড রান ডকুমেন্টেশনে সংশোধন সম্পর্কে আরও জানতে পারেন।
আপনি কি শিখবেন
- একটি ক্লাউড রান পরিষেবার জন্য দুই বা ততোধিক সংশোধনের মধ্যে ট্র্যাফিককে কীভাবে বিভক্ত করবেন
- কিভাবে ধীরে ধীরে একটি নতুন সংশোধন রোল আউট
- আগের রিভিশনে কিভাবে রোলব্যাক করবেন
2. সেটআপ এবং প্রয়োজনীয়তা
পূর্বশর্ত
- আপনি ক্লাউড কনসোলে লগ ইন করেছেন।
- আপনি পূর্বে একটি ক্লাউড রান পরিষেবা স্থাপন করেছেন৷ উদাহরণস্বরূপ, আপনি শুরু করতে একটি ক্লাউড রান পরিষেবা স্থাপন করতে পারেন৷
এনভায়রনমেন্ট ভেরিয়েবল সেট করুন
আপনি পরিবেশের ভেরিয়েবল সেট করতে পারেন যা এই কোডল্যাব জুড়ে ব্যবহার করা হবে।
PROJECT_ID=YOUR-PROJECT-ID
REGION=YOUR_REGION
BG_COLOR=darkseagreen
SERVICE_NAME=traffic-revisions-color
AR_REPO=traffic-revisions-color-repo
পরিষেবার জন্য একটি আর্টিফ্যাক্ট রেজিস্ট্রি সংগ্রহস্থল তৈরি করুন
gcloud artifacts repositories create $AR_REPO \
--repository-format=docker \
--location=$REGION \
--description="codelab for finetuning using CR jobs" \
--project=$PROJECT_ID
3. ট্রাফিক বিভাজন
এই নমুনাটি আপনাকে দেখায় যে কীভাবে একটি ক্লাউড রান পরিষেবা তৈরি করতে হয় যা একটি রঙ পরিবেশ পরিবর্তনশীল পড়ে এবং সেই পটভূমির রঙ ব্যবহার করে পুনর্বিবেচনার নামের সাথে প্রতিক্রিয়া জানায়।
যদিও এই কোডল্যাবটি পাইথন ব্যবহার করে, আপনি যেকোনো রানটাইম ব্যবহার করতে পারেন।
এনভায়রনমেন্ট ভেরিয়েবল সেট করুন
আপনি পরিবেশের ভেরিয়েবল সেট করতে পারেন যা এই কোডল্যাব জুড়ে ব্যবহার করা হবে।
REGION=<YOUR_REGION> PROJECT_ID=<YOUR-PROJECT-ID> BG_COLOR=darkseagreen SERVICE_NAME=traffic-revisions-color AR_REPO=traffic-revisions-color-repo
পরিষেবা তৈরি করুন
প্রথমে, সেই ডিরেক্টরিতে সোর্স কোড এবং সিডির জন্য একটি ডিরেক্টরি তৈরি করুন।
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"]
ক্লাউড বিল্ড ব্যবহার করে বিল্ডপ্যাক ব্যবহার করে আর্টিফ্যাক্ট রেজিস্ট্রিতে চিত্রটি তৈরি করুন:
gcloud builds submit \
--tag $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$SERVICE_NAME
এবং ক্লাউড রানে একটি গাঢ়-সবুজ রঙের সাথে প্রথম সংশোধনটি স্থাপন করুন:
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 ভাগ করুন
গভীর সমুদ্রের সবুজ এবং ট্যান সংশোধনগুলির মধ্যে ট্র্যাফিককে বিভক্ত করতে, আপনাকে অন্তর্নিহিত ক্লাউড রান পরিষেবাগুলির সংশোধন আইডিগুলি খুঁজে বের করতে হবে৷ আপনি এই কমান্ডটি চালিয়ে রিভিশন আইডি দেখতে পারেন:
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. ক্রমান্বয়ে রোলআউট
এই বিভাগে, আপনি শিখবেন কীভাবে ধীরে ধীরে একটি নতুন ক্লাউড পরিষেবা সংশোধনে পরিবর্তনগুলি রোলআউট করতে হয়৷ আপনি ডকুমেন্টেশনে ধীরে ধীরে রোলআউট সম্পর্কে আরও জানতে পারেন।
আপনি পূর্ববর্তী বিভাগের মতো একই কোড ব্যবহার করবেন, তবে আপনি এটিকে একটি নতুন ক্লাউড রান পরিষেবা হিসাবে স্থাপন করবেন।
প্রথমে, ব্যাকগ্রাউন্ডের রঙ beige
সেট করুন এবং ফাংশনটিকে gradual-rollouts-colors
নাম দিয়ে স্থাপন করুন।
একটি ক্লাউড রান ফাংশন সরাসরি ক্লাউড রানে স্থাপন করতে, নিম্নলিখিত কমান্ডটি চালান:
# 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% ট্রাফিক পাওয়ার জন্য বর্তমান রিভিশন বেইজ সেট করি। এটি নিশ্চিত করবে যে আপনার ভবিষ্যত সংশোধনগুলি কোনো ট্র্যাফিক পাবে না। ডিফল্টরূপে, ক্লাউড রান latest
পতাকা সহ সংশোধনের জন্য 100% ট্রাফিক সেট করে। ম্যানুয়ালি উল্লেখ করে যে এই বর্তমান রিভিশন বেইজটি সমস্ত ট্রাফিক পাবে, 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 পরিবেশ পরিবর্তনশীল আপডেট করতে পারেন।
একটি ক্লাউড রান ফাংশন সরাসরি ক্লাউড রানে স্থাপন করতে, নিম্নলিখিত কমান্ডটি চালান:
# 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
এখন আপনি যখন সেই নির্দিষ্ট রিভিশন ইউআরএলে যান, আপনি ল্যাভেন্ডার রঙ দেখতে পাবেন।
ধীরে ধীরে বাড়ছে যানজট
এখন, আপনি ল্যাভেন্ডার রিভিশনে ট্রাফিক পাঠানো শুরু করতে পারেন। নীচের উদাহরণটি দেখায় কিভাবে ট্রাফিকের 1% ল্যাভেন্ডারে পাঠাতে হয়।
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. রোলব্যাক
ধরুন প্রাথমিক UX ফিডব্যাক এসেছে, যা ইঙ্গিত করে যে গ্রাহকরা ল্যাভেন্ডারের থেকে বেইজ পছন্দ করেন এবং আপনাকে বেইজে রোলব্যাক করতে হবে।
আপনি এই কমান্ডটি চালিয়ে পূর্ববর্তী সংশোধন (বেইজ) এ ফিরে যেতে পারেন:
gcloud run services update-traffic gradual-rollouts-colors --region $REGION --to-revisions $BEIGE_REVISION=100
এবং এখন আপনি যখন ওয়েবসাইট পরিদর্শন করবেন, আপনি পটভূমির রঙ হিসাবে বেইজ দেখতে পাবেন।
আপনি ডক্সে রোলব্যাক সম্পর্কে আরও জানতে পারেন৷
6. অভিনন্দন!
কোডল্যাব সম্পূর্ণ করার জন্য অভিনন্দন!
আমরা রোলআউট, রোলব্যাক এবং ট্রাফিক মাইগ্রেশনের ডকুমেন্টেশন পর্যালোচনা করার পরামর্শ দিই
আমরা কভার করেছি কি
- একটি ক্লাউড রান পরিষেবার জন্য দুই বা ততোধিক সংশোধনের মধ্যে ট্র্যাফিককে কীভাবে বিভক্ত করবেন
- কিভাবে ধীরে ধীরে একটি নতুন সংশোধন রোল আউট
- আগের রিভিশনে কিভাবে রোলব্যাক করবেন
7. পরিষ্কার করুন
অসাবধানতাবশত চার্জ এড়াতে, (উদাহরণস্বরূপ, যদি এই ক্লাউড রান ফাংশনটি আপনার মাসিক ক্লাউড রান ইনভোকমেন্ট বরাদ্দের চেয়ে অজান্তেই ফ্রি টিয়ারে বেশি বার আহ্বান করা হয়), আপনি হয় ক্লাউড রান পরিষেবাটি মুছে ফেলতে পারেন বা ধাপ 2 এ আপনার তৈরি করা প্রকল্পটি মুছে ফেলতে পারেন৷
একটি ক্লাউড রান পরিষেবা মুছে ফেলতে, https://console.cloud.google.com/run/ এ ক্লাউড কনসোলে ক্লাউড রানে যান এবং এই কোডল্যাবে আপনার তৈরি করা ফাংশনগুলি মুছুন৷
আপনি যদি সম্পূর্ণ প্রকল্প মুছে ফেলার সিদ্ধান্ত নেন, আপনি https://console.cloud.google.com/cloud-resource-manager- এ যেতে পারেন, ধাপ 2-এ আপনার তৈরি করা প্রকল্পটি নির্বাচন করুন এবং মুছুন নির্বাচন করুন৷ আপনি যদি প্রকল্পটি মুছে ফেলেন, তাহলে আপনাকে আপনার ক্লাউড SDK-এ প্রকল্পগুলি পরিবর্তন করতে হবে৷ আপনি gcloud projects list
চালিয়ে সমস্ত উপলব্ধ প্রকল্পের তালিকা দেখতে পারেন।