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

1. परिचय

89eb4723767d4525.png

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

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

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

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

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

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

295004821bab6a87.png37d264871000675d.png96d86d3d5655cdbe.png

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

Google Cloud Shell

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

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

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

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

cb81e7c8e34bc8d.png

अगर Cloud Shell को पहली बार शुरू किया जा रहा है, तो आपको एक इंटरमीडिएट स्क्रीन दिखेगी. इसमें 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, सोर्स कोड से अपने-आप कंटेनर बनाने के लिए, buildpacks का इस्तेमाल करता है.

डिप्लॉयमेंट पूरा होने तक कुछ मिनट इंतज़ार करें. सफल होने पर, कमांड लाइन में सेवा का यूआरएल दिखता है :

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 के लिए, बिना स्थिति वाला एचटीटीपी कंटेनर बनाने और उसे Container Registry में पुश करने के बारे में ज़्यादा जानने के लिए, यह लेख पढ़ें: