Cloud Run की मदद से वेबसाइट डिप्लॉय करना

1. शुरू करने से पहले

वर्चुअल मशीन (वीएम) इंस्टेंस, क्लस्टर, पॉड, सेवाएं वगैरह बनाने और उन्हें मैनेज करने का काम, वेबसाइटों को चलाने में मुश्किल हो सकता है. बड़े और कई लेवल वाले ऐप्लिकेशन के लिए यह ठीक है, लेकिन अगर आपको सिर्फ़ अपनी वेबसाइट को डिप्लॉय और दिखाना है, तो यह प्रोसेस को ओवरहेड करना है.

Google Cloud, Knative के Cloud Run की मदद से, वीएम या Kubernetes पर डिप्लॉयमेंट के लिए ज़रूरी ओवरहेड के बिना अपनी वेबसाइट को मैनेज और डिप्लॉय कर सकता है. यह मैनेजमेंट के नज़रिए से आसान तरीका ही नहीं है. साथ ही, जब आपकी वेबसाइट पर कोई अनुरोध न आ रहा हो, तब इसे शून्य पर भी आज़माया जा सकता है.

Cloud Run की मदद से, कंटेनर में बिना सर्वर वाले डेवलपमेंट की सुविधा मिलती है. साथ ही, इसे आपके Google Kubernetes Engine (GKE) क्लस्टर पर या Cloud Run की ओर से दी जाने वाली सेवा (PaaS) समाधान के तौर पर, पूरी तरह से मैनेज किए गए प्लैटफ़ॉर्म पर भी चलाया जा सकता है. इस कोडलैब में, बाद वाली स्थिति की जांच की जाएगी.

नीचे दिया गया डायग्राम, डिप्लॉयमेंट और Cloud Run होस्टिंग का फ़्लो दिखाता है. Cloud Build के ज़रिए बनाई गई Docker इमेज से शुरुआत करें, जिसे Cloud Shell में ट्रिगर किया जा सकता है. इसके बाद, उस इमेज को Cloud Shell में कमांड देकर Cloud Run पर डिप्लॉय किया जा सकता है.

db5f05c090d5ebcb.png

ज़रूरी शर्तें

आपको क्या सीखने को मिलेगा

  • Cloud Build की मदद से, Docker इमेज बनाने और उसे gcr.io पर अपलोड करने का तरीका
  • Cloud Run में Docker इमेज डिप्लॉय करने का तरीका
  • Cloud Run डिप्लॉयमेंट को मैनेज करने का तरीका
  • Cloud Run पर किसी ऐप्लिकेशन के लिए एंडपॉइंट सेट अप करने का तरीका

आपको क्या बनाना होगा

  • एक स्टैटिक वेबसाइट, जो Docker कंटेनर के अंदर चलती है
  • इस कंटेनर का एक वर्शन जो Container Registry में मौजूद होता है
  • आपकी स्टैटिक वेबसाइट के लिए Cloud Run डिप्लॉयमेंट

आपको किन चीज़ों की ज़रूरत होगी

  • प्रोजेक्ट बनाने के लिए, एडमिन के तौर पर ऐक्सेस वाला Google खाता या प्रोजेक्ट के मालिक की भूमिका वाला प्रोजेक्ट

2. एनवायरमेंट का सेटअप

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

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

53dad2cefdae71da.png

faab21976aabeb4c.png

प्रोजेक्ट आईडी याद रखें, जो आपके प्रोजेक्ट के नाम में अपने-आप भर जाता है. प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए एक यूनीक नाम होता है. इसलिए, स्क्रीनशॉट में दिया गया नाम पहले ही ले लिया गया है. इसलिए, यह आपके काम नहीं करेगा. बाद में, इसे PROJECT_ID कहा जाएगा.

इसके बाद, Google Cloud के संसाधनों का इस्तेमाल करने और Cloud Run API चालू करने के लिए, आपको Cloud Console में बिलिंग की सुविधा चालू करनी होगी.

Cloud Run API चालू करना

नेविगेशन मेन्यू रजिस्ट्रेंट पर क्लिक करें > एपीआई और सेवाएं > डैशबोर्ड > एपीआई और सेवाएं चालू करें. .

5dbb2e6e27a55fcf.png

"Cloud Run API" खोजें, इसके बाद, Cloud Run API पर क्लिक करें > चालू करें.

f1fd486174a744cf.png

इस कोडलैब का इस्तेमाल करने के लिए आपको कुछ डॉलर से ज़्यादा खर्च नहीं करना चाहिए. हालांकि, अगर आप ज़्यादा संसाधनों का इस्तेमाल करने का फ़ैसला करते हैं या उन्हें बंद कर देते हैं, तो यह ज़्यादा हो सकता है (आखिर में खाली करें देखें). ज़्यादा जानकारी के लिए, कीमत देखें.

Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त में आज़माने की सुविधा पा सकते हैं.

Cloud Shell

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

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

  1. Cloud Console से Cloud Shell को चालू करने के लिए, Cloud Shell को चालू करें fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q पर क्लिक करें. प्रावधान करने और एनवायरमेंट से कनेक्ट होने में कुछ ही समय लगेगा.

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

14-06-2017 को 10.13.43 PM.png पर स्क्रीन शॉट लिया गया

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

gcloud auth list

कमांड आउटपुट

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

कमांड आउटपुट

[core]
project = <PROJECT_ID>

अगर किसी कारण से, प्रोजेक्ट सेट नहीं है, तो बस निम्न आदेश जारी करें:

gcloud config set project <PROJECT_ID>

क्या आपको अपना PROJECT_ID चाहिए? देखें कि आपने सेटअप के चरणों में किस आईडी का इस्तेमाल किया है या इसे Cloud Console के डैशबोर्ड में देखें:

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

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

echo $GOOGLE_CLOUD_PROJECT

कमांड आउटपुट

<PROJECT_ID>
  1. आखिर में, डिफ़ॉल्ट ज़ोन और प्रोजेक्ट कॉन्फ़िगरेशन सेट करें.
gcloud config set compute/zone us-central1-f

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

3. क्लोन सोर्स रिपॉज़िटरी

मौजूदा वेबसाइट को डिप्लॉय किया जा रहा है. इसलिए, आपको सिर्फ़ डेटा स्टोर करने की जगह से सोर्स का क्लोन बनाना होगा. इससे, Docker इमेज बनाने और Cloud Run पर डिप्लॉय करने पर ध्यान दिया जा सकता है.

अपने Cloud Shell इंस्टेंस में रिपॉज़िटरी का क्लोन बनाने और सही डायरेक्ट्री में बदलाव करने के लिए, नीचे दिए गए निर्देशों का पालन करें. आपको Node.js डिपेंडेंसी भी इंस्टॉल करनी होगी, ताकि आप डिप्लॉयमेंट से पहले अपने ऐप्लिकेशन की जांच कर सकें.

cd ~
git clone https://github.com/googlecodelabs/monolith-to-microservices.git
cd ~/monolith-to-microservices
./setup.sh

यह आपके रिपॉज़िटरी (डेटा स्टोर करने की जगह) को क्लोन करता है, डायरेक्ट्री में बदलाव करता है, और आपके ऐप्लिकेशन को स्थानीय तौर पर चलाने के लिए ज़रूरी डिपेंडेंसी इंस्टॉल करता है. स्क्रिप्ट को चलने में कुछ मिनट लग सकते हैं.

पूरी सावधानी बरतें और अपने ऐप्लिकेशन की जांच करें. अपना वेब सर्वर चालू करने के लिए, यहां दिया गया कमांड चलाएं:

cd ~/monolith-to-microservices/monolith
npm start

आउटपुट:

Monolith listening on port 8080!

वेब झलकacc630712255c604.png पर क्लिक करके और पोर्ट 8080 पर झलक देखें को चुनकर अपने ऐप्लिकेशन की झलक देखी जा सकती है.

5869738f0e9ec386.png

इससे एक नई विंडो खुलती है, जहां आप अपने Fancy Store को काम करते हुए देख सकते हैं!

9ed25c3f0cbe62fa.png

वेबसाइट देखने के बाद, इस विंडो को बंद किया जा सकता है. वेब-सर्वर प्रक्रिया रोकने के लिए, टर्मिनल विंडो में CONTROL+C (Macintosh पर Command+C) दबाएं.

4. Cloud Build की मदद से Docker कंटेनर बनाएं

अब आपकी सोर्स फ़ाइलें इस्तेमाल के लिए तैयार हैं, इसलिए ऐप्लिकेशन को डॉक करने का समय आ गया है!

आम तौर पर, आपको दो चरणों में काम करना होता है. इसके लिए, Docker कंटेनर बनाना और उसे किसी रजिस्ट्री में भेजना पड़ता है, ताकि GKE (जीकेई) से इमेज लेने के लिए उसे स्टोर किया जा सके. हालांकि, Cloud Build का इस्तेमाल करके Docker कंटेनर बनाकर, काम को आसान बनाया जा सकता है. साथ ही, एक ही कमांड से कंटेनर Registry में इमेज डाली जा सकती है! Dockerfile बनाने और उसे पुश करने की मैन्युअल प्रोसेस देखने के लिए, Container Registry के लिए क्विकस्टार्ट देखें.

Cloud Build, डायरेक्ट्री से फ़ाइलों को कंप्रेस करता है और उन्हें Cloud Storage बकेट में ले जाता है. इसके बाद, बिल्ड प्रोसेस बकेट की सभी फ़ाइलें लेकर, Dockerfile का इस्तेमाल करती है. यह Docker बिल्ड प्रोसेस चलाने के लिए उसी डायरेक्ट्री में मौजूद होती है. आपने डॉकर इमेज के लिए, होस्ट के साथ --tag फ़्लैग को gcr.io के तौर पर चुना है. इसलिए, इससे बनने वाली Docker इमेज को कंटेनर Registry में भेज दिया जाएगा.

सबसे पहले, यह पक्का करें कि आपने Cloud Build API चालू किया हुआ है. इसे चालू करने के लिए, नीचे दिया गया कमांड चलाएं:

gcloud services enable cloudbuild.googleapis.com

एपीआई चालू होने के बाद, बिल्ड प्रोसेस शुरू करने के लिए Cloud Shell में नीचे दिया गया कमांड चलाएं:

gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 .

इस प्रोसेस में कुछ मिनट लगते हैं, लेकिन इसके पूरा होने के बाद, टर्मिनल में कुछ जैसा आउटपुट होगा:

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ID                                    CREATE_TIME                DURATION  SOURCE                                                                                  IMAGES                              STATUS
1ae295d9-63cb-482c-959b-bc52e9644d53  2019-08-29T01:56:35+00:00  33S       gs://<PROJECT_ID>_cloudbuild/source/1567043793.94-abfd382011724422bf49af1558b894aa.tgz  gcr.io/<PROJECT_ID>/monolith:1.0.0  SUCCESS

अपने बिल्ड का इतिहास देखने या प्रोसेस को रीयल टाइम में देखने के लिए, Cloud Console पर जाएं. इसके बाद, नेविगेशन मेन्यू IAB पर क्लिक करें > क्लाउड बिल्ड > इतिहास. वहां आपको अपने पिछले सभी बिल्ड की सूची दिखेगी. हालांकि, आपको सिर्फ़ वही बिल्ड मिलना चाहिए जो आपने बनाया है.

4c753ede203255f6.png

