क्लाउड रन जॉब के साथ AlloyDB डेटाबेस बनाना

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

इस लैब में, Cloud Run Job की मदद से AlloyDB डेटाबेस बनाया जाएगा. इसमें, Private services access और Serverless VPC access को कॉन्फ़िगर किया जाएगा, ताकि Cloud Run Job और AlloyDB डेटाबेस के बीच, निजी आईपी का इस्तेमाल करके कनेक्टिविटी चालू की जा सके.

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

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

  • AlloyDB क्लस्टर और इंस्टेंस सेट अप करना
  • AlloyDB डेटाबेस बनाने के लिए, Cloud Run Job को डिप्लॉय करना

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 के संसाधनों/एपीआई का इस्तेमाल करने के लिए, आपको Cloud Console में बिलिंग की सुविधा चालू करनी होगी. इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. अगर आपको इस ट्यूटोरियल के बाद, बिलिंग से बचने के लिए संसाधन बंद करने हैं, तो बनाए गए संसाधनों को मिटाया जा सकता है या पूरा प्रोजेक्ट मिटाया जा सकता है. Google Cloud के नए उपयोगकर्ताओं के लिए, 300 डॉलर का मुफ़्त ट्रायल प्रोग्राम उपलब्ध है.

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

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

eb0157a992f16fa3.png

सेवा के एपीआई चालू करने के लिए, नीचे दिए गए निर्देश को कॉपी करके टर्मिनल में चिपकाएं और Enter दबाएं:

gcloud services enable \
    alloydb.googleapis.com \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    run.googleapis.com \
    vpcaccess.googleapis.com \
    compute.googleapis.com \
    servicenetworking.googleapis.com \
    --quiet

एनवायरमेंट वैरिएबल सेट करें:

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)')
export DB_DATABASE=test
export DB_USER=postgres
export DB_PASSWORD=password123
export REGION=us-central1
export CLUSTER=test-cluster
export INSTANCE=test-instance
export VPC_CONNECTOR=vpcconnector

3. AlloyDB क्लस्टर सेट अप करना और बनाना

सेटअप के लिए ज़रूरी अनुमतियां सेट करें. इससे Cloud Run Job, AlloyDB डेटाबेस से कनेक्ट हो पाएगा.

gcloud projects add-iam-policy-binding $PROJECT_NAME \
  --member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
  --role="roles/alloydb.client"

Private services access को कॉन्फ़िगर करना

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

AlloyDB के साथ एक ही Cloud प्रोजेक्ट में मौजूद VPC नेटवर्क में, Private services access का कॉन्फ़िगरेशन बनाने के लिए, आपको ये दो कार्रवाइयां करनी होंगी:

VPC नेटवर्क में, आईपी पतों की एक रेंज असाइन करें.

gcloud compute addresses create google-managed-services-default \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=20 \
    --network=projects/$PROJECT_ID/global/networks/default

VPC नेटवर्क और Google Cloud के उस VPC नेटवर्क के बीच एक निजी कनेक्शन बनाएं जिसमें आपके AlloyDB संसाधन मौजूद होते हैं. इस चरण में, करीब दो मिनट लगते हैं.

gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=google-managed-services-default \
    --network=default \
    --project=$PROJECT_ID

AlloyDB क्लस्टर बनाएं.

gcloud beta alloydb clusters create $CLUSTER \
    --password=$DB_PASSWORD \
    --network=default \
    --region=$REGION \
    --project=$PROJECT_NAME

gcloud beta alloydb clusters describe $CLUSTER --region=$REGION

AlloyDB इंस्टेंस बनाएं. इस चरण में, करीब 10 मिनट लगते हैं.

gcloud beta alloydb instances create $INSTANCE \
    --cluster=$CLUSTER \
    --region=$REGION \
    --instance-type=PRIMARY \
    --cpu-count=2 \
    --project=$PROJECT_NAME

gcloud beta alloydb instances describe $INSTANCE \
    --cluster=$CLUSTER \
    --region $REGION

Cloud Console में, बनाए गए क्लस्टर की समीक्षा करें.

568d273c0e0d6408.png

डेटाबेस के आईपी पते को किसी वैरिएबल में सेव करें.""

export DB_HOST=$(gcloud beta alloydb instances describe $INSTANCE \
    --cluster=$CLUSTER \
    --region=$REGION \
    --format=json | jq \
    --raw-output ".ipAddress")

echo "DB_HOST=$DB_HOST"

4. Cloud Run Job के कोड को एक्सप्लोर करना

AlloyDB डेटाबेस बनाने के कई तरीके हैं. इनमें से एक तरीका यह है कि Compute Engine VM बनाया जाए, psql क्लाइंट इंस्टॉल किया जाए, और फिर डेटाबेस बनाने के लिए इंस्टेंस से कनेक्ट किया जाए. इस तरीके के बारे में ज़्यादा जानने के लिए, यहां पढ़ें.

इस लैब में, Cloud Run Job का इस्तेमाल करके, नया AlloyDB डेटाबेस बनाया जाएगा.

यहां दी गई फ़ाइलों की समीक्षा करें:

  • Dockerfile - इसमें ज़रूरी डिपेंडेंसी(postgresql-client) इंस्टॉल की जाती हैं
  • script.sh - इसमें डेटाबेस बनाने के लिए, कमांड लाइन यूटिलिटी का इस्तेमाल किया जाता है

Cloud Shell में, नया फ़ोल्डर बनाएं:

mkdir ~/alloy-db-cloud-run-job
cd ~/alloy-db-cloud-run-job 

Dockerfile नाम की नई फ़ाइल बनाएं:

cat > Dockerfile <<EOF
FROM ubuntu:latest
RUN apt-get update && apt-get install -y postgresql-client && apt-get clean
COPY script.sh /
RUN chmod +x /script.sh
CMD ["/script.sh"]
ENTRYPOINT ["/bin/bash"]
EOF

script.sh नाम की नई फ़ाइल बनाएं और उसमें यह कॉन्टेंट जोड़ें:

echo "Connecting to $DB_HOST"
createdb -h $DB_HOST -p 5432 $PGDB
echo "Created $PGDB database"

psql -h $DB_HOST -l

script.sh के लिए अनुमति बदलें:

chmod +x script.sh

5. Cloud Run Job को डिप्लॉय करना

Serverless VPC access को कॉन्फ़िगर करें. इससे Cloud Run Job, इंटरनल/निजी आईपी का इस्तेमाल करके, AlloyDB क्लस्टर के साथ कम्यूनिकेट कर पाएगा. इस चरण में, करीब दो मिनट लगते हैं.

gcloud compute networks vpc-access connectors create ${VPC_CONNECTOR} \
    --region=${REGION} \
    --range=10.8.0.0/28

कंटेनर इमेज सेव करने के लिए, Artifact Registry में डेटाबेस बनाएं.

gcloud artifacts repositories create db-job-repository \
  --repository-format=docker \
  --location=$REGION

कंटेनर इमेज बनाएं और उसे Artifact Registry पर पब्लिश करें.

gcloud builds submit -t $REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest

Cloud Run Job को डिप्लॉय करें.

gcloud beta run jobs create db-job \
    --image=$REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest \
    --set-env-vars DB_HOST=$DB_HOST \
    --set-env-vars PGUSER=$DB_USER \
    --set-env-vars PGPASSWORD=$DB_PASSWORD \
    --set-env-vars PGDB=$DB_DATABASE \
    --vpc-connector $VPC_CONNECTOR \
    --region $REGION

जॉब बनाने के लिए इस्तेमाल किए गए फ़्लैग की समीक्षा करें:

--vpc-connector - Cloud Run Job, AlloyDB के निजी आईपी पते तक पहुंचने के लिए, VPC कनेक्टर का इस्तेमाल करेगा.

Cloud Console में, बनाई गई जॉब की समीक्षा करें.

93d8224eca8c687f.png

test डेटाबेस बनाने के लिए, Cloud Run Job को एक्ज़ीक्यूट करें.

gcloud beta run jobs execute db-job --region $REGION

Cloud Console में, Cloud Run Job के लॉग की समीक्षा करें.

3f2269736b53f44c.png

6. बधाई हो!

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

हमने इन विषयों के बारे में जानकारी दी है:

  • AlloyDB क्लस्टर और इंस्टेंस बनाने का तरीका
  • Cloud Run Job का इस्तेमाल करके, AlloyDB डेटाबेस बनाने का तरीका

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

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

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

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