
Cloud Run, मैनेज किया गया कंप्यूट प्लैटफ़ॉर्म है. इसकी मदद से, एचटीटीपी अनुरोधों के ज़रिए कॉल किए जा सकने वाले स्टेटलेस कंटेनर चलाए जा सकते हैं. Cloud Run, सर्वरलेस है. इससे इन्फ़्रास्ट्रक्चर को मैनेज करने की ज़रूरत नहीं पड़ती. इसलिए, सबसे ज़रूरी काम यानी शानदार ऐप्लिकेशन बनाने पर फ़ोकस किया जा सकता है. इसे Knative से बनाया गया है. इससे आपको अपने कंटेनर को Cloud Run (पूरी तरह से मैनेज किया गया) या Cloud Run for Anthos के साथ चलाने का विकल्प मिलता है. इस कोडलैब का मकसद, आपको कंटेनर इमेज बनाने और उसे Cloud Run पर डिप्लॉय करने का तरीका सिखाना है.
ज़रूरी शर्तें
लागू नहीं
अपने हिसाब से एनवायरमेंट सेट अप करना
अगर आपके पास पहले से कोई Google खाता (Gmail या Google Apps) नहीं है, तो आपको एक खाता बनाना होगा. Google Cloud Platform Console (console.cloud.google.com) में साइन इन करें और एक नया प्रोजेक्ट बनाएं:
प्रोजेक्ट आईडी याद रखें. यह सभी Google Cloud प्रोजेक्ट के लिए एक यूनीक नाम होता है. ऊपर दिया गया नाम पहले ही इस्तेमाल किया जा चुका है. इसलिए, यह आपके लिए काम नहीं करेगा. माफ़ करें! इस कोड लैब में इसे बाद में PROJECT_ID के तौर पर दिखाया जाएगा.
इसके बाद, Google Cloud संसाधनों का इस्तेमाल करने के लिए, आपको Cloud Console में बिलिंग चालू करनी होगी.
इस कोडलैब को पूरा करने में आपको कुछ डॉलर से ज़्यादा खर्च नहीं करने पड़ेंगे. हालांकि, अगर आपको ज़्यादा संसाधनों का इस्तेमाल करना है या उन्हें चालू रखना है, तो यह खर्च बढ़ सकता है. इस दस्तावेज़ के आखिर में "सफ़ाई" सेक्शन देखें.
Google Cloud Platform के नए उपयोगकर्ता, 300 डॉलर के क्रेडिट के साथ मुफ़्त में आज़माने की सुविधा पा सकते हैं.
Cloud Shell
Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है.
Debian पर आधारित इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद होते हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. साथ ही, Google Cloud पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इसका मतलब है कि इस कोडलैब के लिए, आपको सिर्फ़ एक ब्राउज़र की ज़रूरत होगी. यह Chromebook पर भी काम करता है.
Google Cloud Shell को चालू करने के लिए, डेवलपर कंसोल में सबसे ऊपर दाईं ओर मौजूद बटन पर क्लिक करें. इसे चालू होने और एनवायरमेंट से कनेक्ट होने में कुछ ही समय लगेगा:
"Cloud Shell शुरू करें" बटन पर क्लिक करें:
क्लाउड शेल से कनेक्ट होने के बाद, आपको दिखेगा कि आपकी पुष्टि पहले ही हो चुकी है और प्रोजेक्ट पहले से ही आपके PROJECT_ID पर सेट है :
gcloud auth list
कमांड आउटपुट
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
कमांड आउटपुट
[core] project = <PROJECT_ID>
Cloud Shell, कुछ एनवायरमेंट वैरिएबल को डिफ़ॉल्ट रूप से भी सेट करता है. ये वैरिएबल, आने वाले समय में कमांड चलाने के दौरान आपके काम आ सकते हैं.
echo $GOOGLE_CLOUD_PROJECT
कमांड आउटपुट
<PROJECT_ID>
अगर किसी वजह से प्रोजेक्ट सेट नहीं किया गया है, तो यह कमांड दें :
gcloud config set project <PROJECT_ID>
क्या आपको 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.
आपको एचटीटीपी अनुरोधों का जवाब देने वाला, express पर आधारित एक सामान्य Node.js ऐप्लिकेशन बनाना होगा.
अपना ऐप्लिकेशन बनाने के लिए, Cloud Shell का इस्तेमाल करके helloworld-nodejs नाम की नई डायरेक्ट्री बनाएं और डायरेक्ट्री को इसमें बदलें.
mkdir helloworld-nodejs cd helloworld-nodejs
नीचे दिए गए कॉन्टेंट के साथ एक package.json फ़ाइल बनाएं:
{
"name": "cloudrun-helloworld",
"version": "1.0.0",
"description": "Simple hello world sample in Node",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"author": "",
"license": "Apache-2.0",
"dependencies": {
"express": "^4.17.1"
}
}सबसे अहम बात यह है कि ऊपर दी गई फ़ाइल में, स्टार्ट स्क्रिप्ट कमांड और Express वेब ऐप्लिकेशन फ़्रेमवर्क पर निर्भरता शामिल है.
इसके बाद, उसी डायरेक्ट्री में index.js फ़ाइल बनाएं और इसमें यह कॉन्टेंट कॉपी करें:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
console.log('Hello world received a request.');
const target = process.env.TARGET || 'World';
res.send(`Hello ${target}!`);
});
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log('Hello world listening on port', port);
});यह कोड एक बुनियादी वेब सर्वर बनाता है, जो PORT एनवायरमेंट वैरिएबल से तय किए गए पोर्ट पर काम करता है. अब आपका ऐप्लिकेशन कंटेनर में रखने, उसकी जांच करने, और उसे Container Registry में अपलोड करने के लिए तैयार है.
सैंपल ऐप्लिकेशन को कंटेनर में रखने के लिए, सोर्स फ़ाइलों वाली डायरेक्ट्री में Dockerfile नाम की एक नई फ़ाइल बनाएं. इसके बाद, यहां दिया गया कॉन्टेंट उसमें कॉपी करें:
# Use the official lightweight Node.js 12 image.
# https://hub.docker.com/_/node
FROM node:12-slim
# Create and change to the app directory.
WORKDIR /usr/src/app
# Copy application dependency manifests to the container image.
# A wildcard is used to ensure both package.json AND package-lock.json are copied.
# Copying this separately prevents re-running npm install on every code change.
COPY package*.json ./
# Install production dependencies.
RUN npm install --only=production
# Copy local code to the container image.
COPY . ./
# Run the web service on container startup.
CMD [ "npm", "start" ]अब, Cloud Build का इस्तेमाल करके अपनी कंटेनर इमेज बनाएं. इसके लिए, Dockerfile वाली डायरेक्ट्री से यह कमांड चलाएं:
gcloud builds submit --tag gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld
$GOOGLE_CLOUD_PROJECT एक एनवायरमेंट वैरिएबल है. Cloud Shell में कमांड चलाने पर, इसमें आपका Google Cloud प्रोजेक्ट आईडी होता है. gcloud config get-value project चलाकर भी इसे पाया जा सकता है.
रजिस्ट्री में पुश करने के बाद, आपको SUCCESS मैसेज दिखेगा. इसमें इमेज का नाम (gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld) होगा. इमेज को Container Registry में सेव किया जाता है. इसे ज़रूरत पड़ने पर फिर से इस्तेमाल किया जा सकता है.
इस कमांड का इस्तेमाल करके, अपने मौजूदा प्रोजेक्ट से जुड़ी सभी कंटेनर इमेज की सूची बनाई जा सकती है:
gcloud container images list
अगर आपको Cloud Shell से ऐप्लिकेशन को स्थानीय तौर पर चलाना और टेस्ट करना है, तो इस स्टैंडर्ड docker कमांड का इस्तेमाल करके इसे शुरू करें:
docker run -d -p 8080:8080 gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld
Cloud Shell में, वेब प्रीव्यू
पर क्लिक करें और पोर्ट 8080 पर झलक देखें को चुनें.

इससे एक ब्राउज़र विंडो खुलती है, जिसमें Hello World! लिखा होता है

इसके अलावा, curl localhost:8080 का इस्तेमाल भी किया जा सकता है.
कंटेनर में मौजूद ऐप्लिकेशन को Cloud Run पर डिप्लॉय करने के लिए, इस कमांड का इस्तेमाल करें. पक्का करें कि आपने इसे उस ऐप्लिकेशन के सही इमेज नाम के हिसाब से अडजस्ट किया हो जिसे आपने बनाया है या gcr.io/cloudrun/hello पहले से बनी इमेज का इस्तेमाल किया हो:
gcloud run deploy helloworld \ --image gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld \ --platform managed \ --region us-central1 \ --allow-unauthenticated
--allow-unauthenticated डिप्लॉय करने के विकल्प की मदद से, पुष्टि किए बिना ऐप्लिकेशन को ऐक्सेस किया जा सकता है. --platform managed \ डिप्लॉय विकल्प का मतलब है कि आपने पूरी तरह से मैनेज किए गए एनवायरमेंट का अनुरोध किया है. इसका मतलब यह नहीं है कि आपने Anthos के ज़रिए Kubernetes इन्फ़्रास्ट्रक्चर का अनुरोध किया है.
डिप्लॉयमेंट पूरा होने तक कुछ देर इंतज़ार करें. इसके पूरा होने पर, कमांड लाइन में सेवा का यूआरएल दिखता है.
Service [helloworld] revision [helloworld-00001] has been deployed and is serving traffic at https://helloworld-wdl7fdwaaa-uc.a.run.app
अब वेब ब्राउज़र में सेवा का यूआरएल खोलकर, डिप्लॉय किए गए कंटेनर पर जाया जा सकता है:

