GKE অটোপাইলট এবং পাব/সাবের সাথে সংহত ওয়ার্কফ্লো ট্রিগার করতে Eventarc কনফিগার করা হচ্ছে

1. ওভারভিউ

এই ল্যাবে, আপনি একটি Eventarc ট্রিগার তৈরি করবেন যা একটি Pub/Sub বিষয়কে Workflows পরিষেবার সাথে সংযুক্ত করে। Eventarc আপনাকে পরিষেবা যোগাযোগের জন্য পরিষেবাকে দ্বিগুণ করার অনুমতি দেয় - আপনার সমাধানকে আরও এক্সটেনসিবল এবং ইভেন্ট-চালিত করে। আপনি একটি ওয়ার্কফ্লো তৈরি করবেন যাতে সিম্বাল ইটসে অর্ডার করার জন্য গ্রাহকের পুরস্কার পয়েন্ট গণনা করার জন্য একটি ব্যবসায়িক প্রক্রিয়া চালানোর জন্য একাধিক পদক্ষেপ অন্তর্ভুক্ত থাকে। ওয়ার্কফ্লো GKE অটোপাইলটে চলমান একটি অ্যাপ্লিকেশনে একাধিক অনুরোধ পাঠাবে এবং গণনাকৃত পুরষ্কার পয়েন্ট সম্পর্কে অর্ডার পরিষেবা অ্যাপ্লিকেশনকে অবহিত করতে পাব/সাব বিষয়ে একটি বার্তা প্রকাশ করবে।

6c0606022b76f79d.png

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

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

GKE স্ট্যান্ডার্ডের সাথে, ব্যবহারকারীরা কর্মী নোড এবং নোড পুল কনফিগারেশন পরিচালনা করার জন্য দায়ী এবং বাকিগুলি GKE দ্বারা যত্ন নেওয়া হয়।

GKE স্ট্যান্ডার্ড মোডে চলাকালীন গ্রাহকের বনাম Google এর দায়িত্ব

85500aad65f87437.png

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

Eventarc কি?

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

Google ইভেন্ট প্রদানকারী

  • 90 টিরও বেশি Google ক্লাউড প্রদানকারী। এই প্রদানকারীরা সরাসরি উৎস থেকে (উদাহরণস্বরূপ ক্লাউড স্টোরেজ) অথবা ক্লাউড অডিট লগ এন্ট্রির মাধ্যমে ঘটনা পাঠায়।
  • পাব/সাব প্রদানকারী। এই প্রদানকারীরা Pub/Sub বার্তা ব্যবহার করে Eventarc-এ ইভেন্ট পাঠায়।

তৃতীয় পক্ষ প্রদানকারী

থার্ড-পার্টি প্রদানকারীরা হল নন-Google এন্টিটি যারা একটি Eventarc সোর্স অফার করে।

Eventarc ট্রিগার

  • ক্লাউড পাব/সাব ইভেন্ট। Eventarc পাব/সাব বিষয়গুলিতে প্রকাশিত বার্তাগুলির দ্বারা ট্রিগার করা যেতে পারে।
  • ক্লাউড অডিট লগ (CAL) ইভেন্ট। ক্লাউড অডিট লগ প্রতিটি ক্লাউড প্রকল্প, ফোল্ডার এবং সংস্থার জন্য অ্যাডমিন কার্যকলাপ এবং ডেটা অ্যাক্সেস অডিট লগ প্রদান করে।
  • সরাসরি ঘটনা। Eventarc বিভিন্ন সরাসরি ইভেন্ট দ্বারা ট্রিগার করা যেতে পারে যেমন একটি ক্লাউড স্টোরেজ বালতিতে একটি আপডেট বা একটি Firebase রিমোট কনফিগার টেমপ্লেটের একটি আপডেট৷

ইভেন্ট গন্তব্য

c7ca054200edf1b3.png

ওয়ার্কফ্লো কি?

ওয়ার্কফ্লো একটি সম্পূর্ণরূপে পরিচালিত পরিষেবা যা আপনাকে মাইক্রোসার্ভিস, কাজ এবং APIগুলিকে একীভূত করতে দেয়৷ ওয়ার্কফ্লো হল সার্ভারবিহীন পরিষেবা এবং আপনার চাহিদা মেটাতে স্কেল করবে।

কর্মপ্রবাহ ব্যবহার ক্ষেত্রে:

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

ওয়ার্কফ্লোগুলি এমন কর্মপ্রবাহের জন্য আদর্শ যা পরিষেবাগুলি অর্কেস্ট্রেট করে৷ আপনি প্রক্রিয়াগুলি স্বয়ংক্রিয় করতে পারেন যার মধ্যে এক বছর পর্যন্ত অপেক্ষা করা এবং পুনরায় চেষ্টা করা অন্তর্ভুক্ত।

কর্মপ্রবাহের সুবিধা:

  • কোডের উপর কনফিগারেশন: কোড লেখার পরিবর্তে যুক্তিটিকে কনফিগারেশনে সরিয়ে দিয়ে প্রযুক্তিগত ঋণ হ্রাস করুন।
  • আপনার আর্কিটেকচার সরলীকৃত করুন। স্টেটফুল ওয়ার্কফ্লোগুলি আপনাকে অতিরিক্ত নির্ভরতা ছাড়াই জটিল পরিষেবা সংহতকরণগুলি কল্পনা এবং নিরীক্ষণ করতে দেয়।
  • নির্ভরযোগ্যতা এবং দোষ সহনশীলতা অন্তর্ভুক্ত. ডিফল্ট বা কাস্টম পুনরায় চেষ্টা যুক্তি এবং ত্রুটি পরিচালনার সাথে ব্যর্থতা নিয়ন্ত্রণ করুন এমনকি যখন অন্যান্য সিস্টেম ব্যর্থ হয় — আপনাকে অগ্রগতির ট্র্যাক রাখতে সাহায্য করার জন্য ক্লাউড স্প্যানারে প্রতিটি ধাপে চেকপয়েন্ট করা।
  • জিরো রক্ষণাবেক্ষণ। প্রয়োজন অনুযায়ী স্কেল: প্যাচ বা বজায় রাখার কিছু নেই। অপেক্ষা করার সময় বা নিষ্ক্রিয় থাকার সময় কোনো খরচ ছাড়াই শুধুমাত্র আপনার ওয়ার্কফ্লো চলাকালীন অর্থ প্রদান করুন।

এই ল্যাবে, আপনি একটি ইভেন্ট-চালিত ওয়ার্কফ্লো কনফিগার করবেন।

যা শিখবেন

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

  • ওয়ার্কফ্লো ট্রিগার করতে পাব/সাব টপিক এবং ইভেন্টর্ক কনফিগার করুন
  • GKE Autopilot এ চলমান অ্যাপ্লিকেশনে API কল করতে ওয়ার্কফ্লো কনফিগার করুন
  • পাব/সাব-এ বার্তা প্রকাশ করতে ওয়ার্কফ্লো কনফিগার করুন
  • ক্লাউড লগিং এবং জিক্লাউড সিএলআই ব্যবহার করে ওয়ার্কফ্লো স্ট্রাকচার্ড লগগুলি কীভাবে জিজ্ঞাসা করবেন

পূর্বশর্ত

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

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

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

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

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

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

8613854df02635a3.png

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

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

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

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

  • AlloyDB ক্লাস্টার এবং উদাহরণ
  • GKE অটোপাইলট ক্লাস্টার
./gke-lab-setup.sh

অনুমোদনের জন্য অনুরোধ করা হলে, চালিয়ে যেতে "অনুমোদিত করুন" এ ক্লিক করুন।

6356559df3eccdda.png

সেটআপে প্রায় 10 মিনিট সময় লাগবে।

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

NAME: client-instance
ZONE: us-central1-c
MACHINE_TYPE: e2-medium
PREEMPTIBLE:
INTERNAL_IP: 10.128.0.9
EXTERNAL_IP: 35.232.109.233
STATUS: RUNNING

3. GKE অটোপাইলট ক্লাস্টার

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

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

772db9dd58172e0c.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 .

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 অবস্থায় রূপান্তরিত হতে কয়েক মুহূর্ত লাগবে৷

স্থাপনার স্পেসিফিকেশন ফাইল পর্যালোচনা করুন:

deployment.yaml.tmpl

এখানে কনফিগারেশনের অংশ যা এই অ্যাপ্লিকেশনটি চালানোর জন্য প্রয়োজনীয় সংস্থানগুলি নির্দিষ্ট করে৷

    spec:
      containers:
      - name: customer-service
        image: CUSTOMER_SERVICE_IMAGE
        resources:
          requests:
            cpu: 250m
            memory: 512Mi
            ephemeral-storage: 512Mi
          limits:
            cpu: 500m
            memory: 1024Mi
            ephemeral-storage: 1Gi

বাহ্যিক আইপি তৈরি করতে কমান্ডটি চালান যা কর্মপ্রবাহে ব্যবহৃত হবে:

SERVICE_NAME=customer-service

kubectl expose deployment $SERVICE_NAME \
  --type LoadBalancer --port 80 --target-port 8080

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

kubectl get all

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

179a23bd33793924.png

4. কর্মপ্রবাহ পর্যালোচনা করুন

কর্মপ্রবাহের মূল ধারণা

একটি ওয়ার্কফ্লো ওয়ার্কফ্লো সিনট্যাক্স ( YAML বা JSON ) ব্যবহার করে বর্ণিত ধাপগুলির একটি সিরিজ নিয়ে গঠিত।

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

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

এক্সিকিউশন কন্ট্রোল

  • পদক্ষেপ - একটি ওয়ার্কফ্লো তৈরি করতে, আপনি ওয়ার্কফ্লো সিনট্যাক্স ব্যবহার করে কাঙ্ক্ষিত steps এবং সম্পাদনের ক্রম সংজ্ঞায়িত করুন। প্রতিটি ওয়ার্কফ্লোতে কমপক্ষে একটি ধাপ থাকতে হবে।
  • শর্তাবলী - আপনি একটি নির্বাচন পদ্ধতি হিসাবে একটি switch ব্লক ব্যবহার করতে পারেন যা একটি কার্যপ্রবাহের নির্বাহের প্রবাহ নিয়ন্ত্রণ করতে একটি অভিব্যক্তির মানকে অনুমতি দেয়৷
  • পুনরাবৃত্তি - আপনি একটি সংখ্যার ক্রম বা তথ্য সংগ্রহের মাধ্যমে পুনরাবৃত্তি করার for লুপ ব্যবহার করতে পারেন, যেমন একটি তালিকা বা মানচিত্র।
  • সাবওয়ার্কফ্লোস - একটি সাবওয়ার্কফ্লো একটি প্রোগ্রামিং ভাষার রুটিন বা ফাংশনের অনুরূপভাবে কাজ করে, যা আপনাকে একটি ধাপ বা ধাপের সেট এনক্যাপসুলেট করতে দেয় যা আপনার ওয়ার্কফ্লো একাধিকবার পুনরাবৃত্তি করবে।

ট্রিগার মৃত্যুদন্ড

  • ম্যানুয়াল - আপনি Google ক্লাউড কনসোল থেকে বা Google ক্লাউড CLI ব্যবহার করে কমান্ড লাইন থেকে কর্মপ্রবাহ পরিচালনা করতে পারেন।
  • প্রোগ্রাম্যাটিক - ওয়ার্কফ্লোস API বা REST API-এর জন্য ক্লাউড ক্লায়েন্ট লাইব্রেরিগুলি ওয়ার্কফ্লোগুলি পরিচালনা করতে ব্যবহার করা যেতে পারে।
  • নির্ধারিত - আপনি একটি নির্দিষ্ট সময়সূচীতে একটি ওয়ার্কফ্লো চালানোর জন্য ক্লাউড শিডিউলার ব্যবহার করতে পারেন।

রানটাইম আর্গুমেন্ট

রানটাইমে পাস করা ডেটা আপনার প্রধান ওয়ার্কফ্লোতে একটি params ক্ষেত্র যোগ করে অ্যাক্সেস করা যেতে পারে (একটি প্রধান ব্লকে রাখা)। প্রধান ব্লক একটি একক যুক্তি গ্রহণ করে যা যেকোনো বৈধ JSON ডেটা প্রকার। প্যারামস ক্ষেত্রটি ভেরিয়েবলের নাম দেয় যা ওয়ার্কফ্লো আপনার পাস করা ডেটা সংরক্ষণ করতে ব্যবহার করে।

ওয়ার্কফ্লো লজিক

যদি একজন গ্রাহকের অস্তিত্ব না থাকে, তাহলে ওয়ার্কফ্লো প্রথমে একজন গ্রাহক তৈরি করতে একটি API কল করবে এবং তারপর পুরষ্কার পয়েন্ট আপডেট করবে। অর্ডারের মোট পরিমাণের উপর ভিত্তি করে, ওয়ার্কফ্লো গ্রাহকের জন্য পুরস্কার পয়েন্ট গণনা করতে একটি গুণক নির্বাচন করবে। বিস্তারিত জানার জন্য নীচের নমুনা দেখুন.

    - calculate_multiplier:
        switch:
          - condition: ${totalAmount < 10}
            steps:
              - set_multiplier1:
                  assign:
                    - multiplier: 2
          - condition: ${totalAmount >= 10 and totalAmount < 25}
            steps:
              - set_multiplier2:
                  assign:
                    - multiplier: 3
          - condition: ${totalAmount >= 25}
            steps:
              - set_multiplier3:
                  assign:
                    - multiplier: 5
    - calculate_rewards:
        assign:
            - rewardPoints: ${customerRecord.rewardPoints + multiplier}

