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

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

GKE অটোপাইলট কী?
GKE অটোপাইলট হল GKE-তে অপারেশনের একটি মোড যেখানে Google আপনার ক্লাস্টার কনফিগারেশন পরিচালনা করে, যার মধ্যে রয়েছে আপনার নোড, স্কেলিং, নিরাপত্তা এবং অন্যান্য পূর্ব-কনফিগার করা সেটিংস। অটোপাইলট ক্লাস্টারগুলি বেশিরভাগ উৎপাদন ওয়ার্কলোড চালানোর জন্য অপ্টিমাইজ করা হয় এবং আপনার Kubernetes ম্যানিফেস্টের উপর ভিত্তি করে কম্পিউট রিসোর্স সরবরাহ করে। স্ট্রিমলাইন করা কনফিগারেশনটি GKE-এর সেরা অনুশীলন এবং ক্লাস্টার এবং ওয়ার্কলোড সেটআপ, স্কেলেবিলিটি এবং নিরাপত্তার জন্য সুপারিশ অনুসরণ করে। অন্তর্নির্মিত সেটিংসের তালিকার জন্য, অটোপাইলট এবং স্ট্যান্ডার্ড তুলনা টেবিলটি দেখুন।
AlloyDB কি?
আপনার সবচেয়ে চাহিদাপূর্ণ এন্টারপ্রাইজ ডাটাবেস ওয়ার্কলোডের জন্য একটি সম্পূর্ণরূপে পরিচালিত PostgreSQL-সামঞ্জস্যপূর্ণ ডাটাবেস পরিষেবা। উচ্চতর কর্মক্ষমতা, স্কেল এবং প্রাপ্যতার জন্য AlloyDB সবচেয়ে জনপ্রিয় ওপেন-সোর্স ডাটাবেস ইঞ্জিনগুলির মধ্যে একটি, PostgreSQL-এর সাথে Google-এর সেরাগুলিকে একত্রিত করে।
তুমি কি শিখবে
এই ল্যাবে, আপনি নিম্নলিখিত কাজগুলি শিখবেন:
- AlloyDB ডাটাবেসের ব্যক্তিগত উদাহরণ তৈরি করুন
- GKE অটোপাইলট ক্লাস্টারে এমন একটি অ্যাপ্লিকেশন স্থাপন করুন যা AlloyDB ইনস্ট্যান্সের সাথে সংযোগ স্থাপন করে।
পূর্বশর্ত
- এই ল্যাবটি ক্লাউড কনসোল এবং ক্লাউড শেল পরিবেশের সাথে পরিচিতি ধরে নেয়।
- পূর্ববর্তী GKE এবং AlloyDB অভিজ্ঞতা সহায়ক কিন্তু প্রয়োজন নয়।
2. সেটআপ এবং প্রয়োজনীয়তা
ক্লাউড প্রজেক্ট সেটআপ
- গুগল ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন অথবা বিদ্যমান একটি পুনরায় ব্যবহার করুন। যদি আপনার ইতিমধ্যেই একটি জিমেইল বা গুগল ওয়ার্কস্পেস অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।



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

রিপোজিটরিটি ক্লোন করুন এবং ডিরেক্টরিতে নেভিগেট করুন, নীচের কমান্ডটি টার্মিনালে কপি করে পেস্ট করুন এবং এন্টার টিপুন:
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
যদি অনুমোদনের জন্য অনুরোধ করা হয়, তাহলে চালিয়ে যেতে "অনুমোদন" এ ক্লিক করুন।

সেটআপটি প্রায় ১০ মিনিট সময় নেবে। প্রয়োজনীয় নির্ভরতা তৈরি করতে ব্যবহৃত সেটআপ স্ক্রিপ্টটি পর্যালোচনা করুন।
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.
৩. অ্যাপ্লিকেশন স্থাপন
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
কনসোলে উপলব্ধ বৈশিষ্ট্যগুলি (কোয়েরি অন্তর্দৃষ্টি, পর্যবেক্ষণ) অন্বেষণ করুন।

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
নমুনা আউটপুট:

ক্লাস্টারের জন্য শংসাপত্র সংরক্ষণ করতে কমান্ডটি চালান:
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 .
সর্বশেষ বিল্ডের বিশদ পর্যালোচনা করতে কনসোলে ক্লাউড বিল্ড খুলুন।

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 secrets অবজেক্ট তৈরি করতে নীচের কমান্ডগুলি চালান:
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
নমুনা আউটপুট:

৪. পরীক্ষার আবেদন
গ্রাহক পরিষেবা 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 ইঞ্জিন খুলুন এবং তৈরি করা কাজের চাপ এবং পরিষেবাগুলি পর্যালোচনা করুন।


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

৫. অভিনন্দন!
অভিনন্দন, তুমি কোডল্যাব শেষ করেছ!
আমরা যা কভার করেছি:
- AlloyDB ডাটাবেসের ব্যক্তিগত উদাহরণ কীভাবে তৈরি করবেন
- GKE অটোপাইলট ক্লাস্টারে এমন একটি অ্যাপ্লিকেশন কীভাবে স্থাপন করবেন যা AlloyDB ইনস্ট্যান্সের সাথে সংযুক্ত থাকে
এরপর কি:
অন্যান্য সিম্বাল ইটস কোডল্যাবগুলি অন্বেষণ করুন:
- Eventarc দিয়ে ক্লাউড ওয়ার্কফ্লো ট্রিগার করা
- ক্লাউড স্টোরেজ থেকে ইভেন্ট প্রসেসিং ট্রিগার করা হচ্ছে
- ক্লাউড রান থেকে প্রাইভেট ক্লাউডএসকিউএল-এর সাথে সংযোগ স্থাপন করা হচ্ছে
- ক্লাউড রান থেকে সম্পূর্ণরূপে পরিচালিত ডাটাবেসের সাথে সংযোগ স্থাপন করা
- আইডেন্টিটি অ্যাওয়্যার প্রক্সি (IAP) সহ সুরক্ষিত সার্ভারলেস অ্যাপ্লিকেশন
- ক্লাউড শিডিউলার দিয়ে ক্লাউড রান জবস ট্রিগার করা
- ক্লাউড রানে নিরাপদে স্থাপন করা হচ্ছে
- ক্লাউড রান ইনগ্রেস ট্র্যাফিক সুরক্ষিত করা
পরিষ্কার করা
এই টিউটোরিয়ালে ব্যবহৃত রিসোর্সের জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ এড়াতে, হয় রিসোর্স ধারণকারী প্রজেক্টটি মুছে ফেলুন, অথবা প্রজেক্টটি রেখে পৃথক রিসোর্সগুলি মুছে ফেলুন।
প্রকল্পটি মুছে ফেলা হচ্ছে
বিলিং দূর করার সবচেয়ে সহজ উপায় হল টিউটোরিয়ালের জন্য তৈরি করা প্রকল্পটি মুছে ফেলা।