Cloud Run, मिले हुए अनुरोधों को मैनेज करने के लिए, आपकी कंटेनर इमेज को अपने-आप और हॉरिज़ॉन्टली स्केल अप करता है. इसके बाद, मांग कम होने पर इसे स्केल डाउन कर देता है. अनुरोध को पूरा करने के दौरान इस्तेमाल किए गए सीपीयू, मेमोरी, और नेटवर्किंग के लिए ही आपको पेमेंट करना होता है.
Cloud Run, सेवा का इस्तेमाल न किए जाने पर कोई शुल्क नहीं लेता. हालाँकि, बनाई गई कंटेनर इमेज को सेव करने के लिए आपसे शुल्क लिया जा सकता है.
शुल्क से बचने के लिए, Google Cloud प्रोजेक्ट को मिटाया जा सकता है. इससे उस प्रोजेक्ट के लिए इस्तेमाल किए गए सभी संसाधनों की बिलिंग बंद हो जाएगी. इसके अलावा, इस कमांड का इस्तेमाल करके, helloworld इमेज को मिटाया जा सकता है:
gcloud container images delete gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld
Cloud Run सेवा को मिटाने के लिए, इस कमांड का इस्तेमाल करें:
gcloud run services delete helloworld \ --platform managed \ --region us-central1
बधाई हो! आपने Cloud Run पर, कंटेनर इमेज में पैक किया गया ऐप्लिकेशन डिप्लॉय किया हो.
ज़्यादा जानें
अगला चरण यह होगा कि आप क्विकस्टार्ट: Google Cloud पर Cloud Run for Anthos में डिप्लॉय करना लेख पढ़ें.
कोड सोर्स से Cloud Run के लिए, बिना किसी स्टेटस वाला एचटीटीपी कंटेनर बनाने और उसे Container Registry में पुश करने के बारे में ज़्यादा जानने के लिए, यहां दिए गए संसाधन देखें:
Knative के बारे में ज़्यादा जानने के लिए, Knative पर जाएं. यह एक ओपन सोर्स प्रोजेक्ट है.