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 खाता नहीं है, तो आपको एक खाता बनाना होगा.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.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, बिल्डपैक का इस्तेमाल करके सोर्स कोड से अपने-आप कंटेनर बनाता है.

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

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 में पुश करने के बारे में ज़्यादा जानने के लिए, यह लेख पढ़ें: