MCP টুলবক্স সহ AlloyDB Agentic RAG অ্যাপ্লিকেশন

১. ভূমিকা

e71e051395674233.gif

এই কোডল্যাবে, আপনি শিখবেন কীভাবে একটি AlloyDB ক্লাস্টার তৈরি করতে হয়, MCP টুলবক্স ডেপ্লয় করতে হয় এবং ডেটা সোর্স হিসেবে AlloyDB ব্যবহার করার জন্য এটিকে কনফিগার করতে হয়। এরপর আপনি একটি নমুনা ইন্টারেক্টিভ RAG অ্যাপ্লিকেশন তৈরি করবেন, যা তার অনুরোধগুলো কার্যকর করার জন্য ডেপ্লয় করা টুলবক্সটি ব্যবহার করবে।

f753f71c7116358a.png

আপনি ডকুমেন্টেশন পৃষ্ঠা থেকে MCP টুলবক্স এবং এখান থেকে নমুনা Cymbal Air অ্যাপ্লিকেশনটি সম্পর্কে আরও তথ্য পেতে পারেন।

এই ল্যাবটি AlloyDB AI ফিচারগুলোর উপর তৈরি ল্যাব সংগ্রহের একটি অংশ। আপনি ডকুমেন্টেশনের AlloyDB AI পেজে আরও বিস্তারিত পড়তে এবং অন্যান্য ল্যাবগুলো দেখতে পারেন।

পূর্বশর্ত

  • গুগল ক্লাউড কনসোল সম্পর্কে প্রাথমিক ধারণা
  • কমান্ড লাইন ইন্টারফেস এবং গুগল ক্লাউড শেলে প্রাথমিক দক্ষতা

আপনি যা শিখবেন

  • Vertex AI ইন্টিগ্রেশন সহ AlloyDB ক্লাস্টার কীভাবে স্থাপন করবেন
  • AlloyDB-তে কীভাবে সংযোগ করবেন
  • MCP টুলবক্স সার্ভিস কীভাবে কনফিগার এবং ডিপ্লয় করবেন
  • ডেপ্লয়েড সার্ভিস ব্যবহার করে কীভাবে একটি নমুনা অ্যাপ্লিকেশন ডেপ্লয় করবেন

আপনার যা যা লাগবে

  • একটি গুগল ক্লাউড অ্যাকাউন্ট এবং গুগল ক্লাউড প্রজেক্ট
  • ক্রোমের মতো একটি ওয়েব ব্রাউজার

২. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিতে পরিবেশ সেটআপ

  1. Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
  • প্রজেক্ট আইডি সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (একবার সেট করার পর এটি পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রজেক্ট আইডি উল্লেখ করতে হবে (যা সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়)। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি এলোমেলোভাবে আরেকটি তৈরি করতে পারেন। বিকল্পভাবে, আপনি আপনার নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রজেক্টের পুরো সময়কাল জুড়ে এটি অপরিবর্তিত থাকবে।
  • আপনার অবগতির জন্য জানানো যাচ্ছে যে, তৃতীয় একটি ভ্যালু রয়েছে, যা হলো প্রজেক্ট নম্বর , এবং কিছু এপিআই এটি ব্যবহার করে থাকে। ডকুমেন্টেশনে এই তিনটি ভ্যালু সম্পর্কে আরও বিস্তারিত জানুন।
  1. এরপর, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হবে না, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর বিলিং এড়াতে রিসোর্সগুলো বন্ধ করার জন্য, আপনি আপনার তৈরি করা রিসোর্সগুলো অথবা প্রজেক্টটি ডিলিট করে দিতে পারেন। নতুন গুগল ক্লাউড ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ক্লাউড শেল শুরু করুন

যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চলমান একটি কমান্ড লাইন পরিবেশ।

গুগল ক্লাউড কনসোল থেকে, উপরের ডানদিকের টুলবারে থাকা ক্লাউড শেল আইকনটিতে ক্লিক করুন:

ক্লাউড শেল সক্রিয় করুন

পরিবেশটি প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগবে। এটি শেষ হলে, আপনি এইরকম কিছু দেখতে পাবেন:

গুগল ক্লাউড শেল টার্মিনালের স্ক্রিনশট, যা দেখাচ্ছে যে পরিবেশটি সংযুক্ত হয়েছে।

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার সমস্ত কাজ একটি ব্রাউজারের মধ্যেই করা যাবে। আপনাকে কিছুই ইনস্টল করতে হবে না।

৩. শুরু করার আগে

এপিআই সক্ষম করুন

আউটপুট:

ক্লাউড শেলের ভিতরে, নিশ্চিত করুন যে আপনার প্রজেক্ট আইডি সেটআপ করা আছে:

সাধারণত ক্লাউড শেলের কমান্ড প্রম্পটে প্রজেক্ট আইডিটি বন্ধনীর মধ্যে দেখানো হয়, যেমনটি ছবিতে দেখানো হয়েছে:

fa6ee779963405d5.png

gcloud config set project [YOUR-PROJECT-ID]

এরপর PROJECT_ID এনভায়রনমেন্ট ভেরিয়েবলটি আপনার গুগল ক্লাউড প্রজেক্ট আইডিতে সেট করুন:

PROJECT_ID=$(gcloud config get-value project)

সকল প্রয়োজনীয় পরিষেবা সক্রিয় করুন:

gcloud services enable alloydb.googleapis.com \
                       compute.googleapis.com \
                       cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       vpcaccess.googleapis.com \
                       aiplatform.googleapis.com \
                       cloudbuild.googleapis.com \
                       artifactregistry.googleapis.com \
                       run.googleapis.com \
                       iam.googleapis.com \
                       secretmanager.googleapis.com

প্রত্যাশিত আউটপুট

student@cloudshell:~ (gleb-test-short-004)$ gcloud services enable alloydb.googleapis.com \
                       compute.googleapis.com \
                       cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       vpcaccess.googleapis.com \
                       aiplatform.googleapis.com \
                       cloudbuild.googleapis.com \
                       artifactregistry.googleapis.com \
                       run.googleapis.com \
                       iam.googleapis.com \
                       secretmanager.googleapis.com
Operation "operations/acf.p2-404051529011-664c71ad-cb2b-4ab4-86c1-1f3157d70ba1" finished successfully.

৪. AlloyDB ক্লাস্টার স্থাপন করুন

AlloyDB ক্লাস্টার এবং প্রাইমারি ইনস্ট্যান্স তৈরি করুন। নিম্নলিখিত পদ্ধতিতে Google Cloud SDK ব্যবহার করে একটি AlloyDB ক্লাস্টার এবং ইনস্ট্যান্স তৈরি করার পদ্ধতি বর্ণনা করা হয়েছে। আপনি যদি কনসোল পদ্ধতি পছন্দ করেন, তবে এখান থেকে ডকুমেন্টেশন অনুসরণ করতে পারেন।

একটি AlloyDB ক্লাস্টার তৈরি করার আগে, আমাদের VPC-তে একটি উপলব্ধ প্রাইভেট আইপি রেঞ্জ থাকা প্রয়োজন, যা ভবিষ্যতের AlloyDB ইনস্ট্যান্সটি ব্যবহার করবে। যদি আমাদের কাছে এটি না থাকে, তবে আমাদের এটি তৈরি করতে হবে এবং অভ্যন্তরীণ গুগল পরিষেবাগুলির ব্যবহারের জন্য বরাদ্দ করতে হবে। এরপরেই আমরা ক্লাস্টার এবং ইনস্ট্যান্স তৈরি করতে পারব।

ব্যক্তিগত আইপি রেঞ্জ তৈরি করুন

আমাদের AlloyDB-এর জন্য VPC-তে প্রাইভেট সার্ভিস অ্যাক্সেস কনফিগারেশন করতে হবে। এখানে ধরে নেওয়া হচ্ছে যে, প্রজেক্টটিতে 'ডিফল্ট' VPC নেটওয়ার্ক রয়েছে এবং সমস্ত কাজের জন্য এটিই ব্যবহৃত হবে।

ব্যক্তিগত আইপি রেঞ্জ তৈরি করুন:

gcloud compute addresses create psa-range \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=24 \
    --description="VPC private service access" \
    --network=default

বরাদ্দকৃত আইপি রেঞ্জ ব্যবহার করে ব্যক্তিগত সংযোগ তৈরি করুন:

gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=psa-range \
    --network=default

প্রত্যাশিত কনসোল আউটপুট:

student@cloudshell:~ (test-project-402417)$ gcloud compute addresses create psa-range \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=24 \
    --description="VPC private service access" \
    --network=default
Created [https://www.googleapis.com/compute/v1/projects/test-project-402417/global/addresses/psa-range].

student@cloudshell:~ (test-project-402417)$ gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=psa-range \
    --network=default
Operation "operations/pssn.p24-4470404856-595e209f-19b7-4669-8a71-cbd45de8ba66" finished successfully.

student@cloudshell:~ (test-project-402417)$

AlloyDB ক্লাস্টার তৈরি করুন

এই অংশে আমরা us-central1 অঞ্চলে একটি AlloyDB ক্লাস্টার তৈরি করছি।

postgres ব্যবহারকারীর জন্য পাসওয়ার্ড নির্ধারণ করুন। আপনি নিজের পাসওয়ার্ড তৈরি করতে পারেন অথবা একটি র‍্যান্ডম ফাংশন ব্যবহার করে তা তৈরি করতে পারেন।

export PGPASSWORD=`openssl rand -hex 12`

প্রত্যাশিত কনসোল আউটপুট:

student@cloudshell:~ (test-project-402417)$ export PGPASSWORD=`openssl rand -hex 12`

ভবিষ্যতে ব্যবহারের জন্য PostgreSQL পাসওয়ার্ডটি লিখে রাখুন।

echo $PGPASSWORD

ভবিষ্যতে postgres ব্যবহারকারী হিসেবে ইনস্ট্যান্সটিতে সংযোগ করতে আপনার ওই পাসওয়ার্ডটি লাগবে। আমি পরামর্শ দেবো এটি লিখে রাখতে বা কোথাও কপি করে রাখতে, যাতে পরে ব্যবহার করতে পারেন।

প্রত্যাশিত কনসোল আউটপুট:

student@cloudshell:~ (test-project-402417)$ echo $PGPASSWORD
bbefbfde7601985b0dee5723

একটি বিনামূল্যে ট্রায়াল ক্লাস্টার তৈরি করুন

আপনি যদি আগে AlloyDB ব্যবহার না করে থাকেন, তাহলে একটি বিনামূল্যের ট্রায়াল ক্লাস্টার তৈরি করতে পারেন:

অঞ্চল এবং AlloyDB ক্লাস্টারের নাম নির্ধারণ করুন। আমরা us-central1 অঞ্চল এবং alloydb-aip-01 ক্লাস্টারের নাম হিসেবে ব্যবহার করতে যাচ্ছি:

export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01

ক্লাস্টার তৈরি করতে কমান্ডটি চালান:

gcloud alloydb clusters create $ADBCLUSTER \
    --password=$PGPASSWORD \
    --network=default \
    --region=$REGION \
    --subscription-type=TRIAL

প্রত্যাশিত কনসোল আউটপুট:

export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
gcloud alloydb clusters create $ADBCLUSTER \
    --password=$PGPASSWORD \
    --network=default \
    --region=$REGION \
    --subscription-type=TRIAL
Operation ID: operation-1697655441138-6080235852277-9e7f04f5-2012fce4
Creating cluster...done.                                                                                                                                                                                                                                                           

একই ক্লাউড শেল সেশনে আমাদের ক্লাস্টারের জন্য একটি AlloyDB প্রাইমারি ইনস্ট্যান্স তৈরি করুন। সংযোগ বিচ্ছিন্ন হয়ে গেলে আপনাকে আবার রিজিয়ন এবং ক্লাস্টারের নামের এনভায়রনমেন্ট ভেরিয়েবলগুলো নির্ধারণ করতে হবে।

gcloud alloydb instances create $ADBCLUSTER-pr \
    --instance-type=PRIMARY \
    --cpu-count=8 \
    --region=$REGION \
    --cluster=$ADBCLUSTER

প্রত্যাশিত কনসোল আউটপুট:

student@cloudshell:~ (test-project-402417)$ gcloud alloydb instances create $ADBCLUSTER-pr \
    --instance-type=PRIMARY \
    --cpu-count=8 \
    --region=$REGION \
    --availability-type ZONAL \
    --cluster=$ADBCLUSTER
Operation ID: operation-1697659203545-6080315c6e8ee-391805db-25852721
Creating instance...done.                                                                                                                                                                                                                                                     

AlloyDB স্ট্যান্ডার্ড ক্লাস্টার তৈরি করুন

প্রকল্পে এটি যদি আপনার প্রথম AlloyDB ক্লাস্টার না হয়, তবে একটি স্ট্যান্ডার্ড ক্লাস্টার তৈরির প্রক্রিয়া শুরু করুন।

অঞ্চল এবং AlloyDB ক্লাস্টারের নাম নির্ধারণ করুন। আমরা us-central1 অঞ্চল এবং alloydb-aip-01 ক্লাস্টারের নাম হিসেবে ব্যবহার করতে যাচ্ছি:

export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01

ক্লাস্টার তৈরি করতে কমান্ডটি চালান:

gcloud alloydb clusters create $ADBCLUSTER \
    --password=$PGPASSWORD \
    --network=default \
    --region=$REGION

প্রত্যাশিত কনসোল আউটপুট:

export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
gcloud alloydb clusters create $ADBCLUSTER \
    --password=$PGPASSWORD \
    --network=default \
    --region=$REGION 
Operation ID: operation-1697655441138-6080235852277-9e7f04f5-2012fce4
Creating cluster...done.                                                                                                                                                                                                                                                           

একই ক্লাউড শেল সেশনে আমাদের ক্লাস্টারের জন্য একটি AlloyDB প্রাইমারি ইনস্ট্যান্স তৈরি করুন। সংযোগ বিচ্ছিন্ন হয়ে গেলে আপনাকে আবার রিজিয়ন এবং ক্লাস্টারের নামের এনভায়রনমেন্ট ভেরিয়েবলগুলো নির্ধারণ করতে হবে।

gcloud alloydb instances create $ADBCLUSTER-pr \
    --instance-type=PRIMARY \
    --cpu-count=2 \
    --region=$REGION \
    --cluster=$ADBCLUSTER

প্রত্যাশিত কনসোল আউটপুট:

student@cloudshell:~ (test-project-402417)$ gcloud alloydb instances create $ADBCLUSTER-pr \
    --instance-type=PRIMARY \
    --cpu-count=2 \
    --region=$REGION \
    --availability-type ZONAL \
    --cluster=$ADBCLUSTER
Operation ID: operation-1697659203545-6080315c6e8ee-391805db-25852721
Creating instance...done.                                                                                                                                                                                                                                                     

AlloyDB-কে প্রয়োজনীয় অনুমতি প্রদান করুন

AlloyDB সার্ভিস এজেন্টে Vertex AI-এর অনুমতি যোগ করুন।

উপরে থাকা "+" চিহ্নটি ব্যবহার করে আরেকটি ক্লাউড শেল ট্যাব খুলুন।

4ca978f5142bb6ce.png

নতুন ক্লাউড শেল ট্যাবে নিম্নলিখিতটি চালান:

PROJECT_ID=$(gcloud config get-value project)
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" \
  --role="roles/aiplatform.user"

প্রত্যাশিত কনসোল আউটপুট:

student@cloudshell:~ (test-project-001-402417)$ PROJECT_ID=$(gcloud config get-value project)
Your active configuration is: [cloudshell-11039]
student@cloudshell:~ (test-project-001-402417)$ gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" \
  --role="roles/aiplatform.user"
Updated IAM policy for project [test-project-001-402417].
bindings:
- members:
  - serviceAccount:service-4470404856@gcp-sa-alloydb.iam.gserviceaccount.com
  role: roles/aiplatform.user
- members:
...
etag: BwYIEbe_Z3U=
version: 1
 

ট্যাবের মধ্যে 'exit' কমান্ডটি চালিয়ে ট্যাবটি বন্ধ করুন:

exit

৫. জিসিই ভার্চুয়াল মেশিন প্রস্তুত করুন

আমরা ডাটাবেস নিয়ে কাজ করতে এবং স্যাম্পল অ্যাপ্লিকেশনটির বিভিন্ন অংশ ডেপ্লয় করতে আমাদের প্ল্যাটফর্ম হিসেবে একটি গুগল কম্পিউট ইঞ্জিন (GCE) VM ব্যবহার করতে যাচ্ছি। VM ব্যবহারের ফলে আমরা ইনস্টল করা কম্পোনেন্টগুলোর ক্ষেত্রে আরও বেশি নমনীয়তা পাই এবং ডেটা প্রস্তুতির ধাপগুলোর জন্য প্রাইভেট AlloyDB IP-তে সরাসরি অ্যাক্সেস পাই।

পরিষেবা অ্যাকাউন্ট তৈরি করুন

যেহেতু আমরা আমাদের ভিএম ব্যবহার করে এমসিপি টুলবক্সকে একটি সার্ভিস হিসেবে ডেপ্লয় করব এবং স্যাম্পল অ্যাপ্লিকেশনটি ডেপ্লয় বা হোস্ট করব, তাই প্রথম ধাপ হলো একটি গুগল সার্ভিস অ্যাকাউন্ট (জিএসএ) তৈরি করা। জিএসএ-টি জিসিই ভিএম দ্বারা ব্যবহৃত হবে, এবং অন্যান্য সার্ভিসের সাথে কাজ করার জন্য আমাদের এটিকে প্রয়োজনীয় প্রিভিলেজগুলো প্রদান করতে হবে।

ক্লাউড শেলে নিম্নলিখিতটি চালান:

PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts create compute-aip --project $PROJECT_ID

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/cloudbuild.builds.editor"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/artifactregistry.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/storage.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/run.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/iam.serviceAccountUser"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/alloydb.viewer"

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

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/aiplatform.user"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/serviceusage.serviceUsageConsumer"

gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com \
    --role roles/secretmanager.admin

GCE VM স্থাপন করুন

AlloyDB ক্লাস্টারের মতো একই অঞ্চল এবং VPC-তে একটি GCE VM তৈরি করুন।

ক্লাউড শেলে চালান:

ZONE=us-central1-a
PROJECT_ID=$(gcloud config get-value project)
gcloud compute instances create instance-1 \
    --zone=$ZONE \
    --create-disk=auto-delete=yes,boot=yes,image=projects/debian-cloud/global/images/$(gcloud compute images list --filter="family=debian-12 AND family!=debian-12-arm64" --format="value(name)") \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --service-account=compute-aip@$PROJECT_ID.iam.gserviceaccount.com

প্রত্যাশিত কনসোল আউটপুট:

student@cloudshell:~ (test-project-402417)$ ZONE=us-central1-a
PROJECT_ID=$(gcloud config get-value project)
gcloud compute instances create instance-1 \
    --zone=$ZONE \
    --create-disk=auto-delete=yes,boot=yes,image=projects/debian-cloud/global/images/$(gcloud compute images list --filter="family=debian-12 AND family!=debian-12-arm64" --format="value(name)") \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --service-account=compute-aip@$PROJECT_ID.iam.gserviceaccount.com
Your active configuration is: [cloudshell-10282]
Created [https://www.googleapis.com/compute/v1/projects/gleb-test-short-002-470613/zones/us-central1-a/instances/instance-1].
NAME: instance-1
ZONE: us-central1-a
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE: 
INTERNAL_IP: 10.128.0.2
EXTERNAL_IP: 34.28.55.32
STATUS: RUNNING

পোস্টগ্রেস ক্লায়েন্ট ইনস্টল করুন

ডেপ্লয় করা ভিএম-এ PostgreSQL ক্লায়েন্ট সফটওয়্যারটি ইনস্টল করুন।

ভিএম-এ সংযোগ করুন:

gcloud compute ssh instance-1 --zone=us-central1-a

প্রত্যাশিত কনসোল আউটপুট:

student@cloudshell:~ (test-project-402417)$ gcloud compute ssh instance-1 --zone=us-central1-a
Updating project ssh metadata...working..Updated [https://www.googleapis.com/compute/v1/projects/test-project-402417].                                                                                                                                                         
Updating project ssh metadata...done.                                                                                                                                                                                                                                              
Waiting for SSH key to propagate.
Warning: Permanently added 'compute.5110295539541121102' (ECDSA) to the list of known hosts.
Linux instance-1 5.10.0-26-cloud-amd64 #1 SMP Debian 5.10.197-1 (2023-09-29) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
student@instance-1:~$ 

ভিএম-এর ভিতরে কমান্ডটি চালিয়ে সফ্টওয়্যারটি ইনস্টল করুন:

sudo apt-get update
sudo apt-get install --yes postgresql-client

প্রত্যাশিত কনসোল আউটপুট:

student@instance-1:~$ sudo apt-get update
sudo apt-get install --yes postgresql-client
Get:1 file:/etc/apt/mirrors/debian.list Mirrorlist [30 B]
Get:4 file:/etc/apt/mirrors/debian-security.list Mirrorlist [39 B]
Hit:7 https://packages.cloud.google.com/apt google-compute-engine-bookworm-stable InRelease
Get:8 https://packages.cloud.google.com/apt cloud-sdk-bookworm InRelease [1652 B]
Get:2 https://deb.debian.org/debian bookworm InRelease [151 kB]
Get:3 https://deb.debian.org/debian bookworm-updates InRelease [55.4 kB]
...redacted...
update-alternatives: using /usr/share/postgresql/15/man/man1/psql.1.gz to provide /usr/share/man/man1/psql.1.gz (psql.1.gz) in auto mode
Setting up postgresql-client (15+248) ...
Processing triggers for man-db (2.11.2-2) ...
Processing triggers for libc-bin (2.36-9+deb12u7) ...

AlloyDB ইনস্ট্যান্সে সংযোগ করুন

psql ব্যবহার করে VM থেকে প্রাইমারি ইনস্ট্যান্সে সংযোগ করুন।

আপনার ভিএম-এ খোলা SSH সেশনটি চালিয়ে যান। যদি সংযোগ বিচ্ছিন্ন হয়ে যায়, তাহলে উপরের কমান্ডটি ব্যবহার করে আবার সংযোগ করুন।

GCE VM থেকে AlloyDB-তে সংযোগ করতে পূর্বে উল্লিখিত $PGASSWORD এবং ক্লাস্টারের নামটি ব্যবহার করুন:

export PGPASSWORD=<Noted password>
PROJECT_ID=$(gcloud config get-value project)
REGION=us-central1
ADBCLUSTER=alloydb-aip-01
INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
psql "host=$INSTANCE_IP user=postgres sslmode=require"

প্রত্যাশিত কনসোল আউটপুট:

student@instance-1:~$ PROJECT_ID=$(gcloud config get-value project)
REGION=us-central1
ADBCLUSTER=alloydb-aip-01
INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
psql "host=$INSTANCE_IP user=postgres sslmode=require"
psql (15.13 (Debian 15.13-0+deb12u1), server 16.8)
WARNING: psql major version 15, server major version 16.
         Some psql features might not work.
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.

postgres=>

SSH সংযোগ চালু রেখে psql সেশন থেকে প্রস্থান করুন:

exit

প্রত্যাশিত কনসোল আউটপুট:

postgres=> exit
student@instance-1:~$ 

৬. ডাটাবেস প্রারম্ভিকীকরণ করুন।

আমরা আমাদের ক্লায়েন্ট ভিএম-কে একটি প্ল্যাটফর্ম হিসেবে ব্যবহার করে ডাটাবেসে ডেটা যুক্ত করব এবং আমাদের অ্যাপ্লিকেশনটি হোস্ট করব। প্রথম ধাপ হলো একটি ডাটাবেস তৈরি করা এবং তাতে ডেটা যুক্ত করা।

ডাটাবেস তৈরি করুন

'assistantdemo' নামে একটি ডাটাবেস তৈরি করুন।

GCE VM সেশনে নিম্নলিখিতটি সম্পাদন করুন:

psql "host=$INSTANCE_IP user=postgres" -c "CREATE DATABASE assistantdemo"  

প্রত্যাশিত কনসোল আউটপুট:

student@instance-1:~$ psql "host=$INSTANCE_IP user=postgres" -c "CREATE DATABASE assistantdemo"
CREATE DATABASE
student@instance-1:~$  

পাইথন পরিবেশ প্রস্তুত করুন

এরপর আমরা গিটহাব রিপোজিটরি থেকে তৈরি পাইথন স্ক্রিপ্ট ব্যবহার করব, কিন্তু তার আগে আমাদের প্রয়োজনীয় সফটওয়্যার ইনস্টল করতে হবে।

GCE VM-এ নিম্নলিখিতটি চালান:

sudo apt install -y python3.11-venv git
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip

প্রত্যাশিত কনসোল আউটপুট:

student@instance-1:~$ sudo apt install -y python3.11-venv git
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  git-man liberror-perl patch python3-distutils python3-lib2to3 python3-pip-whl python3-setuptools-whl
Suggested packages:
  git-daemon-run | git-daemon-sysvinit git-doc git-email git-gui gitk gitweb git-cvs git-mediawiki git-svn ed diffutils-doc
The following NEW packages will be installed:
  git git-man liberror-perl patch python3-distutils python3-lib2to3 python3-pip-whl python3-setuptools-whl python3.11-venv
0 upgraded, 9 newly installed, 0 to remove and 2 not upgraded.
Need to get 12.4 MB of archives.
After this operation, 52.2 MB of additional disk space will be used.
Get:1 file:/etc/apt/mirrors/debian.list Mirrorlist [30 B]
...redacted...
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 23.0.1
    Uninstalling pip-23.0.1:
      Successfully uninstalled pip-23.0.1
Successfully installed pip-24.0
(.venv) student@instance-1:~$

পাইথন সংস্করণ যাচাই করুন।

GCE VM-এ নিম্নলিখিতটি চালান:

python -V

প্রত্যাশিত কনসোল আউটপুট:

(.venv) student@instance-1:~$ python -V
Python 3.11.2
(.venv) student@instance-1:~$ 

স্থানীয়ভাবে এমসিপি টুলবক্স ইনস্টল করুন

এমসিপি টুলবক্স ফর ডেটাবেসেস (পরবর্তীতে লেখায় এমসিপি টুলবক্স বা টুলবক্স হিসেবে উল্লেখিত) হলো একটি ওপেন সোর্স এমসিপি সার্ভার যা বিভিন্ন ডেটা সোর্সের সাথে কাজ করে। এটি বিভিন্ন ডেটা সোর্সের জন্য একটি অ্যাবস্ট্রাকশন লেভেল প্রদান করে এবং অথেনটিকেশন ও কানেকশন পুলিং-এর মতো ফিচার যুক্ত করে আপনাকে দ্রুত টুলস তৈরি করতে সাহায্য করে। আপনি এর অফিসিয়াল পেজে সমস্ত ফিচার সম্পর্কে পড়তে পারেন।

আমরা আমাদের নমুনা ডেটাসেট শুরু করার জন্য এমসিপি টুলবক্স ব্যবহার করতে যাচ্ছি এবং পরবর্তীতে রিট্রিভাল অগমেন্টেড জেনারেশন (RAG) ফ্লো চলাকালীন আমাদের অ্যাপ্লিকেশন থেকে ডেটা সোর্স অনুরোধগুলি পরিচালনা করার জন্য এটিকে এমসিপি সার্ভার হিসাবে ব্যবহার করব।

assistantdemo ডাটাবেসটি পূরণ করার জন্য চলুন স্থানীয়ভাবে MCP টুলবক্সটি ইনস্টল করি।

GCE VM-এ নিম্নলিখিতটি চালান:

export VERSION=0.16.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox

প্রত্যাশিত কনসোল আউটপুট:

(.venv) student@instance-1:~$ export VERSION=0.16.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  133M  100  133M    0     0   158M      0 --:--:-- --:--:-- --:--:--  158M

ডেটা প্রারম্ভিকীকরণের জন্য টুলবক্স চালান

GCE VM-এ নিম্নলিখিতটি চালান:

ডাটাবেস পূরণের জন্য এনভায়রনমেন্ট ভেরিয়েবল রপ্তানি করুন:

export ALLOYDB_POSTGRES_PROJECT=$(gcloud config get-value project)
export ALLOYDB_POSTGRES_REGION="us-central1"
export ALLOYDB_POSTGRES_CLUSTER="alloydb-aip-01"
export ALLOYDB_POSTGRES_INSTANCE="alloydb-aip-01-pr"
export ALLOYDB_POSTGRES_DATABASE="assistantdemo"
export ALLOYDB_POSTGRES_USER="postgres"
export ALLOYDB_POSTGRES_PASSWORD=$PGPASSWORD
export ALLOYDB_POSTGRES_IP_TYPE="private"

ডাটাবেস ইনিসিয়েশনের জন্য টুলবক্সটি চালু করুন। এটি স্থানীয়ভাবে প্রসেসটি শুরু করবে, যা আপনাকে নমুনা ডেটা দিয়ে পূরণ করার জন্য AlloyDB-তে থাকা ডেস্টিনেশন ডাটাবেসের সাথে নির্বিঘ্নে সংযোগ স্থাপন করতে সাহায্য করবে।

./toolbox --prebuilt alloydb-postgres

প্রত্যাশিত কনসোল আউটপুট। আউটপুটের শেষ লাইনে আপনি দেখতে পাবেন - "Server ready to serve!":

student@instance-1:~$ cexport ALLOYDB_POSTGRES_PROJECT=$PROJECT_ID
export ALLOYDB_POSTGRES_REGION="us-central1"
export ALLOYDB_POSTGRES_CLUSTER="alloydb-aip-01"
export ALLOYDB_POSTGRES_INSTANCE="alloydb-aip-01-pr"
export ALLOYDB_POSTGRES_DATABASE="assistantdemo"
export ALLOYDB_POSTGRES_USER="postgres"
export ALLOYDB_POSTGRES_PASSWORD=$PGPASSWORD
export ALLOYDB_POSTGRES_IP_TYPE="private"
student@instance-1:~$ ./toolbox --prebuilt alloydb-postgres
2025-09-02T18:30:58.957655886Z INFO "Using prebuilt tool configuration for alloydb-postgres" 
2025-09-02T18:30:59.507306664Z INFO "Initialized 1 sources." 
2025-09-02T18:30:59.50748379Z INFO "Initialized 0 authServices." 
2025-09-02T18:30:59.507618807Z INFO "Initialized 2 tools." 
2025-09-02T18:30:59.507726704Z INFO "Initialized 2 toolsets." 
2025-09-02T18:30:59.508258894Z INFO "Server ready to serve!" 

ডেটা পূরণ সম্পূর্ণ না হওয়া পর্যন্ত ক্লাউড শেলের এই ট্যাবটি থেকে বের হবেন না বা বন্ধ করবেন না।

ডাটাবেস পূরণ করুন

উপরে থাকা "+" চিহ্নটি ব্যবহার করে আরেকটি ক্লাউড শেল ট্যাব খুলুন।

4ca978f5142bb6ce.png

এবং ইনস্ট্যান্স-১ ভিএম-এ সংযোগ করুন:

gcloud compute ssh instance-1 --zone=us-central1-a

প্রত্যাশিত কনসোল আউটপুট:

student@cloudshell:~ (test-project-402417)$ gcloud compute ssh instance-1 --zone=us-central1-a
Linux instance-1 6.1.0-37-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Sep  2 21:44:07 2025 from 35.229.111.9
student@instance-1:~$ 

ডেটা পুনরুদ্ধার পরিষেবা এবং নমুনা অ্যাপ্লিকেশনের কোডসহ গিটহাব রিপোজিটরিটি ক্লোন করুন।

GCE VM-এ নিম্নলিখিতটি চালান:

git clone  https://github.com/GoogleCloudPlatform/cymbal-air-toolbox-demo.git

প্রত্যাশিত কনসোল আউটপুট:

student@instance-1:~$ git clone  https://github.com/GoogleCloudPlatform/cymbal-air-toolbox-demo.git
Cloning into 'cymbal-air-toolbox-demo'...
remote: Enumerating objects: 3481, done.
remote: Counting objects: 100% (47/47), done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 3481 (delta 16), reused 7 (delta 5), pack-reused 3434 (from 3)
Receiving objects: 100% (3481/3481), 57.96 MiB | 6.04 MiB/s, done.
Resolving deltas: 100% (2549/2549), done.
student@instance-1:~

কোনো ভুল থাকলে অনুগ্রহ করে মনোযোগ দিন।

পাইথন পরিবেশ প্রস্তুত করুন এবং প্রয়োজনীয় প্যাকেজগুলো ইনস্টল করুন:

source .venv/bin/activate
cd cymbal-air-toolbox-demo
pip install -r requirements.txt

পাইথন পাথটি রিপোজিটরি রুট ফোল্ডারে সেট করুন এবং স্যাম্পল ডেটাসেট দিয়ে ডেটাবেসটি পূরণ করতে স্ক্রিপ্টটি চালান। প্রথম কমান্ডটি আমাদের এনভায়রনমেন্টে পাইথন মডিউলগুলোর পাথ যোগ করছে এবং দ্বিতীয় কমান্ডটি ডেটা দিয়ে আমাদের ডেটাবেসটি পূরণ করছে।

export PYTHONPATH=$HOME/cymbal-air-toolbox-demo
python data/run_database_init.py

প্রত্যাশিত কনসোল আউটপুট (সংশোধিত)। শেষে আপনি "database init done" দেখতে পাবেন:

student@instance-1:~$ source .venv/bin/activate
(.venv) student@instance-1:~$ 
(.venv) student@instance-1:~$ cd cymbal-air-toolbox-demo/
(.venv) student@instance-1:~/cymbal-air-toolbox-demo$ pip install -r requirements.txt
python run_database_init.py
Collecting fastapi==0.115.0 (from -r requirements.txt (line 1))
  Downloading fastapi-0.115.0-py3-none-any.whl.metadata (27 kB)
Collecting google-auth==2.40.3 (from -r requirements.txt (line 2))
  Downloading google_auth-2.40.3-py2.py3-none-any.whl.metadata (6.2 kB)
Collecting google-cloud-aiplatform==1.97.0 (from google-cloud-aiplatform[evaluation]==1.97.0->-r requirements.txt (line 3))
  Downloading google_cloud_aiplatform-1.97.0-py2.py3-none-any.whl.metadata (36 kB)
Collecting itsdangerous==2.2.0 (from -r requirements.txt (line 4))
  Downloading itsdangerous-2.2.0-py3-none-any.whl.metadata (1.9 kB)
Collecting jinja2==3.1.5 (from -r requirements.txt (line 5))
  Downloading jinja2-3.1.5-py3-none-any.whl.metadata (2.6 kB)
Collecting langchain-community==0.3.25 (from -r requirements.txt (line 6))
  Downloading langchain_community-0.3.25-py3-none-any.whl.metadata (2.9 kB)
Collecting langchain==0.3.25 (from -r requirements.txt (line 7))
...

(.venv) student@instance-1:~/cymbal-air-toolbox-demo$ 
(.venv) student@instance-1:~/cymbal-air-toolbox-demo$ export PYTHONPATH=$HOME/cymbal-air-toolbox-demo
python data/run_database_init.py
Airports table initialized
Amenities table initialized
Flights table initialized
Tickets table initialized
Policies table initialized
database init done.
(.venv) student@instance-1:~/cymbal-air-toolbox-demo$ 

আপনি এখন এই ট্যাবটি বন্ধ করতে পারেন।

ভিএম সেশনে নিম্নলিখিতটি সম্পাদন করুন:

exit

এবং ক্লাউড শেল সেশনে ctrl+d চাপুন অথবা এক্সিকিউট করুন:

exit

চালু থাকা এমসিপি টুলবক্সের প্রথম ট্যাবে, চলমান টুলবক্স সেশন থেকে বের হতে ctrl+c চাপুন।

অ্যাপ্লিকেশনটির জন্য ডেটাবেসটি নমুনা ডেটা দিয়ে পূরণ করা হয়েছে।

আপনি ডাটাবেসে সংযোগ করে এবং airports টেবিলের সারির সংখ্যা পরীক্ষা করে এটি যাচাই করতে পারেন। আপনি আগে ব্যবহৃত psql ইউটিলিটি অথবা AlloyDB Studio ব্যবহার করতে পারেন। psql ব্যবহার করে কীভাবে এটি পরীক্ষা করবেন তা নিচে দেওয়া হলো।

ইনস্ট্যান্স-১ ভিএম-এর ssh সেশনে নিম্নলিখিত কমান্ডটি চালান:

export PGPASSWORD=<Noted AlloyDB password>
REGION=us-central1
ADBCLUSTER=alloydb-aip-01
INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
psql "host=$INSTANCE_IP user=postgres dbname=assistantdemo" -c "SELECT COUNT(*) FROM airports"  

প্রত্যাশিত কনসোল আউটপুট:

student@instance-1:~$ REGION=us-central1
ADBCLUSTER=alloydb-aip-01
INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
psql "host=$INSTANCE_IP user=postgres dbname=assistantdemo" -c "SELECT COUNT(*) FROM airports"
 count 
-------
  7698
(1 row)

ডাটাবেস প্রস্তুত এবং আমরা এখন এমসিপি টুলবক্স ডেপ্লয়মেন্টের দিকে অগ্রসর হতে পারি।

৭. ক্লাউড রান-এ এমসিপি টুলবক্স স্থাপন করুন

এখন আমরা ক্লাউড রানে এমসিপি টুলবক্স ডেপ্লয় করতে পারি। এমসিপি টুলবক্স ডেপ্লয় করার বিভিন্ন উপায় রয়েছে। সবচেয়ে সহজ উপায় হলো কমান্ড লাইন থেকে এটি চালানো, কিন্তু যদি আমরা এটিকে একটি স্কেলেবল এবং নির্ভরযোগ্য পরিষেবা হিসেবে পেতে চাই, তাহলে ক্লাউড রান একটি উন্নততর সমাধান।

ক্লায়েন্ট আইডি প্রস্তুত করুন

অ্যাপ্লিকেশনটির বুকিং কার্যকারিতা ব্যবহার করার জন্য আমাদের ক্লাউড কনসোল ব্যবহার করে OAuth 2.0 ক্লায়েন্ট আইডি প্রস্তুত করতে হবে। এটি ছাড়া আমরা বুকিং করার জন্য আমাদের গুগল ক্রেডেনশিয়াল দিয়ে অ্যাপ্লিকেশনে সাইন ইন করতে এবং ডেটাবেসে বুকিংটি রেকর্ড করতে পারব না।

ক্লাউড কনসোলে APIs and Services-এ যান এবং 'OAuth consent screen'-এ ক্লিক করুন। এখানে পেজটির একটি লিঙ্ক দেওয়া হলো। এটি Oauth Overview পেজটি খুলবে, যেখানে আমরা Get Started-এ ক্লিক করব।

2f13a26289362f20.png

পরবর্তী পৃষ্ঠায় আমরা অ্যাপ্লিকেশনের নাম, ব্যবহারকারী সহায়তার ইমেল প্রদান করে 'Next' বোতামে ক্লিক করি।

dd3721c042db26ae.png

পরবর্তী স্ক্রিনে আমরা আমাদের অ্যাপ্লিকেশনের জন্য 'ইন্টারনাল' নির্বাচন করি এবং আবার 'নেক্সট' ক্লিক করি।

71b6d11179ed872b.png

তারপর আবার যোগাযোগের ইমেল প্রদান করে পরবর্তী ধাপে ক্লিক করতে হবে।

8ff29dfd959b41f0.png

তারপর আমরা গুগল এপিআই পরিষেবা নীতিমালায় সম্মত হয়ে ক্রিয়েট বোতামে চাপ দিই।

ca87d1200662b7f7.png

এটি আমাদেরকে সেই পৃষ্ঠায় নিয়ে যাবে যেখানে আমরা একটি OAuth ক্লায়েন্ট তৈরি করতে পারব।

56e5040805632a53.png

স্ক্রিনে আমরা ড্রপডাউন মেনু থেকে "ওয়েব অ্যাপ্লিকেশন" বেছে নিই, অ্যাপ্লিকেশন হিসেবে "সিম্বাল এয়ার" লিখি এবং অ্যাড ইউআরআই (Add URI) বোতামে চাপ দিই।

4e28c6700426735a.png

ইউআরআইগুলো অ্যাপ্লিকেশনটির জন্য বিশ্বস্ত উৎসকে প্রতিনিধিত্ব করে এবং আপনি কোথা থেকে অ্যাপ্লিকেশনটিতে পৌঁছানোর চেষ্টা করছেন তার উপর এগুলো নির্ভর করে। আমরা অনুমোদিত ইউআরআই হিসেবে "http://localhost:8081" এবং রিডাইরেক্ট ইউআরআই হিসেবে "http://localhost:8081/login/google" রেখেছি। আপনি যদি আপনার ব্রাউজারে সংযোগের জন্য ইউআরআই হিসেবে "http://localhost:8081" ব্যবহার করেন, তাহলে এই মানগুলো কাজ করবে। উদাহরণস্বরূপ, যখন আপনি আপনার কম্পিউটার থেকে একটি SSH টানেলের মাধ্যমে সংযোগ করেন। আমি পরে দেখাবো কিভাবে এটি করতে হয়।

9dc25f2d318097e2.png

"Create" বোতামটি চাপার পর আপনার ক্লায়েন্টের ক্রেডেনশিয়ালসহ একটি পপ-আপ উইন্ডো আসবে। এবং এই ক্রেডেনশিয়ালগুলো সিস্টেমে রেকর্ড করা হবে। আপনার অ্যাপ্লিকেশনটি চালু করার সময় ব্যবহারের জন্য আপনি ক্লায়েন্ট আইডিটি সবসময় কপি করে রাখতে পারেন।

f5a7b6ad0858d95c.png

পরে আপনি দেখতে পাবেন কোথায় সেই ক্লায়েন্ট আইডিটি প্রদান করতে হবে।

পরিষেবা অ্যাকাউন্ট তৈরি করুন

আমাদের ক্লাউড রান সার্ভিসের জন্য সমস্ত প্রয়োজনীয় প্রিভিলেজ সহ একটি ডেডিকেটেড সার্ভিস অ্যাকাউন্ট প্রয়োজন। আমাদের সার্ভিসের জন্য অ্যালয়ডিবি (AlloyDB) এবং ক্লাউড সিক্রেট ম্যানেজার (Cloud Secret Manager)-এ অ্যাক্সেস প্রয়োজন। সার্ভিস অ্যাকাউন্টের নাম হিসেবে আমরা টুলবক্স-আইডেন্টিটি (toolbox-identity) ব্যবহার করতে যাচ্ছি।

উপরে থাকা "+" চিহ্নটি ব্যবহার করে আরেকটি ক্লাউড শেল ট্যাব খুলুন।

4ca978f5142bb6ce.png

নতুন ক্লাউড শেল ট্যাবে নিম্নলিখিতটি চালান:

export PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts create toolbox-identity

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/alloydb.client"
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/serviceusage.serviceUsageConsumer"
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/secretmanager.secretAccessor"

কোনো ত্রুটি দেখা দিলে অনুগ্রহ করে মনোযোগ দিন। এই কমান্ডটির কাজ হলো ক্লাউড রান সার্ভিসের জন্য একটি সার্ভিস অ্যাকাউন্ট তৈরি করা এবং সিক্রেট ম্যানেজার, ডেটাবেস ও ভার্টেক্স এআই (Vertex AI) নিয়ে কাজ করার বিশেষাধিকার প্রদান করা।

ctrl+d চেপে অথবা ট্যাবের ভেতরে "exit" কমান্ডটি চালিয়ে ট্যাবটি বন্ধ করুন:

exit

এমসিপি টুলবক্স কনফিগারেশন প্রস্তুত করুন

এমসিপি টুলবক্সের জন্য কনফিগারেশন ফাইল প্রস্তুত করুন। আপনি ডকুমেন্টেশনে সমস্ত কনফিগারেশন অপশন সম্পর্কে পড়তে পারেন, কিন্তু এখানে আমরা নমুনা tools.yaml ফাইলটি ব্যবহার করব এবং ক্লাস্টার ও ইনস্ট্যান্সের নাম, AlloyDB পাসওয়ার্ড এবং প্রজেক্ট আইডির মতো কিছু ভ্যালু আমাদের আসল ভ্যালু দিয়ে প্রতিস্থাপন করব।

AlloyDB পাসওয়ার্ড রপ্তানি করুন:

export PGPASSWORD=<noted AlloyDB password>

পূর্ববর্তী ধাপে প্রস্তুত করা ক্লায়েন্ট আইডি এক্সপোর্ট করুন:

export CLIENT_ID=<noted OAuth 2.0 client ID for our application>

কনফিগারেশন ফাইল প্রস্তুত করুন।

PROJECT_ID=$(gcloud config get-value project)
ADBCLUSTER=alloydb-aip-01
sed -e "s/project: retrieval-app-testing/project: $(gcloud config get-value project)/g" \
-e "s/cluster: my-alloydb-cluster/cluster: $ADBCLUSTER/g" \
-e "s/instance: my-alloydb-instance/instance: $ADBCLUSTER-pr/g" \
-e "s/password: postgres/password: $PGPASSWORD\\n    ipType: private/g" \
-e "s/^ *clientId: .*/    clientId: $CLIENT_ID/g" \
cymbal-air-toolbox-demo/tools.yaml >~/tools.yaml

আপনি যদি টার্গেট ডেটা সোর্স নির্ধারণকারী ফাইল সেকশনটি দেখেন, তাহলে দেখতে পাবেন যে আমরা সংযোগের জন্য প্রাইভেট আইপি ব্যবহার করার একটি লাইনও যোগ করেছি।

sources:
  my-pg-instance:
    kind: alloydb-postgres
    project: gleb-test-short-003-471020
    region: us-central1
    cluster: alloydb-aip-01
    instance: alloydb-aip-01-pr
    database: assistantdemo
    user: postgres
    password: L23F...
    ipType: private
authServices:
  my_google_service:
    kind: google
    clientId: 96828*******-***********.apps.googleusercontent.com

tools.yaml কনফিগারেশনকে উৎস হিসেবে ব্যবহার করে একটি সিক্রেট তৈরি করুন।

ভিএম এসএসএইচ কনসোলে নিম্নলিখিত কমান্ডটি চালান:

gcloud secrets create tools --data-file=tools.yaml

প্রত্যাশিত কনসোল আউটপুট:

student@instance-1:~$ gcloud secrets create tools --data-file=tools.yaml
Created version [1] of the secret [tools].

এমসিপি টুলবক্সকে একটি ক্লাউড রান পরিষেবা হিসাবে স্থাপন করুন

এখন ক্লাউড রান-এ এমসিপি টুলবক্সকে একটি সার্ভিস হিসেবে ডেপ্লয় করার জন্য সবকিছু প্রস্তুত। লোকাল টেস্টিংয়ের জন্য আপনি "./toolbox –tools-file=./tools.yaml" কমান্ডটি চালাতে পারেন, কিন্তু যদি আমরা আমাদের অ্যাপ্লিকেশনটি ক্লাউডে চালাতে চাই, তবে ক্লাউড রান-এ ডেপ্লয়মেন্ট করাই অনেক বেশি যুক্তিযুক্ত।

ভিএম এসএসএইচ সেশনে নিম্নলিখিতটি চালান:

export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest
gcloud run deploy toolbox \
    --image $IMAGE \
    --service-account toolbox-identity \
    --region us-central1 \
    --set-secrets "/app/tools.yaml=tools:latest" \
    --args="--tools-file=/app/tools.yaml","--address=0.0.0.0","--port=8080" \
    --network default \
    --subnet default \
    --no-allow-unauthenticated

প্রত্যাশিত কনসোল আউটপুট:

student@instance-1:~$ export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest
gcloud run deploy toolbox \
    --image $IMAGE \
    --service-account toolbox-identity \
    --region us-central1 \
    --set-secrets "/app/tools.yaml=tools:latest" \
    --args="--tools-file=/app/tools.yaml","--address=0.0.0.0","--port=8080" \
    --network default \
    --subnet default \
    --no-allow-unauthenticated
Deploying container to Cloud Run service [toolbox] in project [gleb-test-short-002-470613] region [us-central1]
✓ Deploying new service... Done.                                                                                                                                                                                                
  ✓ Creating Revision...                                                                                                                                                                                                        
  ✓ Routing traffic...                                                                                                                                                                                                          
Done.                                                                                                                                                                                                                           
Service [toolbox] revision [toolbox-00001-l9c] has been deployed and is serving 100 percent of traffic.
Service URL: https://toolbox-868691532292.us-central1.run.app

student@instance-1:~$

পরিষেবাটি যাচাই করুন

এখন আমরা পরীক্ষা করে দেখতে পারি সার্ভিসটি চালু আছে কিনা এবং এন্ডপয়েন্টটি অ্যাক্সেস করতে পারি কিনা। রিট্রিভাল সার্ভিস এন্ডপয়েন্ট এবং অথেনটিকেশন টোকেন পেতে আমরা gcloud ইউটিলিটি ব্যবহার করি। বিকল্পভাবে, আপনি ক্লাউড কনসোলে সার্ভিস URI-টি পরীক্ষা করতে পারেন।

dd1a16ee00a861a0.png

আপনি মানটি কপি করে curl কমান্ডে "$(gcloud run services list –filter="(toolbox)" –format="value(URL)" অংশটি প্রতিস্থাপন করতে পারেন।

কমান্ড লাইন থেকে ডাইনামিকভাবে URL পাওয়ার উপায়টি নিচে দেওয়া হলো:

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $(gcloud  run services list --filter="(toolbox)" --format="value(URL)")

প্রত্যাশিত কনসোল আউটপুট:

student@instance-1:~$ curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $(gcloud  run services list --filter="(toolbox)" --format="value(URL)")
🧰 Hello, World! 🧰student@instance-1:~$

যদি আমরা "Hello World" বার্তাটি দেখি, তার মানে আমাদের পরিষেবাটি চালু আছে এবং অনুরোধগুলি পূরণ করছে।

৮. নমুনা অ্যাপ্লিকেশনটি স্থাপন করুন

এখন যেহেতু আমাদের ডেটা পুনরুদ্ধার পরিষেবাটি চালু হয়ে গেছে, আমরা একটি নমুনা অ্যাপ্লিকেশন স্থাপন করতে পারি। অ্যাপ্লিকেশনটি একটি অনলাইন বিমানবন্দর সহকারীর প্রতিনিধিত্ব করে, যা আপনাকে ফ্লাইট ও বিমানবন্দর সম্পর্কে তথ্য দিতে পারে এবং এমনকি আমাদের ডেটাবেস থেকে প্রাপ্ত ফ্লাইট ও বিমানবন্দরের তথ্যের উপর ভিত্তি করে একটি ফ্লাইট বুকও করতে পারে।

অ্যাপ্লিকেশনটি স্থানীয়ভাবে, ক্লাউডের কোনো ভিএম-এ অথবা ক্লাউড রান বা কুবারনেটিসের মতো অন্য কোনো পরিষেবাতে ডেপ্লয় করা যেতে পারে। এখানে আমরা প্রথমে দেখাবো কিভাবে এটিকে ভিএম-এ ডেপ্লয় করতে হয়।

পরিবেশ প্রস্তুত করুন

আমরা একই SSH সেশন ব্যবহার করে আমাদের VM-এ কাজ চালিয়ে যাচ্ছি। আমাদের অ্যাপ্লিকেশনটি চালানোর জন্য কিছু পাইথন মডিউল প্রয়োজন এবং আমরা পূর্বে ডাটাবেস চালু করার সময় সেগুলি ইতিমধ্যেই যোগ করেছি। চলুন আমাদের পাইথন ভার্চুয়াল এনভায়রনমেন্টে যাই এবং আমাদের অবস্থান অ্যাপ ডিরেক্টরিতে পরিবর্তন করি।

ভিএম এসএসএইচ সেশনে নিম্নলিখিতটি চালান:

source ~/.venv/bin/activate
cd cymbal-air-toolbox-demo

প্রত্যাশিত আউটপুট (সংশোধিত):

student@instance-1:~$ source ~/.venv/bin/activate
cd cymbal-air-toolbox-demo
(.venv) student@instance-1:~/cymbal-air-toolbox-demo$

সহকারী অ্যাপ্লিকেশন চালান

অ্যাপ্লিকেশনটি শুরু করার আগে আমাদের কিছু এনভায়রনমেন্ট ভেরিয়েবল সেট করতে হবে। অ্যাপ্লিকেশনটির মৌলিক কার্যকারিতা, যেমন ফ্লাইট অনুসন্ধান এবং বিমানবন্দরের সুযোগ-সুবিধা জানার জন্য শুধুমাত্র TOOLBOX_URL প্রয়োজন, যা অ্যাপ্লিকেশনটিকে ডেটা পুনরুদ্ধার পরিষেবাতে নির্দেশ করে। আমরা gcloud কমান্ড ব্যবহার করে এটি পেতে পারি।

ভিএম এসএসএইচ সেশনে নিম্নলিখিতটি চালান:

export TOOLBOX_URL=$(gcloud  run services list --filter="(toolbox)" --format="value(URL)")

প্রত্যাশিত আউটপুট (সংশোধিত):

student@instance-1:~/cymbal-air-toolbox-demo$ export BASE_URL=$(gcloud  run services list --filter="(toolbox)" --format="value(URL)")

অ্যাপ্লিকেশনটির আরও উন্নত ক্ষমতা, যেমন ফ্লাইট বুকিং এবং পরিবর্তন করার জন্য, আমাদের গুগল অ্যাকাউন্ট ব্যবহার করে অ্যাপ্লিকেশনটিতে সাইন-ইন করতে হবে এবং সেই উদ্দেশ্যে, 'ক্লায়েন্ট আইডি প্রস্তুত করুন' অধ্যায় থেকে OAuth ক্লায়েন্ট আইডি ব্যবহার করে CLIENT_ID এনভায়রনমেন্ট ভেরিয়েবলটি প্রদান করতে হবে।

export CLIENT_ID=215....apps.googleusercontent.com

প্রত্যাশিত আউটপুট (সংশোধিত):

student@instance-1:~/cymbal-air-toolbox-demo$ export CLIENT_ID=215....apps.googleusercontent.com

এবং এখন আমরা আমাদের অ্যাপ্লিকেশনটি চালাতে পারি:

python run_app.py

প্রত্যাশিত আউটপুট:

student@instance-1:~/cymbal-air-toolbox-demo/llm_demo$ python run_app.py
INFO:     Started server process [2900]
INFO:     Waiting for application startup.
Loading application...
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8081 (Press CTRL+C to quit)

অ্যাপ্লিকেশনটিতে সংযোগ করুন

ভিএম-এ চলমান অ্যাপ্লিকেশনটির সাথে সংযোগ করার জন্য আপনার কাছে বেশ কয়েকটি উপায় রয়েছে। উদাহরণস্বরূপ, আপনি ভিপিসি-তে ফায়ারওয়াল নিয়ম ব্যবহার করে ভিএম-এ পোর্ট ৮০৮১ খুলতে পারেন অথবা পাবলিক আইপি দিয়ে একটি লোড ব্যালেন্সার তৈরি করতে পারেন। এখানে আমরা লোকাল পোর্ট ৮০৮০-কে ভিএম পোর্ট ৮০৮১-এ রূপান্তর করে ভিএম-এর সাথে একটি এসএসএইচ টানেল ব্যবহার করতে যাচ্ছি।

স্থানীয় মেশিন থেকে সংযোগ করা হচ্ছে

যখন আমরা কোনো লোকাল মেশিন থেকে সংযোগ করতে চাই, তখন আমাদের একটি SSH টানেল চালাতে হয়। এটি gcloud compute ssh ব্যবহার করে করা যেতে পারে।

gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8081:localhost:8081

প্রত্যাশিত আউটপুট:

student-macbookpro:~ student$ gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8080:localhost:8081
Warning: Permanently added 'compute.7064281075337367021' (ED25519) to the list of known hosts.
Linux instance-1.us-central1-c.c.gleb-test-001.internal 6.1.0-21-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
student@instance-1:~$

এখন আমরা ব্রাউজার খুলে http://localhost:8081 ব্যবহার করে আমাদের অ্যাপ্লিকেশনে সংযোগ করতে পারি। আমরা অ্যাপ্লিকেশন স্ক্রিনটি দেখতে পাব।

c667b9013afac3f9.png

ক্লাউড শেল থেকে সংযোগ স্থাপন

বিকল্পভাবে আমরা সংযোগ করার জন্য গুগল ক্লাউড শেল ব্যবহার করতে পারি। উপরে থাকা "+" চিহ্নটি ব্যবহার করে আরেকটি ক্লাউড শেল ট্যাব খুলুন।

4ca978f5142bb6ce.png

নতুন ট্যাবে gcloud কমান্ডটি চালিয়ে আপনার ওয়েব ক্লায়েন্টের জন্য অরিজিন এবং রিডাইরেক্ট ইউআরআই সংগ্রহ করুন:

echo "origin:"; echo "https://8080-$WEB_HOST"; echo "redirect:"; echo "https://8080-$WEB_HOST/login/google"

প্রত্যাশিত আউটপুটটি হলো:

student@cloudshell:~ echo "origin:"; echo "https://8080-$WEB_HOST"; echo "redirect:"; echo "https://8080-$WEB_HOST/login/google"
origin:
https://8080-cs-35704030349-default.cs-us-east1-rtep.cloudshell.dev
redirect:
https://8080-cs-35704030349-default.cs-us-east1-rtep.cloudshell.dev/login/google

এবং "ক্লায়েন্ট আইডি প্রস্তুত করুন" অধ্যায়ে তৈরি করা আমাদের ক্রেডেনশিয়ালগুলির জন্য, শুরুতে দেওয়া http://localhost:8080 মানগুলিকে প্রতিস্থাপন বা যোগ করে, সেই অরিজিন এবং রিডাইরেক্ট ইউআরআইগুলিকে " অনুমোদিত জাভাস্ক্রিপ্ট অরিজিন " এবং "অনুমোদিত রিডাইরেক্ট ইউআরআই " হিসাবে ব্যবহার করুন।

OAuth 2.0 ক্লায়েন্ট আইডি পেজে 'Cymbal Air'-এ ক্লিক করুন।

b4c1430329886d9c.png

ক্লাউড শেলের জন্য অরিজিন এবং রিডাইরেক্ট ইউআরআই দিন এবং সেভ বাটনে চাপ দিন।

5651bdd6d0d1c88.png

নতুন ক্লাউড শেল ট্যাবে gcloud কমান্ডটি চালিয়ে আপনার VM-এর সাথে টানেলটি চালু করুন:

gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8080:localhost:8081

যদি "অনুরোধকৃত ঠিকানা বরাদ্দ করা যাচ্ছে না" এই ত্রুটিটি দেখায়, তবে অনুগ্রহ করে তা উপেক্ষা করুন।

প্রত্যাশিত আউটপুটটি হলো:

student@cloudshell:~ gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8080:localhost:8081
bind [::1]:8081: Cannot assign requested address
inux instance-1.us-central1-a.c.gleb-codelive-01.internal 6.1.0-21-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat May 25 19:15:46 2024 from 35.243.235.73
student@instance-1:~$

এটি আপনার ক্লাউড শেলে পোর্ট ৮০৮০ খোলে, যা 'ওয়েব প্রিভিউ'-এর জন্য ব্যবহার করা যেতে পারে।

আপনার ক্লাউড শেলের উপরের ডানদিকে থাকা 'ওয়েব প্রিভিউ' বোতামে ক্লিক করুন এবং ড্রপ-ডাউন মেনু থেকে 'পোর্ট ৮০৮০-তে প্রিভিউ' নির্বাচন করুন।

444fbf54dcd4d160.png

এটি আপনার ওয়েব ব্রাউজারে অ্যাপ্লিকেশন ইন্টারফেস সহ একটি নতুন ট্যাব খোলে। আপনি "Cymbal Air Customer Service Assistant" পৃষ্ঠাটি দেখতে পাবেন।

389f0ae2945beed5.png

অ্যাপ্লিকেশনটিতে সাইন ইন করুন

সবকিছু সেট আপ হয়ে গেলে এবং আপনার অ্যাপ্লিকেশনটি খোলা থাকলে, আপনি আপনার অ্যাপ্লিকেশন স্ক্রিনের উপরের ডানদিকে থাকা "সাইন ইন" বোতামটি ব্যবহার করে আপনার লগইন তথ্য প্রদান করতে পারেন। এটি ঐচ্ছিক এবং শুধুমাত্র তখনই প্রয়োজন হবে, যদি আপনি অ্যাপ্লিকেশনটির বুকিং কার্যকারিতা ব্যবহার করে দেখতে চান।

a1f571371b957129.png

এটি একটি পপ-আপ উইন্ডো খুলবে যেখানে আমরা আমাদের পরিচয়পত্র নির্বাচন করতে পারব।

সাইন ইন করার পর অ্যাপ্লিকেশনটি প্রস্তুত হয়ে যাবে এবং আপনি উইন্ডোর নিচের অংশে থাকা ফিল্ডে আপনার অনুরোধগুলো পোস্ট করা শুরু করতে পারবেন।

এই ডেমোতে সিম্বাল এয়ারের কাস্টমার সার্ভিস অ্যাসিস্ট্যান্টকে তুলে ধরা হয়েছে। সিম্বাল এয়ার একটি কাল্পনিক যাত্রীবাহী বিমান সংস্থা। এই অ্যাসিস্ট্যান্টটি একটি এআই চ্যাটবট, যা যাত্রীদের ফ্লাইট পরিচালনা করতে এবং সান ফ্রান্সিসকো আন্তর্জাতিক বিমানবন্দর (SFO)-এ অবস্থিত সিম্বাল এয়ারের হাব সম্পর্কে তথ্য খুঁজে বের করতে সাহায্য করে।

সাইন ইন না করেই (ক্লায়েন্ট আইডি ছাড়া) এটি ব্যবহারকারীদের নিম্নলিখিত প্রশ্নগুলির উত্তর দিতে সাহায্য করতে পারে:

ডেনভারের পরবর্তী ফ্লাইটটি কখন?

গেট C28-এর আশেপাশে কোনো বিলাসবহুল দোকান আছে কি?

A6 গেটের কাছে কোথায় কফি পাওয়া যাবে?

আমি উপহার কোথা থেকে কিনতে পারি?

অনুগ্রহ করে SFO থেকে ডেনভারের আজকের একটি ফ্লাইট খুঁজুন।

অ্যাপ্লিকেশনটিতে সাইন ইন করা থাকলে আপনি ফ্লাইট বুক করার মতো অন্যান্য সুবিধাগুলো ব্যবহার করতে পারেন অথবা আপনাকে বরাদ্দ করা আসনটি জানালার পাশের নাকি করিডোরের পাশের, তা যাচাই করে নিতে পারেন।

6e7758f707c67c3e.png

অ্যাপ্লিকেশনটি প্রতিক্রিয়া তৈরি করতে সর্বশেষ গুগল ফাউন্ডেশন মডেল ব্যবহার করে এবং সক্রিয় AlloyDB ডেটাবেস থেকে ফ্লাইট ও সুযোগ-সুবিধা সম্পর্কিত তথ্য দিয়ে সেটিকে সমৃদ্ধ করে। আপনি প্রকল্পটির গিটহাব পৃষ্ঠায় এই ডেমো অ্যাপ্লিকেশনটি সম্পর্কে আরও পড়তে পারেন।

৯. পরিবেশ পরিষ্কার করা

এখন যখন সব কাজ সম্পন্ন হবে, আমরা আমাদের পরিবেশ পরিষ্কার করতে পারব।

ক্লাউড রান পরিষেবা মুছে ফেলুন

ক্লাউড শেলে চালান:

gcloud run services delete toolbox --region us-central1

প্রত্যাশিত কনসোল আউটপুট:

student@cloudshell:~ (gleb-test-short-004)$ gcloud run services delete retrieval-service --region us-central1
Service [retrieval-service] will be deleted.

Do you want to continue (Y/n)?  Y

Deleting [retrieval-service]...done.                                                                                                                                                                                                                 
Deleted service [retrieval-service].

ক্লাউড চালিত পরিষেবার জন্য পরিষেবা অ্যাকাউন্টটি মুছে ফেলুন

ক্লাউড শেলে চালান:

PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts delete toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com --quiet

প্রত্যাশিত কনসোল আউটপুট:

student@cloudshell:~ (gleb-test-short-004)$ PROJECT_ID=$(gcloud config get-value project)
Your active configuration is: [cloudshell-222]
student@cloudshell:~ (gleb-test-short-004)$ gcloud iam service-accounts delete retrieval-identity@$PROJECT_ID.iam.gserviceaccount.com --quiet
deleted service account [retrieval-identity@gleb-test-short-004.iam.gserviceaccount.com]
student@cloudshell:~ (gleb-test-short-004)$

ল্যাবের কাজ শেষ হলে AlloyDB ইনস্ট্যান্স এবং ক্লাস্টারটি ধ্বংস করে দিন।

AlloyDB ক্লাস্টার এবং এর সমস্ত ইনস্ট্যান্স মুছে ফেলুন

আপনি যদি AlloyDB-এর ট্রায়াল সংস্করণ ব্যবহার করে থাকেন এবং সেই ট্রায়াল ক্লাস্টার ব্যবহার করে অন্যান্য ল্যাব ও রিসোর্স পরীক্ষা করার পরিকল্পনা থাকে, তাহলে সেটি ডিলিট করবেন না। আপনি একই প্রজেক্টে আরেকটি ট্রায়াল ক্লাস্টার তৈরি করতে পারবেন না।

`force` অপশনটির মাধ্যমে ক্লাস্টারটি ধ্বংস করা হয়, যা ক্লাস্টারের অন্তর্গত সমস্ত ইনস্ট্যান্সকেও মুছে দেয়।

যদি আপনার সংযোগ বিচ্ছিন্ন হয়ে যায় এবং পূর্বের সমস্ত সেটিংস হারিয়ে যায়, তাহলে ক্লাউড শেলে প্রজেক্ট এবং এনভায়রনমেন্ট ভেরিয়েবলগুলো নির্ধারণ করুন:

gcloud config set project <your project id>
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
export PROJECT_ID=$(gcloud config get-value project)

ক্লাস্টারটি মুছে ফেলুন:

gcloud alloydb clusters delete $ADBCLUSTER --region=$REGION --force

প্রত্যাশিত কনসোল আউটপুট:

student@cloudshell:~ (test-project-001-402417)$ gcloud alloydb clusters delete $ADBCLUSTER --region=$REGION --force
All of the cluster data will be lost when the cluster is deleted.

Do you want to continue (Y/n)?  Y

Operation ID: operation-1697820178429-6082890a0b570-4a72f7e4-4c5df36f
Deleting cluster...done.   

AlloyDB ব্যাকআপগুলি মুছুন

ক্লাস্টারের সমস্ত AlloyDB ব্যাকআপ মুছে ফেলুন:

for i in $(gcloud alloydb backups list --filter="CLUSTER_NAME: projects/$PROJECT_ID/locations/$REGION/clusters/$ADBCLUSTER" --format="value(name)" --sort-by=~createTime) ; do gcloud alloydb backups delete $(basename $i) --region $REGION --quiet; done

প্রত্যাশিত কনসোল আউটপুট:

student@cloudshell:~ (test-project-001-402417)$ for i in $(gcloud alloydb backups list --filter="CLUSTER_NAME: projects/$PROJECT_ID/locations/$REGION/clusters/$ADBCLUSTER" --format="value(name)" --sort-by=~createTime) ; do gcloud alloydb backups delete $(basename $i) --region $REGION --quiet; done
Operation ID: operation-1697826266108-60829fb7b5258-7f99dc0b-99f3c35f
Deleting backup...done.                                                                                                                                                                                                                                                            

এখন আমরা আমাদের ভিএম ধ্বংস করতে পারি

GCE VM মুছে ফেলুন

ক্লাউড শেলে চালান:

export GCEVM=instance-1
export ZONE=us-central1-a
gcloud compute instances delete $GCEVM \
    --zone=$ZONE \
    --quiet

প্রত্যাশিত কনসোল আউটপুট:

student@cloudshell:~ (test-project-001-402417)$ export GCEVM=instance-1
export ZONE=us-central1-a
gcloud compute instances delete $GCEVM \
    --zone=$ZONE \
    --quiet
Deleted 

GCE VM এবং রিট্রিভাল সার্ভিসের জন্য সার্ভিস অ্যাকাউন্টটি মুছে ফেলুন

ক্লাউড শেলে চালান:

PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts delete compute-aip@$PROJECT_ID.iam.gserviceaccount.com --quiet

প্রত্যাশিত কনসোল আউটপুট:

student@cloudshell:~ (gleb-test-short-004)$ PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts delete compute-aip@$PROJECT_ID.iam.gserviceaccount.com --quiet
Your active configuration is: [cloudshell-222]
deleted service account [compute-aip@gleb-test-short-004.iam.gserviceaccount.com]
student@cloudshell:~ (gleb-test-short-004)$ 

১০. অভিনন্দন

কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন।

আমরা যা আলোচনা করেছি

  • AlloyDB ক্লাস্টার কীভাবে স্থাপন করবেন
  • AlloyDB-তে কীভাবে সংযোগ করবেন
  • MCP টুলবক্স সার্ভিস কীভাবে কনফিগার এবং ডিপ্লয় করবেন
  • ডেপ্লয়েড সার্ভিস ব্যবহার করে কীভাবে একটি নমুনা অ্যাপ্লিকেশন ডেপ্লয় করবেন

১১. জরিপ

আউটপুট:

আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?

শুধু একবার পড়ে দেখুন এটি পড়ুন এবং অনুশীলনগুলো সম্পূর্ণ করুন।