C# দিয়ে হ্যালো ক্লাউড রান

1. ভূমিকা

89eb4723767d4525.png

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

এটি Knative থেকে তৈরি করা হয়েছে, যা আপনাকে ক্লাউড রানের মাধ্যমে সম্পূর্ণরূপে পরিচালিত বা আপনার Google Kubernetes ইঞ্জিন ক্লাস্টারে GKE-তে ক্লাউড রানের মাধ্যমে আপনার কন্টেইনারগুলি চালানোর জন্য বেছে নিতে দেয়।

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

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

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

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

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

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

গুগল ক্লাউড শেল

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

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

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

  • ক্লাউড কনসোল থেকে ক্লাউড শেল সক্রিয় করতে, কেবল ক্লিক করুন ক্লাউড শেল সক্রিয় করুন :

cb81e7c8e34bc8d.png

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

bfde7b083abc9544.png

পরিবেশের ব্যবস্থা করতে এটি মাত্র কয়েক সেকেন্ড সময় নেওয়া উচিত:

cbb597d2be277a14.png

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

gcloud auth list

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

Credentialed Accounts

ACTIVE: *
ACCOUNT: <my-account>@<mydomain>

প্রকল্পটি ইতিমধ্যেই আপনার PROJECT_ID এ সেট করা উচিত (অনুমান করা হচ্ছে আপনি ওয়েব কনসোলে একটি প্রকল্প নির্বাচন করেছেন):

gcloud config list project

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

[core]
project = <PROJECT_ID>

যদি, কোন কারণে, প্রকল্পটি সেট করা না হয়, কেবল নিম্নলিখিত কমান্ডটি জারি করুন:

gcloud config set project <PROJECT_ID>

আপনার PROJECT_ID খুঁজছেন? ক্লাউড কনসোলের শীর্ষে ড্রপ-ডাউনটি দেখুন:

2c7a57249d954735.png

এছাড়াও আপনি "সেটিং এবং ইউটিলিটি" বিভাগটি ব্যবহার করে আপনার প্রকল্পের বিশদটি পরীক্ষা করতে পারেন:

791f101797cfef39.png

ক্লাউড শেল ডিফল্টরূপে কিছু এনভায়রনমেন্ট ভেরিয়েবলও সেট করে, যা আপনার ভবিষ্যত কমান্ড চালানোর সময় কার্যকর হতে পারে।

echo $GOOGLE_CLOUD_PROJECT

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

<PROJECT_ID>
  • অবশেষে, আপনি ডিফল্ট জোন সেট করতে পারেন:
gcloud config set compute/zone us-central1-f

আপনি বিভিন্ন জোন চয়ন করতে পারেন। আরও তথ্যের জন্য, অঞ্চল এবং অঞ্চল দেখুন।

Cloud Run API সক্ষম করুন

ক্লাউড শেল থেকে, ক্লাউড রান API সক্ষম করুন:

gcloud services enable run.googleapis.com

এটির অনুরূপ একটি সফল বার্তা তৈরি করা উচিত:

Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.

3. নমুনা আবেদন লিখুন

আমরা HTTP অনুরোধে সাড়া দিয়ে একটি সাধারণ ASP.NET C# অ্যাপ্লিকেশন তৈরি করব।

আপনার অ্যাপ্লিকেশন তৈরি করতে, ক্লাউড শেলে dotnet কমান্ড লাইন টুল ব্যবহার করুন:

dotnet new web -o helloworld-csharp

helloworld-csharp ডিরেক্টরিতে পরিবর্তন করুন:

cd helloworld-csharp

পরবর্তী, নিম্নলিখিতগুলির সাথে মেলে Program.cs আপডেট করুন:

var builder = WebApplication.CreateBuilder(args);

var port = Environment.GetEnvironmentVariable("PORT") ?? "8080";
var url = $"http://0.0.0.0:{port}";
builder.WebHost.UseUrls(url);

var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();

এই কোডটি একটি বেসিক ওয়েব সার্ভার তৈরি করে যা PORT এনভায়রনমেন্ট ভেরিয়েবল দ্বারা সংজ্ঞায়িত পোর্টে শোনে এবং Hello World এর সাথে উত্তর দেয়।

আপনি ক্লাউড শেলে স্থানীয়ভাবে অ্যাপটি চালিয়ে পরীক্ষা করতে পারেন। আপনার এটি পোর্ট 8080 এ শোনা উচিত:

$ dotnet run
Using launch settings from /home/atameldev/helloworld-csharp/Properties/launchSettings.json...
Hosting environment: Development
Content root path: /home/atameldev/helloworld-csharp
Now listening on: http://0.0.0.0:8080
Application started. Press Ctrl+C to shut down.

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

নিম্নলিখিত কমান্ডের সাহায্যে আপনার অ্যাপ্লিকেশনটি ক্লাউড রানে স্থাপন করুন:

gcloud run deploy hello-world \
    --allow-unauthenticated \
    --region us-central1 \
    --source .
  • hello-world হল পরিষেবার নাম।
  • allow-unauthenticated পতাকা কোনও প্রমাণীকরণের প্রয়োজনীয়তা ছাড়াই পরিষেবাটিকে সর্বজনীনভাবে উপলব্ধ পরিষেবা হিসাবে স্থাপন করে।
  • us-central1 হল সেই অঞ্চল যেখানে অ্যাপটি স্থাপন করা হবে।
  • source পতাকা নির্মাণের উৎসের অবস্থান নির্ধারণ করে। ক্লাউড রান স্বয়ংক্রিয়ভাবে উৎস কোডের বাইরে একটি ধারক তৈরি করতে বিল্ডপ্যাক ব্যবহার করে।

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

Service [hello-world] revision [hello-world-00001-yos] has been deployed and is serving 100 percent of traffic.
Service URL: https://helloworld-wdl7fdwaaa-uc.a.run.app

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

85e7fbbd264444c9.png

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

5. পরিষ্কার করার সময়

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

gcloud run services delete helloworld

6. পরবর্তী কি?

একটি ভাল পরবর্তী পদক্ষেপ হবে GKE-তে ক্লাউড রানে স্থাপন করা

কোড সোর্স থেকে ক্লাউড রানের জন্য উপযুক্ত একটি স্টেটলেস HTTP কন্টেইনার তৈরি করা এবং কনটেইনার রেজিস্ট্রিতে এটি পুশ করার বিষয়ে আরও তথ্যের জন্য, দেখুন: