1. खास जानकारी
इस लैब में, दो-टियर वाला माइक्रोसेवा डिप्लॉय किया जाएगा. इसमें एक पॉड, GKE Autopilot पर चलेगा और उसे AlloyDB डेटाबेस के निजी इंस्टेंस से कनेक्ट किया जाएगा. कस्टमर सर्विस ऐप्लिकेशन, Cymbal Eats सिस्टम का हिस्सा है. यह रजिस्टर किए गए उपयोगकर्ताओं को मैनेज करने की सुविधा देता है. कस्टमर सर्विस ऐप्लिकेशन, Java पर आधारित एक माइक्रोसेवा है, जो Quarkus फ़्रेमवर्क का इस्तेमाल करती है.

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

GKE Autopilot क्या है?
GKE Autopilot, GKE में काम करने का एक ऐसा मोड है जिसमें Google, आपके क्लस्टर के कॉन्फ़िगरेशन को मैनेज करता है. इसमें नोड, स्केलिंग, सुरक्षा, और पहले से कॉन्फ़िगर की गई अन्य सेटिंग शामिल हैं. Autopilot क्लस्टर, ज़्यादातर प्रोडक्शन वर्कलोड चलाने के लिए ऑप्टिमाइज़ किए जाते हैं. साथ ही, ये आपके Kubernetes मेनिफ़ेस्ट के आधार पर कंप्यूट संसाधन उपलब्ध कराते हैं. ऑप्टिमाइज़ किए गए कॉन्फ़िगरेशन में, क्लस्टर और वर्कलोड सेटअप, स्केलेबिलिटी, और सुरक्षा के लिए GKE के सबसे सही तरीके और सुझावों का पालन किया जाता है. पहले से मौजूद सेटिंग की सूची देखने के लिए, Autopilot और Standard की तुलना करने वाली टेबल देखें.
AlloyDB क्या है?
यह PostgreSQL के साथ काम करने वाला पूरी तरह से मैनेज किया जाने वाला डेटाबेस सेवा है. इसका इस्तेमाल, एंटरप्राइज़ डेटाबेस के सबसे मुश्किल वर्कलोड के लिए किया जा सकता है. AlloyDB, बेहतर परफ़ॉर्मेंस, स्केल, और उपलब्धता के लिए, Google की सबसे अच्छी सुविधाओं को PostgreSQL के साथ जोड़ता है. PostgreSQL, सबसे लोकप्रिय ओपन-सोर्स डेटाबेस इंजन में से एक है.
आपको क्या सीखने को मिलेगा
इस लैब में, आपको यह तरीका सीखने को मिलेगा:
- AlloyDB डेटाबेस का निजी इंस्टेंस बनाना
- GKE Autopilot क्लस्टर पर कोई ऐप्लिकेशन डिप्लॉय करना, जो AlloyDB इंस्टेंस से कनेक्ट होता है
ज़रूरी शर्तें
- इस लैब में, यह मान लिया जाता है कि आपको Cloud Console और Cloud Shell एनवायरमेंट के बारे में जानकारी है.
- GKE और AlloyDB का पहले से अनुभव होना ज़रूरी नहीं है. हालांकि, यह मददगार साबित हो सकता है.
2. सेटअप और ज़रूरी शर्तें
Cloud Project का सेटअप
- Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.



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

रिपॉज़िटरी क्लोन करें और डायरेक्ट्री पर जाएं. इसके बाद, टर्मिनल में नीचे दिया गया कमांड कॉपी करके चिपकाएं और Enter दबाएं:
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service
ज़रूरी डिपेंडेंसी डिप्लॉय करें gke-lab-setup.sh
ये संसाधन बनाए जाएंगे:
- AlloyDB क्लस्टर और इंस्टेंस
- Cloud Run जॉब और कस्टमर सर्विस के लिए कंटेनर इमेज सेव करने के लिए, Artifact Registry
- AlloyDB डेटाबेस के साथ कम्यूनिकेट करने के लिए, Cloud Run जॉब के लिए वीपीसी ऐक्सेस कनेक्टर
- AlloyDB डेटाबेस बनाने के लिए, Cloud Run जॉब
- GKE Autopilot क्लस्टर
./gke-lab-setup.sh
अगर अनुमति देने के लिए कहा जाए, तो "अनुमति दें" पर क्लिक करके आगे बढ़ें.

सेटअप में करीब 10 मिनट लगेंगे. ज़रूरी डिपेंडेंसी बनाने के लिए इस्तेमाल की गई सेटअप स्क्रिप्ट की समीक्षा करें.
gke-lab-setup.sh
अगले चरण पूरे करने से पहले, स्क्रिप्ट के पूरा होने और नीचे दिया गया आउटपुट दिखने तक इंतज़ार करें.
Job [db-job] has successfully been created. To execute this job, use: gcloud beta run jobs execute db-job OK Creating execution... Done. OK Provisioning resources... Done. Execution [db-job-k94ps] has successfully started running.
3. ऐप्लिकेशन डिप्लॉय करना
AlloyDB क्लस्टर की समीक्षा करना
बनाए गए AlloyDB इंस्टेंस की समीक्षा करने के लिए, नीचे दिया गया कमांड चलाएं:
gcloud alloydb instances describe customer-instance --cluster=customer-cluster --region=us-central1
आउटपुट का सैंपल:
createTime: '2023-01-06T14:40:07.213288293Z' instanceType: PRIMARY ipAddress: 10.77.176.2 machineConfig: cpuCount: 2 name: projects/cymbal-eats-20056-16671/locations/us-central1/clusters/customer-cluster/instances/customer-instance nodes: - zoneId: us-central1-f queryInsightsConfig: queryPlansPerMinute: 5 queryStringLength: 1024 recordApplicationTags: true recordClientAddress: true reconciling: false state: READY uid: df90d57d-88df-49be-a626-6dfec0513e64 updateTime: '2023-01-06T14:49:40.907977843Z' writableNode: zoneId: us-central1-b
कंसोल में उपलब्ध सुविधाएं(क्वेरी इनसाइट, मॉनिटरिंग) एक्सप्लोर करें.

GKE Autopilot क्लस्टर की समीक्षा करना
प्रोजेक्ट के एनवायरमेंट वैरिएबल सेट करें:
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')
शुरुआती सेटअप के दौरान, क्लस्टर को नीचे दिए गए कमांड का इस्तेमाल करके बनाया गया था. आपको यह कमांड चलाने की ज़रूरत नहीं है:
gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
बनाए गए GKE Autopilot क्लस्टर को देखने के लिए, यह कमांड चलाएं:
gcloud container clusters list
आउटपुट का सैंपल:

क्लस्टर के क्रेडेंशियल सेव करने के लिए, यह कमांड चलाएं:
CLUSTER_NAME=rewards-cluster
REGION=us-central1
gcloud container clusters get-credentials $CLUSTER_NAME --region=$REGION
कोई ऐप्लिकेशन डिप्लॉय करना
इसके बाद, कस्टमर सर्विस ऐप्लिकेशन डिप्लॉय किया जाएगा.
कस्टमर सर्विस ऐप्लिकेशन, Java पर आधारित एक माइक्रोसेवा है, जो Quarkus फ़्रेमवर्क का इस्तेमाल करती है.
cymbal-eats/customer-service फ़ोल्डर पर जाएं. इसके बाद, कंटेनर इमेज बनाने और अपलोड करने के लिए, ये कमांड चलाएं:
./mvnw clean package -DskipTests
export CUSTOMER_SERVICE_IMAGE=gcr.io/$PROJECT_ID/customer-service:1.0.0
gcloud builds submit --tag $CUSTOMER_SERVICE_IMAGE .
सबसे नए बिल्ड की जानकारी देखने के लिए, कंसोल में Cloud Build खोलें.

AlloyDB के निजी आईपी पते की वैल्यू का इस्तेमाल करके, नीचे दिया गया एनवायरमेंट वैरिएबल सेट करें:
export DB_HOST=$(gcloud beta alloydb instances describe customer-instance \
--cluster=customer-cluster \
--region=$REGION \
--format=json | jq \
--raw-output ".ipAddress")
echo $DB_HOST
डेटाबेस के क्रेडेंशियल सेव करने के लिए, Kubernetes सीक्रेट ऑब्जेक्ट बनाने के लिए, नीचे दिए गए कमांड चलाएं. इन क्रेडेंशियल का इस्तेमाल, कस्टमर सर्विस ऐप्लिकेशन, डेटाबेस से कनेक्ट करने के लिए करेगा:
DB_NAME=customers
DB_USER=postgres
DB_PASSWORD=password123
kubectl create secret generic gke-alloydb-secrets \
--from-literal=database=$DB_NAME \
--from-literal=username=$DB_USER \
--from-literal=password=$DB_PASSWORD \
--from-literal=db_host=$DB_HOST
deployment.yaml फ़ाइल में CUSTOMER_SERVICE_IMAGE को बदलने के लिए, यह कमांड चलाएं:
sed "s@CUSTOMER_SERVICE_IMAGE@$CUSTOMER_SERVICE_IMAGE@g" deployment.yaml.tmpl > customer-service-deployment.yaml
ऐप्लिकेशन डिप्लॉय करने के लिए, यह कमांड चलाएं:
kubectl apply -f customer-service-deployment.yaml
ऐप्लिकेशन को RUNNING स्थिति में आने में कुछ समय लगेगा.
एक्सटर्नल आईपी बनाने के लिए, यह कमांड चलाएं. इसका इस्तेमाल, टेस्ट के चरणों में किया जाएगा:
SERVICE_NAME=customer-service
kubectl expose deployment $SERVICE_NAME \
--type LoadBalancer --port 80 --target-port 8080
बनाए गए संसाधनों की पुष्टि करने के लिए, यह कमांड चलाएं:
kubectl get all
आउटपुट का सैंपल:

