1. खास जानकारी
इस लैब में, Cloud Deploy का इस्तेमाल करके Cloud Run पर .Net ऐप्लिकेशन को डिप्लॉय किया जाएगा. Dockerfile का इस्तेमाल किए बिना, Cloud Build की मदद से कंटेनर इमेज बनाई जाएगी. आपको Cloud Deploy की मदद से, तीन टारगेट एनवायरमेंट वाली पाइपलाइन सेट अप करनी होगी. साथ ही, एनवायरमेंट के ज़रिए रिलीज़ का प्रमोशन करने के लिए, चरणों को पूरा करना होगा. आखिर में, आपको प्रोडक्शन एनवायरमेंट में रिलीज़ को डिप्लॉय करने की अनुमति देनी होगी.
Cloud Build क्या है?
Cloud Build की मदद से, सभी प्रोग्रामिंग भाषाओं में सॉफ़्टवेयर को तेज़ी से बनाया जा सकता है.
Cloud Deploy क्या है?
Cloud Deploy, लगातार डिलीवरी की पूरी तरह से मैनेज की जाने वाली सेवा है. Cloud Deploy की मदद से, GKE, Anthos, और Cloud Run के लिए डिप्लॉयमेंट पाइपलाइन बनाई जा सकती हैं.
Cloud Run क्या है?
Cloud Run की मदद से, पूरी तरह से मैनेज किए जाने वाले प्लैटफ़ॉर्म पर, स्केले किए जा सकने वाले कंटेनर वाले ऐसे ऐप्लिकेशन डिप्लॉय किए जा सकते हैं जो Go, Python, Java, Node.js, .NET, और Ruby जैसी किसी भी भाषा में लिखे गए हों.
Skaffold क्या है?
Skaffold एक कमांड-लाइन टूल है, जो Kubernetes-नेटिव ऐप्लिकेशन के लिए लगातार डेवलपमेंट की सुविधा देता है. Cloud Deploy, रेंडर और डिप्लॉय करने की प्रोसेस के लिए Skaffold का इस्तेमाल करता है.
आपको क्या सीखने को मिलेगा
इस लैब में, आपको ये काम करने का तरीका पता चलेगा:
- Cloud Deploy की पाइपलाइन बनाना
- Dockerfile का इस्तेमाल किए बिना, Cloud Build की मदद से .Net ऐप्लिकेशन के लिए कंटेनर इमेज बनाना
- Cloud Deploy की मदद से, Cloud Run पर ऐप्लिकेशन को डिप्लॉय करना
- Cloud Deploy की रिलीज़ का प्रमोशन करना
ज़रूरी शर्तें
- इस लैब में यह माना गया है कि आपको Cloud Console और शेल एनवायरमेंट के बारे में पता है.
2. सेटअप और ज़रूरी शर्तें
Cloud प्रोजेक्ट का सेटअप
- Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.
- प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
- प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे सेट करने के बाद बदला नहीं जा सकता. Cloud Console, अपने-आप एक यूनीक स्ट्रिंग जनरेट करता है. आम तौर पर, आपको यह जानने की ज़रूरत नहीं होती कि यह स्ट्रिंग क्या है. ज़्यादातर कोडलैब में, आपको प्रोजेक्ट आईडी का रेफ़रंस देना होगा. आम तौर पर, इसे
PROJECT_ID
के तौर पर पहचाना जाता है. अगर आपको जनरेट किया गया आईडी पसंद नहीं आता है, तो कोई दूसरा आईडी जनरेट किया जा सकता है. इसके अलावा, आपके पास खुद से भी यह पता लगाने का विकल्प है कि यह सुविधा उपलब्ध है या नहीं. इस चरण के बाद, इसे बदला नहीं जा सकता. यह प्रोजेक्ट के दौरान बना रहेगा. - आपकी जानकारी के लिए बता दें कि तीसरी वैल्यू, प्रोजेक्ट नंबर होती है. इसका इस्तेमाल कुछ एपीआई करते हैं. दस्तावेज़ में इन तीनों वैल्यू के बारे में ज़्यादा जानें.
- इसके बाद, आपको Cloud के संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी. इस कोडलैब को चलाने में ज़्यादा खर्च नहीं आता. इस ट्यूटोरियल के बाद, आपसे कोई शुल्क न लिया जाए, इसके लिए संसाधनों को बंद किया जा सकता है. इसके लिए, आपने जो संसाधन बनाए हैं उन्हें मिटाएं या पूरा प्रोजेक्ट मिटाएं. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले कार्यक्रम में शामिल हो सकते हैं.
एनवायरमेंट सेटअप करना
सर्च बार की दाईं ओर मौजूद आइकॉन पर क्लिक करके, Cloud Shell चालू करें.
प्रोजेक्ट के एनवायरमेंट वैरिएबल सेट करने के लिए, Cloud Shell में यह कमांड चलाएं:
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \
--format='value(projectNumber)')
export REGION=us-central1
एपीआई चालू करें:
gcloud services enable \
run.googleapis.com \
cloudbuild.googleapis.com \
clouddeploy.googleapis.com \
artifactregistry.googleapis.com
ऐप्लिकेशन कंटेनर की इमेज सेव करने के लिए, Artifact Registry का डेटा स्टोर करने की जगह बनाएं:
gcloud artifacts repositories create containers-repo \
--repository-format=docker \
--location=${REGION} \
--description="Containers repository"
3. कॉन्फ़िगरेशन फ़ाइलों की समीक्षा करना
ऐप्लिकेशन के सोर्स कोड को क्लोन करें:
git clone https://github.com/gitrey/deploy-cloudrun-app-with-clouddeploy.git
cd deploy-cloudrun-app-with-clouddeploy
Cloud Deploy की पाइपलाइन कॉन्फ़िगरेशन की समीक्षा करें:
clouddeploy.yaml
apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
name: cloud-run-pipeline
description: application deployment pipeline
serialPipeline:
stages:
- targetId: dev-env
profiles: [dev]
- targetId: qa-env
profiles: [qa]
- targetId: prod-env
profiles: [prod]
---
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: dev-env
description: Cloud Run development service
run:
location: projects/_PROJECT_ID/locations/us-west1
---
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: qa-env
description: Cloud Run QA service
run:
location: projects/_PROJECT_ID/locations/us-central1
---
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: prod-env
description: Cloud Run PROD service
run:
location: projects/_PROJECT_ID/locations/us-south1
skaffold.yaml
फ़ाइल की समीक्षा करें, जिसमें तीन एनवायरमेंट तय किए गए हैं और टारगेट सेवा के तौर पर Cloud Run का इस्तेमाल किया जा रहा है.
skaffold.yaml
apiVersion: skaffold/v3alpha1
kind: Config
metadata:
name: cloud-run-app
profiles:
- name: dev
manifests:
rawYaml:
- deploy-dev.yaml
- name: qa
manifests:
rawYaml:
- deploy-qa.yaml
- name: prod
manifests:
rawYaml:
- deploy-prod.yaml
deploy:
cloudrun: {}
सेवा की कॉन्फ़िगरेशन फ़ाइलों की समीक्षा करें.
deploy-dev.yaml
kind: Service
metadata:
name: app-dev
spec:
template:
spec:
containers:
- image: app
resources:
limits:
cpu: 1000m
memory: 128Mi
deploy-qa.yaml
kind: Service
metadata:
name: app-dev
spec:
template:
spec:
containers:
- image: app
deploy-prod.yaml
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: app-prod
spec:
template:
spec:
containers:
- image: app
कंटेनर इमेज बनाने और Cloud Deploy रिलीज़ बनाने के तरीके के बारे में बताने वाली cloudbuild.yaml
फ़ाइल देखें:
cloudbuild.yaml
steps:
- name: 'gcr.io/k8s-skaffold/pack'
entrypoint: 'pack'
args: ['build',
'--builder=gcr.io/buildpacks/builder',
'--publish', '${_REGION}-docker.pkg.dev/${PROJECT_ID}/containers-repo/app:$BUILD_ID']
id: Build and package .net app
- name: gcr.io/google.com/cloudsdktool/cloud-sdk:slim
args:
[
"deploy", "releases", "create", "release-$_RELEASE_TIMESTAMP",
"--delivery-pipeline", "cloud-run-pipeline",
"--region", "${_REGION}",
"--images", "app=${_REGION}-docker.pkg.dev/${PROJECT_ID}/containers-repo/app:$BUILD_ID"
]
entrypoint: gcloud
4. Cloud Deploy की पाइपलाइन बनाना
clouddeploy.yaml में _PROJECT_ID की वैल्यू बदलें:
sed -i "s/_PROJECT_ID/$PROJECT_ID/g" clouddeploy.yaml
Cloud Deploy की पाइपलाइन बनाएं:
gcloud deploy apply \
--file=clouddeploy.yaml \
--region=${REGION} \
--project=${PROJECT_ID}
Cloud Deploy में, बनाई गई पाइपलाइन की समीक्षा करें.
5. कंटेनर इमेज बनाना और रिलीज़ बनाना
Cloud Build सेवा खाते में, Cloud Deploy ऑपरेटर की अनुमतियां जोड़ें:
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member=serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com \
--role=roles/clouddeploy.operator
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member=serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com \
--role=roles/iam.serviceAccountUser
कंटेनर इमेज और Cloud Deploy रिलीज़ बनाएं:
export RELEASE_TIMESTAMP=$(date '+%Y%m%d-%H%M%S')
gcloud builds submit \
--config cloudbuild-plus.yaml \
--substitutions=_REGION=${REGION},_RELEASE_TIMESTAMP=${RELEASE_TIMESTAMP}
Cloud Deploy में, बनाई गई रिलीज़ की समीक्षा करें. डेवलपर एनवायरमेंट में डिप्लॉयमेंट पूरा होने तक इंतज़ार करें.
6. रिलीज़ को QA और PROD एनवायरमेंट में प्रमोट करना
Cloud Console या Cloud Shell का इस्तेमाल करके, रिलीज़ को अगले टारगेट(qa-env) पर प्रमोट करें.
Cloud Shell की मदद से रिलीज़ का प्रमोशन करें. इसके लिए, gcloud कमांड चलाएं.
gcloud beta deploy releases promote \
--release="release-${RELEASE_TIMESTAMP}" \
--delivery-pipeline=cloud-run-pipeline \
--region=${REGION} \
--quiet
क्यूए एनवायरमेंट में डिप्लॉयमेंट पूरा होने तक इंतज़ार करें. रिलीज़ को अगले टारगेट(prod-env) पर प्रमोट करें.
gcloud beta deploy releases promote \
--release="release-${RELEASE_TIMESTAMP}" \
--delivery-pipeline=cloud-run-pipeline \
--region=${REGION} \
--quiet
Cloud Console में Cloud Deploy खोलें और प्रोडक्शन डिप्लॉयमेंट के लिए रिलीज़ को मंज़ूरी दें.
Cloud Deploy पाइपलाइन की स्थिति और उपलब्ध DORA मेट्रिक ("डिप्लॉयमेंट की संख्या", "डिप्लॉयमेंट की फ़्रीक्वेंसी", "डिप्लॉयमेंट में होने वाली गड़बड़ी की दर") की समीक्षा करें.
मेट्रिक | जानकारी |
डिप्लॉयमेंट की संख्या | आपकी डिलीवरी पाइपलाइन में, फ़ाइनल टारगेट पर डिप्लॉय किए गए और डिप्लॉय न हो पाए गए वर्शन की कुल संख्या. |
डिप्लॉयमेंट की फ़्रीक्वेंसी | डिलीवरी पाइपलाइन, आपकी डिलीवरी पाइपलाइन में फ़ाइनल टारगेट पर कितनी बार डिप्लॉय होती है.यह DevOps Research and Assessment (DORA) प्रोग्राम की चार मुख्य मेट्रिक में से एक है. |
डिप्लॉयमेंट न हो पाने की दर | आपकी डिलीवरी पाइपलाइन में, टारगेट के लिए रोल आउट न होने वाले वर्शन का प्रतिशत. |
Cloud Run में डिप्लॉय किए गए ऐप्लिकेशन की समीक्षा करें:
7. बधाई हो!
बधाई हो, आपने कोडलैब पूरा कर लिया है!
हमने इन विषयों पर जानकारी दी है:
- Cloud Deploy की पाइपलाइन बनाने का तरीका
- Cloud Build की मदद से, .Net ऐप्लिकेशन के लिए कंटेनर इमेज बनाने का तरीका
- Cloud Deploy की मदद से, Cloud Run में ऐप्लिकेशन को डिप्लॉय करने का तरीका
- Cloud Deploy की रिलीज़ का प्रमोशन करने का तरीका
व्यवस्थित करें
इस ट्यूटोरियल में इस्तेमाल किए गए संसाधनों के लिए, आपके Google Cloud खाते से शुल्क न लिया जाए, इसके लिए संसाधनों वाले प्रोजेक्ट को मिटाएं या प्रोजेक्ट को बनाए रखें और अलग-अलग संसाधनों को मिटाएं.
प्रोजेक्ट मिटाना
बिलिंग की सुविधा बंद करने का सबसे आसान तरीका, ट्यूटोरियल के लिए बनाया गया प्रोजेक्ट मिटाना है.