बिल्ड आईडी पर क्लिक करने पर, आपको उस बिल्ड की पूरी जानकारी दिखेगी. इसमें लॉग आउटपुट भी शामिल है. इमेज के बगल में मौजूद लिंक पर क्लिक करके, बनाई गई कंटेनर इमेज देखी जा सकती है.

6e88ed1643dfe629.png

5. कंटेनर को Cloud Run में डिप्लॉय करें

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

क्लाउड रन को डिप्लॉय करने के दो तरीके हैं:

  • Cloud Run (पूरी तरह से मैनेज किया गया) PaaS मॉडल है. इसमें कंटेनर का पूरा लाइफ़साइकल मैनेज किया जाता है. आपको इस कोडलैब के लिए इस तरीके का इस्तेमाल करना होगा.
  • Cloud Run for Anthos, Cloud Run है. इसमें कंट्रोल को एक अतिरिक्त लेयर जोड़ा जाता है. इसकी मदद से, GKE (जीकेई) से क्लस्टर और पॉड को ट्रांसफ़र किया जा सकता है. ज़्यादा जानकारी के लिए, Google Cloud पर Anthos के लिए Cloud Run सेट अप करना लेख पढ़ें.

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

कमांड लाइन

अपने ऐप्लिकेशन को डिप्लॉय करने के लिए, यहां दिया गया कमांड चलाएं:

gcloud run deploy --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 --platform managed 

आपसे यह बताने के लिए कहा जाएगा कि आपको किस इलाके में विज्ञापन चलाना है. अपने सबसे नज़दीक का क्षेत्र चुनें. इसके बाद, सुझाई गई डिफ़ॉल्ट सेवा के नाम (मोनोलिथ) को स्वीकार करें.

d52d9419c5166674.png

जांच के लिए, ऐप्लिकेशन को बिना पुष्टि वाले अनुरोध भेजने की अनुमति दें. प्रॉम्प्ट पर y डालें.

3a57b32f133dad61.png

डिप्लॉयमेंट की पुष्टि करें

डिप्लॉयमेंट सही से हो गया है या नहीं, इसकी पुष्टि करने के लिए नीचे दिया गया कमांड चलाएं. Pod status को Running होने में कुछ समय लग सकता है:

gcloud run services list

[1] Cloud Run (पूरी तरह से मैनेज की गई) को चुनें.

आउटपुट:

SERVICE   REGION    URL  LAST DEPLOYED BY          LAST DEPLOYED AT
✔  monolith  us-east1 <your url>  <your email>  2019-09-16T21:07:38.267Z

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

अपने वेब ब्राउज़र में सेवाओं की सूची में दिया गया यूआरएल खोलें. ऐसा करने पर, आपको वही वेबसाइट दिखेगी जिसकी आपने स्थानीय तौर पर झलक देखी थी.

6. कम समवर्ती साथ नया संशोधन बनाएं

अब अपने ऐप्लिकेशन को फिर से डिप्लॉय करें. हालांकि, इस बार किसी एक पैरामीटर में बदलाव करें.

डिफ़ॉल्ट रूप से, Cloud Run ऐप्लिकेशन की कॉनकरंसी वैल्यू 80 होगी. इसका मतलब है कि हर कंटेनर इंस्टेंस एक बार में ज़्यादा से ज़्यादा 80 अनुरोध स्वीकार करेगा. यह सेवा (FaaS) मॉडल के तौर पर काम करने वाले फ़ंक्शन से काफ़ी हटकर है, जिसमें एक समय पर एक ही इंस्टेंस एक अनुरोध को हैंडल करता है.

1 (सिर्फ़ टेस्टिंग के लिए) की कॉन करंसी वैल्यू के साथ उसी कंटेनर इमेज को फिर से डिप्लॉय करें और देखें कि इससे क्या होता है.

gcloud run deploy --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 --platform managed --concurrency 1

आगे दिए गए सवालों के जवाब उसी तरह दें जैसे आपने पहली बार में दिया था. निर्देश मिलने के बाद, नतीजा देखने के लिए Cloud Console पर जाएं.

Cloud Run डैशबोर्ड से, जानकारी देखने के लिए मोनोलिथ सेवा पर क्लिक करें.

7d1eed2e4728a4f2.png

बदलाव टैब पर क्लिक करें. आपको दो संशोधन दिखेंगे. monolith-00002 पर क्लिक करें और जानकारी देखें. आपको दिखेगा कि एक ही समय में कई वैल्यू को घटाकर 1 कर दिया गया है.

217185c0e फ़ोकस87dd.png]

4ad481b8bcd0343d.png

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

अब फिर से डिप्लॉय किए बिना, ओरिजनल सहमति को पहले जैसा करें. इस वैल्यू को 80 या 0 के डिफ़ॉल्ट वैल्यू पर सेट किया जा सकता है. ऐसा करने पर, एक ही समय पर इस्तेमाल होने वाली सभी पाबंदियां हट जाएंगी और डिफ़ॉल्ट ज़्यादा से ज़्यादा वैल्यू पर सेट हो जाएगा. जानकारी लिखते समय, यह वैल्यू 80 होगी.

मौजूदा वर्शन को अपडेट करने के लिए, Cloud Shell में यह कमांड चलाएं:

gcloud run deploy --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 --platform managed --concurrency 80

ध्यान दें कि एक दूसरा संशोधन किया गया है, उस ट्रैफ़िक को रीडायरेक्ट किया गया है, और समवर्ती वापस 80 पर आ गया है.

7. वेबसाइट में बदलाव करना

आपकी मार्केटिंग टीम ने आपसे अपनी कंपनी की वेबसाइट का होम पेज बदलने के लिए कहा है. उनका मानना है कि कंपनी क्या है और क्या बेचती है, इस बारे में ज़्यादा जानकारी होनी चाहिए. इस सेक्शन में, आपको मार्केटिंग टीम को खुश करने के लिए होम पेज पर कुछ टेक्स्ट जोड़ना होगा!

ऐसा लगता है कि आपके किसी डेवलपर ने पहले ही index.js.new फ़ाइल नाम से बदलाव कर लिए हैं. आप बस उस फ़ाइल को index.js में कॉपी कर सकते हैं और आपके बदलाव दिखने लगेंगे. ज़रूरी बदलाव करने के लिए निर्देशों का पालन करें.

इन निर्देशों को चलाएं, अपडेट की गई फ़ाइल को सही फ़ाइल नाम पर कॉपी करें, और बदलावों की पुष्टि करने के लिए इसका कॉन्टेंट प्रिंट करें:

cd ~/monolith-to-microservices/react-app/src/pages/Home
mv index.js.new index.js
cat ~/monolith-to-microservices/react-app/src/pages/Home/index.js

मिलने वाला कोड कुछ ऐसा दिखना चाहिए:

