GKE Autopilot पर चल रहे ऐप्लिकेशन से Private AlloyDB के इंस्टेंस से कनेक्ट करना

1. खास जानकारी

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

e8a5140b09521b7a.png

AlloyDB, निजी सेवाओं के ऐक्सेस के लिए कॉन्फ़िगर किए गए निजी, इंटरनल आईपी पतों के ज़रिए नेटवर्क कनेक्टिविटी की सुविधा देता है.

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

44662d7a086358de.png

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 का सेटअप

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.

b35bf95b8bf3d5d8.pnga99b7ace416376c4.pngbd84a6d3004737c5.png

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

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

सर्च बार के दाईं ओर मौजूद आइकॉन पर क्लिक करके, Cloud Shell चालू करें.

eb0157a992f16fa3.png

रिपॉज़िटरी क्लोन करें और डायरेक्ट्री पर जाएं. इसके बाद, टर्मिनल में नीचे दिया गया कमांड कॉपी करके चिपकाएं और 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

अगर अनुमति देने के लिए कहा जाए, तो "अनुमति दें" पर क्लिक करके आगे बढ़ें.

6356559df3eccdda.png

सेटअप में करीब 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

कंसोल में उपलब्ध सुविधाएं(क्वेरी इनसाइट, मॉनिटरिंग) एक्सप्लोर करें.

3b12b0fa1367fb42.png

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

आउटपुट का सैंपल:

e8882c44fa0bb631.png

क्लस्टर के क्रेडेंशियल सेव करने के लिए, यह कमांड चलाएं:

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 खोलें.

49fd65309967ae47.png

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

आउटपुट का सैंपल:

179a23bd33793924.png

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 खोलें और बनाए गए वर्कलोड और सेवाओं की समीक्षा करें.

e1217216e003a839.pngd5c97fb5950c4db.png

ऐप्लिकेशन लॉग

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

543c5ed97819f540.png

5. बधाई हो!

बधाई हो, आपने यह कोडलैब पूरा कर लिया है!

हमने इन विषयों पर चर्चा की:

  • AlloyDB डेटाबेस का निजी इंस्टेंस बनाने का तरीका
  • GKE Autopilot क्लस्टर पर कोई ऐप्लिकेशन डिप्लॉय करने का तरीका, जो AlloyDB इंस्टेंस से कनेक्ट होता है

इसके बाद क्या होगा?

Cymbal Eats के अन्य कोडलैब देखें:

स्टोरेज में जगह बनाएं

इस ट्यूटोरियल में इस्तेमाल किए गए संसाधनों के लिए, अपने Google Cloud खाते से शुल्क लिए जाने से बचने के लिए, या तो उन संसाधनों वाले प्रोजेक्ट को मिटाएं या प्रोजेक्ट को सेव रखें और उसमें मौजूद संसाधनों को मिटाएं.

प्रोजेक्ट मिटाना

बिलिंग से बचने का सबसे आसान तरीका है कि ट्यूटोरियल के लिए बनाया गया प्रोजेक्ट मिटा दिया जाए.