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

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

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

e8a5140b09521b7a.png

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

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

44662d7a086358de.png

GKE (जीकेई) Autopilot क्या है?

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

AlloyDB क्या है?

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

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

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

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

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

  • यह लैब, Cloud Console और Cloud Shell एनवायरमेंट के बारे में अच्छी तरह से समझ लेता है.
  • GKE (जीकेई) और AlloyDB का पिछला अनुभव मददगार है, लेकिन यह ज़रूरी नहीं है.

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

Cloud प्रोजेक्ट का सेटअप

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

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

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

लॉग एक्सप्लोरर खोलें और ऐसे लॉग खोजें जिनमें "ग्राहक पहले से मौजूद है" शामिल हो टेक्स्ट.

543c5ed97819f540.png

5. बधाई हो!

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

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

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

आने वाले समय में मिलने वाली सुविधाएं:

Cymbal Eagles के अन्य कोडलैब एक्सप्लोर करें:

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

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

प्रोजेक्ट मिटाया जा रहा है

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