99f9cf1076c03fb6.png

5. ওয়ার্কফ্লো কনফিগার এবং স্থাপন করুন

পরিষেবার জন্য বাহ্যিক আইপি ঠিকানা দেখতে কমান্ড চালান:

kubectl get svc

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

fe5cfec2bc836a5f.png

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

CUSTOMER_SERVICE_URL=http://$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')

ওয়ার্কফ্লো টেমপ্লেটে গ্রাহক পরিষেবা অ্যাপ্লিকেশন URL প্রতিস্থাপন করুন:

sed "s@CUSTOMER_SERVICE_URL@$CUSTOMER_SERVICE_URL@g" gkeRewardsWorkflow.yaml.tmpl > gkeRewardsWorkflow.yaml

ওয়ার্কফ্লোস পরিষেবা এবং প্রকল্প পরিবেশ ভেরিয়েবলের জন্য অবস্থান সেট করুন:

gcloud config set workflows/location ${REGION}

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)')

নিম্নলিখিত অনুমতি সহ কর্মপ্রবাহের জন্য একটি কাস্টম পরিষেবা অ্যাকাউন্ট তৈরি করুন:

  • কল লগিং API
  • PubSub বিষয়ে বার্তা প্রকাশ করুন
export WORKFLOW_SERVICE_ACCOUNT=workflows-sa

gcloud iam service-accounts create ${WORKFLOW_SERVICE_ACCOUNT}

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
  --role "roles/logging.logWriter"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
  --role "roles/pubsub.publisher"

কর্মপ্রবাহ স্থাপন করুন। পূর্ববর্তী ধাপে তৈরি পরিষেবা অ্যাকাউন্ট ব্যবহার করার জন্য ওয়ার্কফ্লো কনফিগার করা হয়েছে:

export WORKFLOW_NAME=rewardsWorkflow