4. ऐप्लिकेशन की जांच करना
कस्टमर सर्विस का यूआरएल सेव करने के लिए, नीचे दिए गए कमांड चलाएं.
kubectl get svc
पिछले आउटपुट से मिले एक्सटर्नल आईपी की वैल्यू का इस्तेमाल करके, नीचे दिया गया एनवायरमेंट वैरिएबल सेट करें.
CUSTOMER_SERVICE_URL=$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
नया ग्राहक रिकॉर्ड बनाने के लिए, नीचे दिए गए कमांड चलाएं:
curl -X POST $CUSTOMER_SERVICE_URL/customer \
-H 'Content-Type: application/json' \
-d '{"id": "id1","rewardPoints": 3,"address": "1845 Denise St","city": "Mountain View","createDateTime": "2022-11-11T15:56:45.487566","email": "ajensen9090+eats@gmail.com","name": "Angela Jensen","state": "CA","updateDateTime": "2022-11-11T15:56:45.866125","zip": "94043"}'
लॉग मैसेज जनरेट करने के लिए, ऊपर दिया गया कमांड कई बार चलाएं. इन लॉग मैसेज को बाद में, Logs Explorer में देखा जा सकेगा.
ग्राहक रिकॉर्ड की समीक्षा करना
बनाए गए ग्राहक रिकॉर्ड को देखने के लिए, नीचे दिए गए कमांड चलाएं.
curl $CUSTOMER_SERVICE_URL/customer | jq
आउटपुट का सैंपल:
[
{
"address": "1845 Denise St",
"city": "Mountain View",
"createDateTime": "2023-01-06T16:13:19.118744",
"email": "ajensen9090+eats@gmail.com",
"id": "id1",
"name": "Angela Jensen",
"rewardPoints": 3,
"state": "CA",
"updateDateTime": "2023-01-06T16:13:19.118896",
"zip": "94043"
}
]
GKE वर्कलोड और सेवाओं की समीक्षा करना
Cloud Console में Kubernetes Engine खोलें और बनाए गए वर्कलोड और सेवाओं की समीक्षा करें.


ऐप्लिकेशन लॉग
Logs Explorer खोलें और ऐसे लॉग खोजें जिनमें "Customer already exists" टेक्स्ट शामिल हो.

5. बधाई हो!
बधाई हो, आपने यह कोडलैब पूरा कर लिया है!
हमने इन विषयों पर चर्चा की:
- AlloyDB डेटाबेस का निजी इंस्टेंस बनाने का तरीका
- GKE Autopilot क्लस्टर पर कोई ऐप्लिकेशन डिप्लॉय करने का तरीका, जो AlloyDB इंस्टेंस से कनेक्ट होता है
इसके बाद क्या होगा?
Cymbal Eats के अन्य कोडलैब देखें:
- Eventarc की मदद से, Cloud Workflows ट्रिगर करना
- Cloud Storage से इवेंट प्रोसेसिंग को ट्रिगर करना
- Cloud Run को निजी CloudSQL से कनेक्ट करना
- Cloud Run से पूरी तरह मैनेज किए जा रहे डेटाबेस से कनेक्ट करना
- Identity Aware Proxy (IAP) की मदद से, बिना सर्वर वाले ऐप्लिकेशन को सुरक्षित करना
- Cloud Scheduler की मदद से Cloud Run जॉब ट्रिगर करना
- Cloud Run पर सुरक्षित तरीके से डिप्लॉय करना
- Cloud Run पर इन्ग्रेस डेटा ट्रैफ़िक को सुरक्षित करना
स्टोरेज में जगह बनाएं
इस ट्यूटोरियल में इस्तेमाल किए गए संसाधनों के लिए, अपने Google Cloud खाते से शुल्क लिए जाने से बचने के लिए, या तो उन संसाधनों वाले प्रोजेक्ट को मिटाएं या प्रोजेक्ट को सेव रखें और उसमें मौजूद संसाधनों को मिटाएं.
प्रोजेक्ट मिटाना
बिलिंग से बचने का सबसे आसान तरीका है कि ट्यूटोरियल के लिए बनाया गया प्रोजेक्ट मिटा दिया जाए.