/*
Copyright 2019 Google LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import Paper from "@material-ui/core/Paper";
import Typography from "@material-ui/core/Typography";
const useStyles = makeStyles(theme => ({
  root: {
    flexGrow: 1
  },
  paper: {
    width: "800px",
    margin: "0 auto",
    padding: theme.spacing(3, 2)
  }
}));
export default function Home() {
  const classes = useStyles();
  return (
    <div className={classes.root}>
      <Paper className={classes.paper}>
        <Typography variant="h5">
          Fancy Fashion &amp; Style Online
        </Typography>
        <br />
        <Typography variant="body1">
          Tired of mainstream fashion ideas, popular trends and societal norms?
          This line of lifestyle products will help you catch up with the Fancy trend and express your personal style.
          Start shopping Fancy items now!
        </Typography>
      </Paper>
    </div>
  );
}

आपने React कॉम्पोनेंट अपडेट कर दिए हैं, लेकिन आपको स्टैटिक फ़ाइलें जनरेट करने के लिए React ऐप्लिकेशन बनाना होगा. React ऐप्लिकेशन बनाने और उसे मोनोलिथ वाली सार्वजनिक डायरेक्ट्री में कॉपी करने के लिए, नीचे दिया गया कमांड चलाएं:

cd ~/monolith-to-microservices/react-app
npm run build:monolith

कोड अपडेट होने के बाद, अब आपको अपना Docker कंटेनर फिर से बनाना होगा और उसे Container Registry में पब्लिश करना होगा. पहले वाले निर्देश का ही इस्तेमाल किया जा सकता है. हालांकि, इस बार वर्शन लेबल अपडेट किया जा सकता है!

इमेज के अपडेट किए गए 2.0.0 वर्शन के साथ नया Cloud Build ट्रिगर करने के लिए, यह कमांड चलाएं:

cd ~/monolith-to-microservices/monolith

#Feel free to test your application
npm start

gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 .

अगले सेक्शन में, उस इमेज का इस्तेमाल करके, अपने ऐप्लिकेशन को बिना किसी डाउनटाइम के अपडेट किया जा सकता है.

8. वेबसाइट को बिना किसी डाउनटाइम के अपडेट करें

बदलाव पूरे हो गए हैं और मार्केटिंग टीम आपके अपडेट से खुश है! अब उपयोगकर्ताओं के लिए बिना किसी रुकावट के वेबसाइट को अपडेट करें.

Cloud Run हर डिप्लॉयमेंट को एक नए बदलाव के तौर पर देखता है. इसे ऑनलाइन लाया जाएगा और ट्रैफ़िक को उस पर रीडायरेक्ट कर दिया जाएगा.

अपनी वेबसाइट अपडेट करने के लिए, निर्देशों के अगले सेट का पालन करें.

कमांड लाइन

कमांड लाइन की मदद से, सेवा को फिर से डिप्लॉय किया जा सकता है. इससे इमेज को नए वर्शन में अपडेट करने के लिए, यहां दिए गए कमांड का इस्तेमाल किया जा सकता है:

gcloud run deploy --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 --platform managed

डिप्लॉयमेंट की पुष्टि करें

नीचे दिए गए निर्देश को चलाकर अपने डिप्लॉयमेंट अपडेट की पुष्टि करें:

gcloud run services describe monolith --platform managed 

आउटपुट कुछ ऐसा दिखेगा:

apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
  annotations:
    client.knative.dev/user-image: gcr.io/my-cloudrun-codelab/monolith:2.0.0
...

आप देखेंगे कि अब आपकी सेवा एक नए संशोधन में नियोजित आपकी चित्र के नवीनतम वर्शन का उपयोग कर रही है.

अपने बदलावों की पुष्टि करने के लिए, Cloud Run सेवा के बाहरी यूआरएल पर फिर से जाएं. इसके बाद, देखें कि आपके ऐप्लिकेशन का टाइटल अपडेट हो गया है.

सेवाओं की सूची बनाने और आईपी पता भूल जाने पर उसे देखने के लिए नीचे दिया गया कमांड चलाएं:

gcloud run services list

आपकी वेबसाइट पर अब वह टेक्स्ट दिखना चाहिए जिसे आपने होम पेज कॉम्पोनेंट में जोड़ा है!

451ca252acae6928.png

9. व्यवस्थित करें

कंटेनर रजिस्ट्री की इमेज मिटाएं

# Delete the container image for version 1.0.0 of our monolith
gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 --quiet

# Delete the container image for version 2.0.0 of our monolith
gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 --quiet

Cloud Storage से Cloud Build आर्टफ़ैक्ट मिटाएं

# The following command will take all source archives from all builds and delete them from cloud storage

# Run this command to print all sources:
# gcloud builds list | awk 'NR > 1 {print $4}' 

gcloud builds list | awk 'NR > 1 {print $4}' | while read line; do gsutil rm $line; done

Cloud Run सेवा मिटाएं

gcloud run services delete monolith --platform managed

10. बधाई हो

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

ज़्यादा जानें