gcloud workflows deploy ${WORKFLOW_NAME} \
  --source=gkeRewardsWorkflow.yaml \
  --service-account=${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com

কর্মপ্রবাহের উৎস এবং অন্যান্য বিবরণ পর্যালোচনা করুন (ট্রিগার ট্যাব)। এই ওয়ার্কফ্লো চালানোর জন্য এই মুহূর্তে কোন ট্রিগার কনফিগার করা নেই। আপনি পরবর্তী ধাপে এটি সেট আপ করবেন।

66ba7ebbde76d5a6.png

6. পাব/সাব বিষয় এবং Eventarc ট্রিগার কনফিগার করুন

এরপর আপনি দুটি পাব/সাব বিষয় তৈরি করবেন এবং একটি ইভেন্টর্ক ট্রিগার কনফিগার করবেন।

অর্ডার সার্ভিস অ্যাপ্লিকেশন নতুন অর্ডার সম্পর্কে তথ্য সহ order-topic বার্তা প্রকাশ করবে।

ওয়ার্কফ্লো অর্ডার রিওয়ার্ড পয়েন্ট এবং মোট পরিমাণ সম্পর্কে তথ্য সহ order-points-topic বার্তা প্রকাশ করবে। অর্ডার সার্ভিস (এই ল্যাবের অংশ নিয়োজিত নয়) একটি শেষ পয়েন্ট প্রকাশ করে যা order-points-topic, পুরস্কার পয়েন্ট এবং অর্ডার প্রতি মোট পরিমাণ আপডেট করতে।

নতুন পাব/সাব বিষয় তৈরি করুন:

export TOPIC_ID=order-topic
export ORDER_POINTS_TOPIC_ID=order-points-topic
gcloud pubsub topics create $TOPIC_ID --project=$PROJECT_ID
gcloud pubsub topics create $ORDER_POINTS_TOPIC_ID --project=$PROJECT_ID

Eventarc পরিষেবার জন্য অবস্থান সেট করুন:

gcloud config set eventarc/location ${REGION}

একটি কাস্টম পরিষেবা অ্যাকাউন্ট তৈরি করুন যা কার্যপ্রবাহ চালানোর জন্য Eventarc ট্রিগার দ্বারা ব্যবহৃত হবে।

export TRIGGER_SERVICE_ACCOUNT=eventarc-workflow-sa

gcloud iam service-accounts create ${TRIGGER_SERVICE_ACCOUNT}

ওয়ার্কফ্লো চালানোর জন্য পরিষেবা অ্যাকাউন্টে অ্যাক্সেস মঞ্জুর করুন।

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
  --member="serviceAccount:${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
  --role="roles/workflows.invoker"

Pub/Sub বার্তা শোনার জন্য একটি Eventarc ট্রিগার তৈরি করুন এবং সেগুলিকে Workflows-এ পৌঁছে দিন।

gcloud eventarc triggers create new-orders-trigger \
  --destination-workflow=${WORKFLOW_NAME} \
  --destination-workflow-location=${REGION} \
  --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
  --service-account="${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
  --transport-topic=$TOPIC_ID

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

Creating trigger [new-orders-trigger] in project [qwiklabs-gcp-01-1a990bfcadb3], location [us-east1]...done.     
Publish to Pub/Sub topic [projects/qwiklabs-gcp-01-1a990bfcadb3/topics/order-topic] to receive events in Workflow [rewardsWorkflow].
WARNING: It may take up to 2 minutes for the new trigger to become active.

Eventarc ট্রিগার তৈরি করা পর্যালোচনা.

bda445561ad5f4.png

ট্রিগারের জন্য তৈরি সদস্যতা পর্যালোচনা করুন।

3fccdda7d5526597.png

কর্মপ্রবাহের দিকে পরিবর্তনগুলি পর্যালোচনা করুন। একটি নতুন ট্রিগার যোগ করা হয়েছে.

23d338abc16eaac8.png

7. পরীক্ষা কর্মপ্রবাহ

6c0606022b76f79d.png

অর্ডার পরিষেবা অনুকরণ করতে, আপনি ক্লাউড শেল থেকে পাব/সাব বিষয়ে বার্তা পাঠাবেন এবং ক্লাউড কনসোলে গ্রাহক পরিষেবা লগগুলি যাচাই করবেন৷

export TOPIC_ID=order-topic

gcloud pubsub topics publish $TOPIC_ID --message '{"userId":"id1","orderNumber":123456,"name":"Angela Jensen","email":"ajensen9090+eats@gmail.com","address":"1845 Denise St","city":"Mountain View","state":"CA","zip":"94043","orderItems":[{"id":7,"createDateTime":"2022-03-17T21:51:44.968584","itemImageURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","itemName":"Curry Plate","itemPrice":12.5,"itemThumbnailURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","spiceLevel":0,"status":"Ready","tagLine":"Spicy touch for your taste buds","updateDateTime":"2022-03-18T01:30:29.340584","inventory":8,"quantity":1}]}'

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

messageIds:
- '5063709859203105'

কর্মপ্রবাহ সম্পাদনের বিবরণ এবং লগগুলি পর্যালোচনা করুন৷

1e802826c700cc3e.png

57ff9705bf507fb0.png

8. ওয়ার্কফ্লো স্ট্রাকচার্ড লগিং

JSON ফর্ম্যাটে কাঠামোবদ্ধ লগ লেখার জন্য ওয়ার্কফ্লো কনফিগার করা হয়েছে। লগগুলি ক্লাউড লগিং API, workflows.googleapis.com/Workflow রিসোর্স ব্যবহার করে এবং লগ নামের projects/${PROJECT_ID}/logs/Workflows

নীচে লগিং কনফিগারেশন পর্যালোচনা করুন.

    - log_totalAmount:
        call: sys.log
        args:
            json:
              orderNumber: ${order.orderNumber}
              totalAmount: ${totalAmount}
              multiplier: ${multiplier}
              totalRewardPoints: ${rewardPoints}
              orderRewardPoints: ${orderRewardPoints}
            severity: INFO

ক্লাউড কনসোলে লগ এক্সপ্লোরার খুলুন এবং মোট $2 ডলারের বেশি পরিমাণে প্রক্রিয়াকৃত অর্ডারগুলি খুঁজে পেতে একটি প্রশ্ন চালান৷

অনুসন্ধান ক্যোয়ারী ক্ষেত্র দেখাতে, "ক্যোয়ারী দেখান" এ ক্লিক করুন।

f0a57ff3d10bad2.png

resource.type="workflows.googleapis.com/Workflow" AND 
jsonPayload.totalAmount > 2 AND 
timestamp >= "2023-01-01T00:00:00Z" AND 
timestamp <= "2024-12-31T23:59:59Z"

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

9093f87159f1b928.png

ক্লাউড শেল খুলুন এবং নিচের কমান্ড সহ লগ পড়তে gcloud CLI ব্যবহার করুন।

gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND jsonPayload.totalAmount > 2 AND timestamp >= "2023-01-01T00:00:00Z" AND timestamp <= "2023-12-31T23:59:59Z"' --limit 10 --format="table(jsonPayload.orderNumber,jsonPayload.totalAmount,jsonPayload.orderRewardPoints,jsonPayload.totalRewardPoints,jsonPayload.multiplier)"

table বিন্যাস ব্যবহার করে নমুনা আউটপুট:

35d5fd851ecde60.png

JSON ফর্ম্যাটে লগগুলি ফেরত দিতে নীচের কমান্ডটি চালান:

gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND jsonPayload.totalAmount > 2 AND timestamp >= "2023-01-01T00:00:00Z" AND timestamp <= "2023-12-31T23:59:59Z"' --limit 10 --format=json | jq

json বিন্যাস ব্যবহার করে নমুনা আউটপুট:

ac7421548ea9a9f2.png

9. গ্রাহকের রেকর্ড পর্যালোচনা করুন

(ঐচ্ছিক পদক্ষেপ)

গ্রাহক পরিষেবা URL পরিবেশ পরিবর্তনশীল সেট করতে নীচের কমান্ড চালান।

CUSTOMER_SERVICE_URL=http://$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')

curl $CUSTOMER_SERVICE_URL/customer | jq

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

[
  {
    "address": "1845 Denise St",
    "city": "Mountain View",
    "createDateTime": "2023-01-31T17:22:08.853644",
    "email": "ajensen9090+eats@gmail.com",
    "id": "id1",
    "name": "Angela Jensen",
    "rewardPoints": 4,
    "state": "CA",
    "updateDateTime": "2023-01-31T17:22:09.652117",
    "zip": "94043"
  }
]

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

নতুন অর্ডার বার্তা প্রকাশ করুন:

export TOPIC_ID=order-topic
gcloud pubsub topics publish $TOPIC_ID --message '{"userId":"id1","orderNumber":123456,"name":"Angela Jensen","email":"ajensen9090+eats@gmail.com","address":"1845 Denise St","city":"Mountain View","state":"CA","zip":"94043","orderItems":[{"id":7,"createDateTime":"2022-03-17T21:51:44.968584","itemImageURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","itemName":"Curry Plate","itemPrice":12.5,"itemThumbnailURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","spiceLevel":0,"status":"Ready","tagLine":"Spicy touch for your taste buds","updateDateTime":"2022-03-18T01:30:29.340584","inventory":8,"quantity":1}]}'

গ্রাহক পুরস্কার পয়েন্ট যাচাই করুন:

curl $CUSTOMER_SERVICE_URL/customer | jq

সর্বশেষ লগগুলি পরীক্ষা করতে নীচের কমান্ডটি চালান:

gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND jsonPayload.totalAmount > 2 AND timestamp >= "2023-01-01T00:00:00Z" AND timestamp <= "2023-12-31T23:59:59Z"' --limit 10 --format="table(jsonPayload.orderNumber,jsonPayload.totalAmount,jsonPayload.orderRewardPoints,jsonPayload.totalRewardPoints,jsonPayload.multiplier)"

10. অভিনন্দন!

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

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

  • ওয়ার্কফ্লো ট্রিগার করতে পাব/সাব টপিক এবং ইভেন্টর্ক কীভাবে কনফিগার করবেন
  • GKE Autopilot এ চলমান অ্যাপ্লিকেশনে API কল করতে ওয়ার্কফ্লো কীভাবে কনফিগার করবেন
  • পাব/সাব-এ বার্তা প্রকাশ করতে ওয়ার্কফ্লো কীভাবে কনফিগার করবেন
  • ক্লাউড লগিং এবং জিক্লাউড সিএলআই ব্যবহার করে ওয়ার্কফ্লো স্ট্রাকচার্ড লগগুলি কীভাবে জিজ্ঞাসা করবেন

এরপর কি:

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

পরিষ্কার করুন

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

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

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