Hello Cloud Run with Python

1. ভূমিকা

96d07289bb51daa7.png

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

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

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

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

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

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

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

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

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

3c1dabeca90e44e5.png

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

9c92662c6a846a5c.png

ক্লাউড শেলের সাথে সংযোগ করতে এবং সংযোগ করতে এটির মাত্র কয়েক মুহূর্ত লাগবে৷

9f0e51b578fecce5.png

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

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

  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].

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

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

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

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

Operation "operations/..." finished successfully.

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

4. আবেদনটি লিখুন

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

ওয়ার্কিং ডিরেক্টরি

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

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

main.py

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

touch main.py

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

10af7b1a6240e9f4.gif

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

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

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

5. আবেদন পরীক্ষা করুন

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

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 নির্বাচন করুন :

6c9ff9e5c692c58e.gif

এটি Hello World! বার্তা

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

curl localhost:8080

আপনি নিম্নলিখিত উত্তর পেতে হবে:

Hello World!

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

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

deactivate

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

rm -r venv/

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

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

ক্লাউড রান হল আঞ্চলিক, যার অর্থ হল যে পরিকাঠামো যা আপনার ক্লাউড রান পরিষেবাগুলি চালায় তা একটি নির্দিষ্ট অঞ্চলে অবস্থিত এবং সেই অঞ্চলের সমস্ত অঞ্চলে অপ্রয়োজনীয়ভাবে উপলব্ধ হওয়ার জন্য 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 খুলে আপনার অ্যাপ্লিকেশন ব্যবহার করতে পারেন:

c836b93e5601e2cf.gif

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

curl $SERVICE_URL?who=me

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

Hello me!

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

7. পরিষ্কার করুন

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

আপনার ধারক চিত্র সংগ্রহস্থল মুছে ফেলতে:

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

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

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

আপনার Google ক্লাউড প্রকল্প মুছে ফেলতে,

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

8. অভিনন্দন!

96d07289bb51daa7.png

আপনি একটি সাধারণ ওয়েব অ্যাপ্লিকেশন তৈরি করেছেন এবং এটি ক্লাউড রানে স্থাপন করেছেন!

আরও জানুন

লাইসেন্স

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