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

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

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

e8a5140b09521b7a.png

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

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

44662d7a086358de.png

GKE Autopilot क्या है?

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

AlloyDB क्या है?

यह PostgreSQL के साथ काम करने वाली, पूरी तरह से मैनेज की गई डेटाबेस सेवा है. इसका इस्तेमाल, एंटरप्राइज़ के डेटाबेस से जुड़े सबसे मुश्किल कामों के लिए किया जा सकता है. AlloyDB, Google की बेहतरीन सुविधाओं को सबसे लोकप्रिय ओपन-सोर्स डेटाबेस इंजन, PostgreSQL के साथ जोड़ता है. इससे बेहतर परफ़ॉर्मेंस, स्केल, और उपलब्धता मिलती है.

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

इस लैब में, आपको ये काम करने का तरीका बताया जाएगा:

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

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

  • इस लैब को शुरू करने से पहले, यह माना जा रहा है कि आपको Cloud Console और Cloud Shell एनवायरमेंट के बारे में जानकारी है.
  • GKE और AlloyDB का अनुभव होना फ़ायदेमंद है, लेकिन ज़रूरी नहीं है.

2. सेटअप और ज़रूरी शर्तें

Cloud Project का सेटअप

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे बदला नहीं जा सकता. Cloud Console, यूनीक स्ट्रिंग अपने-आप जनरेट करता है. आम तौर पर, आपको इससे कोई फ़र्क़ नहीं पड़ता कि यह क्या है. ज़्यादातर कोडलैब में, आपको प्रोजेक्ट आईडी का रेफ़रंस देना होगा. आम तौर पर, इसे PROJECT_ID के तौर पर पहचाना जाता है. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो कोई दूसरा रैंडम आईडी जनरेट किया जा सकता है. इसके अलावा, आपके पास अपना नाम आज़माने का विकल्प भी है. इससे आपको पता चलेगा कि वह नाम उपलब्ध है या नहीं. इस चरण के बाद, इसे बदला नहीं जा सकता. यह प्रोजेक्ट की अवधि तक बना रहेगा.
  • आपकी जानकारी के लिए बता दें कि एक तीसरी वैल्यू भी होती है, जिसे प्रोजेक्ट नंबर कहते हैं. इसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
  1. इसके बाद, आपको Cloud Console में बिलिंग चालू करनी होगी, ताकि Cloud संसाधनों/एपीआई का इस्तेमाल किया जा सके. इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, बनाए गए संसाधनों को बंद किया जा सकता है. इसके लिए, बनाए गए संसाधनों को मिटाएं या पूरे प्रोजेक्ट को मिटाएं. 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 Job और Customer Service के लिए कंटेनर इमेज सेव करने के लिए Artifact Registry
  • Cloud Run जॉब के लिए VPC ऐक्सेस कनेक्टर, ताकि AlloyDB डेटाबेस से कम्यूनिकेट किया जा सके
  • 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

ऐप्लिकेशन डिप्लॉय करना

इसके बाद, आपको ग्राहक सेवा ऐप्लिकेशन डिप्लॉय करना होगा.

Customer Service ऐप्लिकेशन, 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"}'

ऊपर दी गई कमांड को कई बार चलाएं, ताकि लॉग मैसेज जनरेट किए जा सकें. इन मैसेज को बाद में, लॉग एक्सप्लोरर में देखा जा सकेगा.

ग्राहक के रिकॉर्ड की समीक्षा करना

बनाया गया ग्राहक रिकॉर्ड देखने के लिए, यहां दी गई कमांड चलाएं.

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.png

d5c97fb5950c4db.png

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

लॉग एक्सप्लोरर खोलें और उन लॉग को खोजें जिनमें "Customer already exists" टेक्स्ट मौजूद है.

543c5ed97819f540.png

5. बधाई हो!

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

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

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

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

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

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

इस ट्यूटोरियल में इस्तेमाल किए गए संसाधनों के लिए, अपने Google Cloud खाते से शुल्क न लिए जाने के लिए, संसाधनों वाला प्रोजेक्ट मिटाएं. इसके अलावा, प्रोजेक्ट को बनाए रखने और अलग-अलग संसाधनों को मिटाने का विकल्प भी है.

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

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