C# के साथ हेलो क्लाउड रन

1. परिचय

89eb4723767d4525.png

Cloud Run एक मैनेज किया गया प्लैटफ़ॉर्म है जो आपको स्टेटलेस कंटेनर चलाने की सुविधा देता है, जिन्हें एचटीटीपी अनुरोधों के ज़रिए ऐक्सेस किया जा सकता है. Cloud Run बिना सर्वर वाली सेवा है: यह इन्फ़्रास्ट्रक्चर मैनेजमेंट को अलग रखता है, ताकि आप सबसे अहम ऐप्लिकेशन बनाने पर फ़ोकस कर सकें.

इसे KNative से बनाया गया है. इसकी मदद से, अपने कंटेनर को Cloud Run की मदद से पूरी तरह से मैनेज किया जा सकता है या GKE पर Cloud Run का इस्तेमाल करके, Google Kubernetes Engine क्लस्टर में चलाया जा सकता है.

इस कोडलैब का लक्ष्य, कंटेनर इमेज बनाना और उसे Cloud Run पर डिप्लॉय करना है.

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेटअप करना

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से Gmail या Google Workspace खाता नहीं है, तो आपको नया खाता बनाना होगा.

295004821बाबा6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों का डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करता. इसे कभी भी अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे बदला नहीं जा सकता. इसे सेट करने के बाद बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है; आम तौर पर, आपको उसके होने की कोई परवाह नहीं होती. ज़्यादातर कोडलैब में, आपको अपना प्रोजेक्ट आईडी बताना होगा. आम तौर पर, इसकी पहचान PROJECT_ID के रूप में की जाती है. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो किसी भी क्रम में एक और आईडी जनरेट किया जा सकता है. दूसरा तरीका यह है कि आप खुद भी आज़माकर देखें कि वह उपलब्ध है या नहीं. इस चरण के बाद, इसे बदला नहीं जा सकता. साथ ही, यह प्रोजेक्ट के खत्म होने तक बना रहता है.
  • आपकी जानकारी के लिए, प्रोजेक्ट नंबर नाम की एक तीसरी वैल्यू दी गई है. इसका इस्तेमाल कुछ एपीआई करते हैं. दस्तावेज़ में इन तीनों वैल्यू के बारे में ज़्यादा जानें.
  1. इसके बाद, आपको क्लाउड संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग चालू करनी होगी. इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. इस ट्यूटोरियल के अलावा, बिलिंग से बचने के लिए संसाधनों को बंद करें. इसके लिए, अपने बनाए गए संसाधनों को मिटाएं या प्रोजेक्ट को मिटाएं. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.

Google Cloud शेल

Google Cloud को आपके लैपटॉप से, कहीं से भी ऑपरेट किया जा सकता है. हालांकि, इस कोडलैब में हम Google Cloud Shell का इस्तेमाल करेंगे. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Cloud Shell एक ऑनलाइन डेवलपमेंट और ऑपरेशन एनवायरमेंट है. इसे आपके ब्राउज़र की मदद से कहीं से भी ऐक्सेस किया जा सकता है. ऑनलाइन टर्मिनल की मदद से, संसाधनों को मैनेज किया जा सकता है. टर्मिनल में gcloud command-line टूल, kubectl, और ऐसी कई सुविधाएं पहले से मौजूद होती हैं. ऑनलाइन मौजूद क्लाउड शेल एडिटर का इस्तेमाल करके, क्लाउड-आधारित ऐप्लिकेशन डेवलप किए जा सकते हैं, बनाए जा सकते हैं, डीबग किए जा सकते हैं, और डिप्लॉय किए जा सकते हैं.

इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत है. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और सीधे Google Cloud में काम करता है. यह नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस को बेहतर बनाता है. इसका मतलब है कि इस कोडलैब के लिए आपको सिर्फ़ एक ब्राउज़र की ज़रूरत होगी. हां, यह Chromebook पर काम करता है.

  • Cloud Console से Cloud Shell को चालू करने के लिए, Cloud Shell को चालू करें पर क्लिक करें :

cb81e7c8e34bc8d.png

अगर आपने Cloud Shell का इस्तेमाल पहली बार किया है, तो आपको बीच में आने वाली स्क्रीन दिखेगी. इसमें यह बताया जाएगा कि यह क्या है. अगर आपको इंटरमीडिएट स्क्रीन दिखती है, तो जारी रखें पर क्लिक करें

bfde7b083abc9544.png

एनवायरमेंट का प्रावधान करने में सिर्फ़ कुछ सेकंड लगने चाहिए :

cbb597d2be277a14.png

Cloud Shell से कनेक्ट होने के बाद, आपको यह दिखेगा कि आपकी पुष्टि पहले ही हो चुकी है :

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 चाहिए? Cloud Console में सबसे ऊपर मौजूद ड्रॉप-डाउन को देखें :

2c7a57249d954735.png

"सेटिंग और यूटिलिटी" में जाकर, अपने प्रोजेक्ट की जानकारी भी देखी जा सकती है सेक्शन:

791f101797cfef39.png

Cloud Shell, डिफ़ॉल्ट रूप से कुछ एनवायरमेंट वैरिएबल सेट करता है. ये वैरिएबल, आने वाले समय में कमांड चलाने के दौरान काम आ सकते हैं.

echo $GOOGLE_CLOUD_PROJECT

कमांड आउटपुट

<PROJECT_ID>
  • आखिर में, डिफ़ॉल्ट ज़ोन सेट किया जा सकता है :
gcloud config set compute/zone us-central1-f

आपके पास अलग-अलग ज़ोन चुनने का विकल्प है. ज़्यादा जानकारी के लिए, क्षेत्र और ज़ोन.

Cloud Run API चालू करना

Cloud Shell से, Cloud Run API चालू करें :

gcloud services enable run.googleapis.com

इससे इस टेक्स्ट से मिलता-जुलता मैसेज दिखेगा :

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

3. ऐप्लिकेशन का नमूना लिखें

हम एचटीटीपी अनुरोधों के जवाब में एक आसान ASP.NET C# ऐप्लिकेशन बनाएंगे.

ऐप्लिकेशन बनाने के लिए, Cloud Shell में 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 के साथ जवाब देता है.

ऐप्लिकेशन को Cloud Shell में स्थानीय तौर पर चलाकर उसकी जांच की जा सकती है. आपको इसे पोर्ट 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. Cloud Run पर डिप्लॉय करें

अपने ऐप्लिकेशन को नीचे दिए गए निर्देश की मदद से, Cloud Run पर डिप्लॉय करें:

gcloud run deploy hello-world \
    --allow-unauthenticated \
    --region us-central1 \
    --source .
  • hello-world सेवा का नाम है.
  • allow-unauthenticated फ़्लैग, सेवा को सार्वजनिक तौर पर उपलब्ध सेवा के तौर पर डिप्लॉय करता है. इसमें पुष्टि करने की कोई ज़रूरत नहीं होती.
  • us-central1 वह इलाका है जहां ऐप्लिकेशन को डिप्लॉय किया जाएगा.
  • source फ़्लैग, बनाए जाने वाले सोर्स की जगह तय करता है. Cloud Run, सोर्स कोड से कंटेनर अपने-आप बनाने के लिए, बिल्डपैक का इस्तेमाल करता है.

डिप्लॉयमेंट पूरा होने तक कुछ मिनट इंतज़ार करें. सफल होने पर, कमांड लाइन सेवा 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

अब किसी वेब ब्राउज़र में सेवा यूआरएल खोलकर, डिप्लॉय किए गए अपने कंटेनर पर जाएं :

85e7fbbd264444c9.png

बधाई हो! आपने अभी-अभी कंटेनर इमेज में पैकेज किए गए एक ऐप्लिकेशन को Cloud Run पर डिप्लॉय किया है. Cloud Run, मिलने वाले अनुरोधों के हिसाब से आपके कंटेनर की इमेज को अपने-आप और हॉरिज़ॉन्टल तौर पर स्केल करता है. इसके बाद, मांग कम होने पर उसका साइज़ छोटा कर देता है. अनुरोध मैनेज करने के दौरान इस्तेमाल किए गए सीपीयू, मेमोरी, और नेटवर्किंग के लिए ही आपको पैसे चुकाने होंगे.

5. स्टोरेज खाली करने का समय

आप शुल्क देने से बचने के लिए, अपने GCP प्रोजेक्ट को मिटाने का फ़ैसला ले सकते हैं. ऐसा करने पर, उस प्रोजेक्ट में इस्तेमाल किए गए सभी संसाधनों की बिलिंग बंद हो जाएगी या Cloud Run सेवा को मिटा दिया जाएगा:

gcloud run services delete helloworld

6. आगे क्या करना है?

अगला चरण, GKE पर Cloud Run पर डिप्लॉय करना होगा.

कोड सोर्स से Cloud Run के लिए सही, एक स्टेटलेस एचटीटीपी कंटेनर बनाने और उसे कंटेनर रजिस्ट्री में भेजने के बारे में ज़्यादा जानकारी के लिए, यहां देखें: