Hello Cloud Run with Python

1. ভূমিকা

96d07289bb51daa7.png সম্পর্কে

ক্লাউড রান একটি পরিচালিত কম্পিউট প্ল্যাটফর্ম যা আপনাকে HTTP অনুরোধের মাধ্যমে স্টেটলেস কন্টেইনার চালাতে সক্ষম করে। এটি Knative ওপেন-সোর্স প্রকল্পের উপর নির্মিত, যা প্ল্যাটফর্ম জুড়ে আপনার কাজের চাপের পোর্টেবিলিটি সক্ষম করে। ক্লাউড রান সার্ভারলেস: এটি সমস্ত অবকাঠামো ব্যবস্থাপনাকে বিমূর্ত করে, তাই আপনি সবচেয়ে গুরুত্বপূর্ণ বিষয়গুলিতে মনোনিবেশ করতে পারেন - দুর্দান্ত অ্যাপ্লিকেশন তৈরি করা।

এই টিউটোরিয়ালের লক্ষ্য হল একটি সহজ ওয়েব অ্যাপ্লিকেশন তৈরি করা এবং এটি ক্লাউড রানে স্থাপন করা।

2. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

  1. গুগল ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন অথবা বিদ্যমান একটি পুনরায় ব্যবহার করুন। যদি আপনার ইতিমধ্যেই একটি জিমেইল বা গুগল ওয়ার্কস্পেস অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

অনুসরণ

a99b7ace416376c4.png সম্পর্কে

5e3ff691252acf41.png সম্পর্কে

  • এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রজেক্টের নামটি প্রদর্শন করা হবে। এটি একটি অক্ষর স্ট্রিং যা Google API গুলি ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
  • সমস্ত Google ক্লাউড প্রোজেক্টে প্রোজেক্ট আইডি অনন্য এবং অপরিবর্তনীয় (সেট করার পরে এটি পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটি কী তা নিয়ে চিন্তা করেন না। বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রোজেক্ট আইডি (সাধারণত PROJECT_ID হিসাবে চিহ্নিত) উল্লেখ করতে হবে। যদি আপনি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য একটি র্যান্ডম তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করে দেখতে পারেন, এবং এটি উপলব্ধ কিনা তা দেখতে পারেন। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকবে।
  • আপনার তথ্যের জন্য, তৃতীয় একটি মান আছে, একটি Project Number , যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
  1. এরপর, ক্লাউড রিসোর্স/API ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবটি চালানোর জন্য খুব বেশি খরচ হবে না, এমনকি কিছু খরচও হবে না। এই টিউটোরিয়ালের বাইরে বিলিং এড়াতে রিসোর্স বন্ধ করতে, আপনি আপনার তৈরি রিসোর্সগুলি মুছে ফেলতে পারেন অথবা প্রকল্পটি মুছে ফেলতে পারেন। নতুন গুগল ক্লাউড ব্যবহারকারীরা $300 USD ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ক্লাউড শেল শুরু করুন

যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই টিউটোরিয়ালে আপনি ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চলমান একটি কমান্ড লাইন পরিবেশ।

ক্লাউড শেল সক্রিয় করুন

  1. ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন ক্লিক করুন 853e55310c205094.png সম্পর্কে .

3c1dabeca90e44e5.png সম্পর্কে

যদি আপনি প্রথমবারের মতো ক্লাউড শেল শুরু করেন, তাহলে আপনাকে একটি মধ্যবর্তী স্ক্রিন দেখানো হবে যা এটি কী তা বর্ণনা করবে। যদি আপনার কাছে একটি মধ্যবর্তী স্ক্রিন থাকে, তাহলে Continue এ ক্লিক করুন।

9c92662c6a846a5c.png সম্পর্কে

ক্লাউড শেলের সাথে সংযোগ স্থাপন এবং সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগবে।

9f0e51b578fecce5.png সম্পর্কে

এই ভার্চুয়াল মেশিনটিতে প্রয়োজনীয় সকল ডেভেলপমেন্ট টুল রয়েছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি অফার করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার বেশিরভাগ কাজ, যদি সব না হয়, একটি ব্রাউজার দিয়ে করা যেতে পারে।

একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি প্রমাণিত এবং প্রকল্পটি আপনার প্রকল্প আইডিতে সেট করা আছে।

  1. আপনি প্রমাণিত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list

কমান্ড আউটপুট

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. gcloud কমান্ড আপনার প্রকল্প সম্পর্কে জানে কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি তা না হয়, তাহলে আপনি এই কমান্ড দিয়ে এটি সেট করতে পারেন:

gcloud config set project <PROJECT_ID>

কমান্ড আউটপুট

Updated property [core/project].

৩. API গুলি সক্রিয় করুন

ক্লাউড শেল থেকে, আর্টিফ্যাক্ট রেজিস্ট্রি, ক্লাউড বিল্ড এবং ক্লাউড রান API সক্রিয় করুন:

gcloud services enable \
  artifactregistry.googleapis.com \
  cloudbuild.googleapis.com \
  run.googleapis.com

এটি এর মতো একটি সাফল্যের বার্তা আউটপুট করে:

Operation "operations/..." finished successfully.

এখন, আপনি কাজ শুরু করতে এবং আপনার আবেদনপত্র লেখার জন্য প্রস্তুত...

৪. আবেদনপত্রটি লিখুন

এই ধাপে, আপনি HTTP অনুরোধের প্রতিক্রিয়া জানাতে একটি সহজ ফ্লাস্ক-ভিত্তিক পাইথন অ্যাপ্লিকেশন তৈরি করবেন।

কার্যকরী ডিরেক্টরি

ক্লাউড শেল ব্যবহার করে helloworld-python নামে একটি কার্যকরী ডিরেক্টরি তৈরি করুন এবং এতে স্যুইচ করুন:

mkdir ~/helloworld-python
cd ~/helloworld-python

main.py সম্পর্কে

main.py নামে একটি ফাইল তৈরি করুন:

touch main.py

আপনার পছন্দের কমান্ড লাইন এডিটর (ন্যানো, ভিএম, অথবা ইম্যাকস) দিয়ে অথবা ক্লাউড শেল এডিটর বোতামে ক্লিক করে ফাইলটি সম্পাদনা করুন:

অনুসরণ

ক্লাউড শেল এডিটর দিয়ে সরাসরি ফাইলটি সম্পাদনা করতে, এই কমান্ডটি ব্যবহার করুন:

cloudshell edit main.py

main.py

from flask import Flask, request

app = Flask(__name__)


@app.get("/")
def hello():
    """Return a friendly HTTP greeting."""
    who = request.args.get("who", default="World")
    return f"Hello {who}!\n"


if __name__ == "__main__":
    # Development only: run "python main.py" and open http://localhost:8080
    # When deploying to Cloud Run, a production-grade WSGI HTTP server,
    # such as Gunicorn, will serve the app.
    app.run(host="localhost", port=8080, debug=True)

এই কোডটি একটি মৌলিক ওয়েব পরিষেবা তৈরি করে যা HTTP GET অনুরোধের প্রতি একটি বন্ধুত্বপূর্ণ বার্তার মাধ্যমে সাড়া দেয়।

requirements.txt ফাইল

নির্ভরতা নির্ধারণ করতে requirements.txt নামে একটি ফাইল যোগ করুন:

touch requirements.txt

ক্লাউড শেল এডিটর দিয়ে সরাসরি ফাইলটি সম্পাদনা করতে, এই কমান্ডটি ব্যবহার করুন:

cloudshell edit requirements.txt

requirements.txt

# https://pypi.org/project/flask
Flask==3.0.2

# https://pypi.org/project/gunicorn
gunicorn==21.2.0

প্রোকফাইল

অবশেষে, অ্যাপ্লিকেশনটি কীভাবে পরিবেশন করা হবে তা নির্দিষ্ট করতে Procfile নামে একটি ফাইল যুক্ত করুন:

touch Procfile

ক্লাউড শেল এডিটর দিয়ে সরাসরি ফাইলটি সম্পাদনা করতে, এই কমান্ডটি ব্যবহার করুন:

cloudshell edit Procfile

Procfile

web: gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app

নিশ্চিত করুন যে সমস্ত ফাইল কার্যকরী ডিরেক্টরির অধীনে উপস্থিত রয়েছে:

ls

এতে নিম্নলিখিত ফাইলগুলি তালিকাভুক্ত করা উচিত:

main.py  Procfile  requirements.txt

আপনার অ্যাপ্লিকেশনটি স্থাপনের জন্য প্রস্তুত, তবে প্রথমে এটি পরীক্ষা করে দেখা যাক...

৫. আবেদনপত্রটি পরীক্ষা করুন

অ্যাপ্লিকেশনটি পরীক্ষা করতে, একটি ভার্চুয়াল পরিবেশ তৈরি করুন:

virtualenv venv

ভার্চুয়াল পরিবেশ সক্রিয় করুন:

source venv/bin/activate

নির্ভরতা ইনস্টল করুন:

pip install -r requirements.txt

আপনার নিচের মতো একটি নিশ্চিতকরণ বার্তা পাওয়া উচিত:

...
Successfully installed Flask ... gunicorn ...

আবেদন শুরু করুন:

python main.py

লগগুলি দেখায় যে আপনি ডেভেলপমেন্ট মোডে আছেন:

 * Serving Flask app 'main'
 * Debug mode: on
   WARNING: This is a development server.
   Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Running on http://localhost:8080
   Press CTRL+C to quit
...

ক্লাউড শেল উইন্ডোতে, Web Preview আইকনে ক্লিক করুন এবং Preview on port 8080 নির্বাচন করুন:

অনুসরণ

এটি একটি ব্রাউজার উইন্ডো খুলবে যেখানে Hello World! " বার্তাটি প্রদর্শিত হবে।

আপনি + আইকনে ক্লিক করে এবং স্থানীয়ভাবে চলমান অ্যাপ্লিকেশনটিতে একটি ওয়েব অনুরোধ পাঠিয়ে আরেকটি ক্লাউড শেল সেশন (একটি নতুন টার্মিনাল ট্যাব) খুলতে পারেন:

curl localhost:8080

আপনার নিম্নলিখিত উত্তরটি পাওয়া উচিত:

Hello World!

আপনার কাজ শেষ হয়ে গেলে, মূল ক্লাউড শেল সেশনে ফিরে যান এবং CTRL+C দিয়ে python main.py কমান্ডটি বন্ধ করুন।

ভার্চুয়াল পরিবেশ থেকে প্রস্থান করুন:

deactivate

অবশেষে, ভার্চুয়াল পরিবেশ ডিরেক্টরিটি সরান:

rm -r venv/

আপনার অ্যাপ্লিকেশনটি প্রত্যাশা অনুযায়ী কাজ করছে: আসুন এটি স্থাপন করি...

৬. ক্লাউড রানে স্থাপন করুন

ক্লাউড রান হল আঞ্চলিক, যার অর্থ হল আপনার ক্লাউড রান পরিষেবাগুলি পরিচালনা করে এমন পরিকাঠামো একটি নির্দিষ্ট অঞ্চলে অবস্থিত এবং Google দ্বারা পরিচালিত হয় যাতে সেই অঞ্চলের সমস্ত জোনে অতিরিক্তভাবে উপলব্ধ থাকে। আপনার স্থাপনার জন্য আপনি কোন অঞ্চলটি ব্যবহার করবেন তা নির্ধারণ করুন, উদাহরণস্বরূপ:

REGION="europe-west9"

নিশ্চিত করুন যে আপনি এখনও কার্যকরী ডিরেক্টরিতে আছেন:

ls

এতে নিম্নলিখিত ফাইলগুলি তালিকাভুক্ত করা উচিত:

main.py  Procfile  requirements.txt

ক্লাউড রানে অ্যাপ্লিকেশনটি স্থাপন করুন:

gcloud run deploy helloworld-python \
  --source . \
  --platform managed \
  --region $REGION \
  --allow-unauthenticated
  • আপনি এই কমান্ড দিয়ে একটি ডিফল্ট অঞ্চল নির্ধারণ করতে পারেন: gcloud config set run/region $REGION
  • আপনি এই কমান্ডটি ব্যবহার করে ডিফল্টভাবে ক্লাউড রান পরিচালনা করতে পারেন: gcloud config set run/platform managed
  • --allow-unauthenticated বিকল্পটি পরিষেবাটি সর্বজনীনভাবে উপলব্ধ করে। অননুমোদিত অনুরোধগুলি এড়াতে, এর পরিবর্তে --no-allow-unauthenticated ব্যবহার করুন।

প্রথমবার, আপনি একটি আর্টিফ্যাক্ট রেজিস্ট্রি রিপোজিটরি তৈরি করার জন্য একটি প্রম্পট পাবেন। যাচাই করতে এন্টার টিপুন:

Deploying from source requires an Artifact Registry Docker repository to store
built containers. A repository named [cloud-run-source-deploy] in region [REGION]
will be created.

Do you want to continue (Y/n)?

এটি আর্টিফ্যাক্ট রেজিস্ট্রি রিপোজিটরিতে আপনার সোর্স কোড আপলোড এবং আপনার কন্টেইনার ইমেজ তৈরি শুরু করে:

Building using Buildpacks and deploying container ...
* Building and deploying new service... Building Container.           
  OK Creating Container Repository...
  OK Uploading sources...
  * Building Container... Logs are available at ...

তারপর, স্থাপনা সম্পূর্ণ না হওয়া পর্যন্ত কিছুক্ষণ অপেক্ষা করুন। সফল হলে, কমান্ড লাইন পরিষেবা URL প্রদর্শন করবে:

...
OK Building and deploying new service... Done.
  OK Creating Container Repository...
  OK Uploading sources...
  OK Building Container... Logs are available at ...
  OK Creating Revision... Creating Service.
  OK Routing traffic...
  OK Setting IAM Policy...
Done.
Service [SERVICE]... has been deployed and is serving 100 percent of traffic.
Service URL: https://SERVICE-PROJECTHASH-REGIONID.a.run.app

আপনি এই কমান্ড দিয়ে পরিষেবা URL পেতে পারেন:

SERVICE_URL=$( \
  gcloud run services describe helloworld-python \
  --platform managed \
  --region $REGION \
  --format "value(status.url)" \
)
echo $SERVICE_URL

এটি নিম্নলিখিত মত কিছু প্রদর্শন করা উচিত:

https://helloworld-python-PROJECTHASH-REGIONID.a.run.app

আপনি এখন একটি ওয়েব ব্রাউজারে পরিষেবা URL খোলার মাধ্যমে আপনার অ্যাপ্লিকেশনটি ব্যবহার করতে পারেন:

অনুসরণ

আপনি ক্লাউড শেল থেকেও অ্যাপ্লিকেশনটি কল করতে পারেন:

curl $SERVICE_URL?who=me

এটি আপনাকে প্রত্যাশিত অভিবাদন জানাবে:

Hello me!

অভিনন্দন! আপনি ক্লাউড রানে একটি অ্যাপ্লিকেশন স্থাপন করেছেন। প্রাপ্ত অনুরোধগুলি পরিচালনা করার জন্য ক্লাউড রান স্বয়ংক্রিয়ভাবে এবং অনুভূমিকভাবে আপনার কন্টেইনার চিত্রটি স্কেল করে, তারপর চাহিদা হ্রাস পেলে স্কেল করে। অনুরোধ পরিচালনার সময় ব্যবহৃত CPU, মেমরি এবং নেটওয়ার্কিংয়ের জন্য আপনাকে কেবল অর্থ প্রদান করতে হবে।

৭. পরিষ্কার করা

পরিষেবাটি ব্যবহার না করা অবস্থায় ক্লাউড রান চার্জ করে না, তবুও আর্টিফ্যাক্ট রেজিস্ট্রিতে কন্টেইনার ছবি সংরক্ষণের জন্য আপনাকে চার্জ করা হতে পারে। চার্জ এড়াতে আপনি আপনার রিপোজিটরি মুছে ফেলতে পারেন অথবা আপনার ক্লাউড প্রকল্পটি মুছে ফেলতে পারেন। আপনার ক্লাউড প্রকল্পটি মুছে ফেলার ফলে সেই প্রকল্পের মধ্যে ব্যবহৃত সমস্ত সংস্থানের জন্য বিলিং বন্ধ হয়ে যায়।

আপনার কন্টেইনার ইমেজ রিপোজিটরি মুছে ফেলার জন্য:

gcloud artifacts repositories delete cloud-run-source-deploy \
  --location $REGION

আপনার ক্লাউড রান পরিষেবা মুছে ফেলার জন্য:

gcloud run services delete helloworld-python \
  --platform managed \
  --region $REGION

আপনার গুগল ক্লাউড প্রজেক্ট মুছে ফেলার জন্য,

  1. আপনার বর্তমান প্রকল্প আইডি পুনরুদ্ধার করুন:
PROJECT_ID=$(gcloud config get-value core/project)
  1. নিশ্চিত করুন যে এটিই সেই প্রকল্প যা আপনি মুছে ফেলতে চান:
echo $PROJECT_ID
  1. প্রকল্পটি মুছে ফেলুন:
gcloud projects delete $PROJECT_ID

৮. অভিনন্দন!

96d07289bb51daa7.png সম্পর্কে

তুমি একটি সহজ ওয়েব অ্যাপ্লিকেশন তৈরি করে ক্লাউড রানে স্থাপন করেছো!

আরও জানুন

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন ২.০ জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।