GKE Autopilot এ চলমান অ্যাপ্লিকেশন থেকে প্রাইভেট AlloyDB ইনস্ট্যান্সের সাথে সংযোগ করা হচ্ছে

1। সংক্ষিপ্ত বিবরণ

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

e8a5140b09521b7a.png

AlloyDB ব্যক্তিগত পরিষেবা অ্যাক্সেসের জন্য কনফিগার করা ব্যক্তিগত, অভ্যন্তরীণ IP ঠিকানাগুলির মাধ্যমে নেটওয়ার্ক সংযোগ সমর্থন করে।

আপনার ভিপিসি নেটওয়ার্ক এবং অন্তর্নিহিত Google ক্লাউড ভিপিসি নেটওয়ার্ক যেখানে আপনার AlloyDB সংস্থানগুলি (ক্লাস্টার এবং ইনস্ট্যান্স) থাকে তার মধ্যে একটি VPC পিয়ারিং সংযোগ হিসাবে ব্যক্তিগত পরিষেবা অ্যাক্সেস কার্যকর করা হয়৷ ব্যক্তিগত সংযোগ আপনার ভিপিসি নেটওয়ার্কের সংস্থানগুলিকে অভ্যন্তরীণ IP ঠিকানাগুলি ব্যবহার করে একচেটিয়াভাবে অ্যাক্সেস করে এমন AlloyDB সংস্থানগুলির সাথে যোগাযোগ করতে সক্ষম করে৷ আপনার VPC নেটওয়ার্কের সংস্থানগুলির AlloyDB সংস্থানগুলিতে পৌঁছানোর জন্য ইন্টারনেট অ্যাক্সেস বা বাহ্যিক IP ঠিকানাগুলির প্রয়োজন নেই৷

44662d7a086358de.png

GKE অটোপাইলট কি?

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

AlloyDB কি?

আপনার সবচেয়ে চাহিদাপূর্ণ এন্টারপ্রাইজ ডাটাবেস কাজের চাপের জন্য একটি সম্পূর্ণরূপে পরিচালিত PostgreSQL-সামঞ্জস্যপূর্ণ ডাটাবেস পরিষেবা। উচ্চতর কর্মক্ষমতা, স্কেল এবং প্রাপ্যতার জন্য AlloyDB সবচেয়ে জনপ্রিয় ওপেন-সোর্স ডাটাবেস ইঞ্জিন, PostgreSQL-এর সাথে Google-এর সেরাকে একত্রিত করে।

যা শিখবেন

এই ল্যাবে, আপনি নিম্নলিখিতগুলি কীভাবে করবেন তা শিখবেন:

  • AlloyDB ডাটাবেসের ব্যক্তিগত উদাহরণ তৈরি করুন
  • GKE অটোপাইলট ক্লাস্টারে একটি অ্যাপ্লিকেশন স্থাপন করুন যা AlloyDB উদাহরণের সাথে সংযোগ করে

পূর্বশর্ত

  • এই ল্যাবটি ক্লাউড কনসোল এবং ক্লাউড শেল পরিবেশের সাথে পরিচিতি অনুমান করে।
  • পূর্বের GKE এবং AlloyDB অভিজ্ঞতা সহায়ক কিন্তু প্রয়োজন নেই।

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

ক্লাউড প্রজেক্ট সেটআপ

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

এনভায়রনমেন্ট সেটআপ

অনুসন্ধান বারের ডানদিকে আইকনে ক্লিক করে ক্লাউড শেল সক্রিয় করুন।

eb0157a992f16fa3.png

সংগ্রহস্থল ক্লোন করুন এবং ডিরেক্টরিতে নেভিগেট করুন, টার্মিনালে নীচের কমান্ডটি অনুলিপি এবং পেস্ট করুন এবং এন্টার টিপুন:

git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service

gke-lab-setup.sh চালানোর মাধ্যমে প্রয়োজনীয় নির্ভরতা স্থাপন করুন

নিম্নলিখিত সংস্থান তৈরি করা হবে:

  • AlloyDB ক্লাস্টার এবং উদাহরণ
  • আর্টিফ্যাক্ট রেজিস্ট্রি ক্লাউড রান জব এবং গ্রাহক পরিষেবার জন্য কন্টেইনার ইমেজ সংরক্ষণ করতে
  • AlloyDB ডাটাবেসের সাথে যোগাযোগ করতে ক্লাউড রান কাজের জন্য VPC অ্যাক্সেস সংযোগকারী
  • AlloyDB ডাটাবেস তৈরি করতে ক্লাউড রান জব
  • GKE অটোপাইলট ক্লাস্টার
./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 অটোপাইলট ক্লাস্টার পর্যালোচনা করুন

প্রকল্প পরিবেশ ভেরিয়েবল সেট করুন:

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 অটোপাইলট ক্লাস্টার দেখতে কমান্ড চালান:

gcloud container clusters list

নমুনা আউটপুট:

e8882c44fa0bb631.png

ক্লাস্টারের জন্য শংসাপত্র সংরক্ষণ করতে কমান্ডটি চালান:

CLUSTER_NAME=rewards-cluster
REGION=us-central1

gcloud container clusters get-credentials $CLUSTER_NAME --region=$REGION

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

এরপরে আপনি একটি গ্রাহক পরিষেবা অ্যাপ্লিকেশন স্থাপন করবেন।

কাস্টমার সার্ভিস অ্যাপ্লিকেশন হল একটি জাভা ভিত্তিক মাইক্রোসার্ভিস যা কোয়ার্কাস ফ্রেমওয়ার্ক ব্যবহার করে।

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 .

সর্বশেষ বিল্ডের জন্য বিশদ পর্যালোচনা করতে কনসোলে ক্লাউড বিল্ড খুলুন।

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. পরীক্ষার আবেদন

গ্রাহক পরিষেবা URL সংরক্ষণ করতে নীচের কমান্ডগুলি চালান৷

kubectl get svc

পূর্ববর্তী আউটপুট থেকে External IP এর মান ব্যবহার করে নীচে পরিবেশ পরিবর্তনশীল সেট করুন।

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 কাজের চাপ এবং পরিষেবা পর্যালোচনা করুন

ক্লাউড কনসোলে Kubernetes ইঞ্জিন খুলুন এবং তৈরি ওয়ার্কলোড এবং পরিষেবাগুলি পর্যালোচনা করুন৷

e1217216e003a839.png

d5c97fb5950c4db.png

অ্যাপ্লিকেশন লগ

লগ এক্সপ্লোরার খুলুন এবং "গ্রাহক ইতিমধ্যেই বিদ্যমান" টেক্সট আছে এমন লগগুলির জন্য অনুসন্ধান করুন৷

543c5ed97819f540.png

5. অভিনন্দন!

অভিনন্দন, আপনি কোডল্যাব শেষ করেছেন!

আমরা যা কভার করেছি:

  • কিভাবে AlloyDB ডাটাবেসের ব্যক্তিগত উদাহরণ তৈরি করবেন
  • GKE অটোপাইলট ক্লাস্টারে একটি অ্যাপ্লিকেশন কীভাবে স্থাপন করবেন যা AlloyDB উদাহরণের সাথে সংযোগ করে

এরপর কি:

অন্যান্য Cymbal Eats কোডল্যাবগুলি অন্বেষণ করুন:

পরিষ্কার কর

এই টিউটোরিয়ালে ব্যবহৃত সংস্থানগুলির জন্য আপনার Google ক্লাউড অ্যাকাউন্টে চার্জ এড়াতে, হয় সংস্থানগুলি রয়েছে এমন প্রকল্পটি মুছুন, অথবা প্রকল্পটি রাখুন এবং পৃথক সংস্থানগুলি মুছুন৷

প্রকল্প মুছে ফেলা হচ্ছে

বিলিং দূর করার সবচেয়ে সহজ উপায় হল আপনি টিউটোরিয়ালের জন্য তৈরি করা প্রকল্পটি মুছে ফেলা।