Istio সহ Google Kubernetes ইঞ্জিনে ASP.NET কোর অ্যাপ স্থাপন করুন (পর্ব 2)

1. ওভারভিউ

ল্যাবের প্রথম অংশে , আপনি একটি ASP.NET কোর অ্যাপ্লিকেশন তৈরি করেছেন, কন্টেইনারাইজ করেছেন এবং এটিকে Google Kubernetes Engine (GKE) এ স্থাপন করেছেন এবং Istio দ্বারা পরিচালিত হওয়ার জন্য এর ট্র্যাফিক কনফিগার করেছেন।

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

আপনি কি শিখবেন

  • প্রমিথিউসের সাথে মেট্রিক্স কীভাবে জিজ্ঞাসা করবেন।
  • Grafana দিয়ে মেট্রিক্স কিভাবে ভিজ্যুয়ালাইজ করবেন।
  • কীভাবে আপনার পরিষেবার একটি নতুন সংস্করণ তৈরি করবেন।
  • একটি নির্দিষ্ট সংস্করণে একটি পরিষেবা কীভাবে পিন করবেন।
  • কিভাবে বিভিন্ন সংস্করণের মধ্যে ট্রাফিক বিভক্ত.
  • কীভাবে পরিষেবা কলগুলিতে ত্রুটিগুলি ইনজেকশন করবেন।

আপনি কি প্রয়োজন হবে

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

শুধুমাত্র মাধ্যমে এটি পড়ুন এটি পড়ুন এবং ব্যায়াম সম্পূর্ণ করুন

Google ক্লাউড প্ল্যাটফর্মের সাথে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবে?

নবজাতক মধ্যবর্তী দক্ষ

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

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

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

H_hgylo4zxOllHaAbPKJ7VyqCKPDUnDhkr-BsBIFBsrB6TYSisg6LX-uqmMhh4sXUy_hoa2Qv87C2nFmkg-QAcCiZZp0qtpf6VPaNEEfBsrB6VPaNEEfBsrB6VPaNEEfBQDWQLDWQTG

dcCPqfBIwNO4R-0fNQLUC4aYXOOZhKhjUnakFLZJGeziw2ikOxGjGkCHDwN5x5kCbPFB8fiOzZnX-GfuzQ8Ox-UU15BwHirkVPR_0RJwl0uZuZvZQH5-5

jgLzVCxk93d6E2bbonzATKA4jFZReoQ-fORxZZLEi5C3D-ubnv6nL-eP-iyh7qAsWyq_nyzzuEoPFD1wFOFZOe4FWhPBJjUDncnTxTImT3p3f3C519P3C3TX gQ

প্রজেক্ট আইডিটি মনে রাখবেন, সমস্ত Google ক্লাউড প্রকল্প জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে নেওয়া হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এটি পরে এই কোডল্যাবে PROJECT_ID হিসাবে উল্লেখ করা হবে।

  1. এর পরে, Google ক্লাউড সংস্থানগুলি ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে৷

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

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

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

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

  1. ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন ক্লিক করুন dnDTxS9j60RcXdTjea12HLB9paS9Gzf7PfFLE9RW8g0Qx1bz7nmCzyCu4rjluX3bOEw avOpDwioXEkzOf6xtZp6-ZbJa08jwJqtZp6-ZbJa08jwJqtZf3qwDf3Qw8 9Ljw .

yzBQBp2RC1EFvSSLYVkMA2m6LHqGsp22O81rUS5tGb9Y1FqlVhoRj_ka8V_uEjtpcirZRULMy1IjNr848uYvb9mC9RcGGqeayaLcXFfRwZUGXHQHQUGTXWCHXWC8

আপনি যদি আগে কখনও ক্লাউড শেল শুরু না করে থাকেন, তাহলে আপনাকে একটি মধ্যবর্তী স্ক্রীন (ভাঁজের নীচে) উপস্থাপন করা হবে যা বর্ণনা করে। যদি এটি হয়, তবে চালিয়ে যান ক্লিক করুন (এবং আপনি এটি আর কখনও দেখতে পাবেন না)। এককালীন স্ক্রীনটি দেখতে কেমন তা এখানে রয়েছে:

VgsaqGbKPRiqK24CqAKjSXjepuJT96PmiDqQMcySmWKx8QyW5F3G2D8JH2d08ek-YM77wWKxPvggpOFER8Hbq3aaZipTDU2o0il7A0kS3FXY_Nzudqmgtqdqmgtqmg

ক্লাউড শেলের সাথে সংযোগ করতে এবং সংযোগ করতে এটির মাত্র কয়েক মুহূর্ত লাগবে৷

7RuYr-LCKzdiE1veTFmL_lYrVxsMZ6-xDoxAnfwPPc5uFA0utmFGejvu81jGmTdbqnqxrytW3KcHT6xrMIRc3bskctnDZC5nJdpqw-LRxtnDZC5nJdpqw-LRxAnfwPPc5uFA0utmFGejvu81 8আরজি

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

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

  1. আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list

কমান্ড আউটপুট

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি এটি না হয়, আপনি এই কমান্ড দিয়ে এটি সেট করতে পারেন:

gcloud config set project <PROJECT_ID>

কমান্ড আউটপুট

Updated property [core/project].

3. আবেদন পরীক্ষা করুন

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

kubectl get svc istio-ingressgateway -n istio-system

অ্যাপ্লিকেশন দেখতে, আপনি আপনার ব্রাউজার খুলতে পারেন এবং http://<gatewayurl> -এ নেভিগেট করতে পারেন:

f579a9baedc108a9.png

আপনি যদি অ্যাপ্লিকেশানটি দেখতে না পান, আপনি সমস্ত পদক্ষেপগুলি অনুসরণ করেছেন এবং অ্যাপ্লিকেশন এবং ইস্টিও উভয়ই সঠিকভাবে ইনস্টল এবং চলছে তা নিশ্চিত করতে পূর্ববর্তী ল্যাবে ফিরে যান৷

এই মুহুর্তে, আপনি হয়তো ভাবছেন "ইস্টিওর সুবিধা কী?"। Istio-কে আপনার অ্যাপ্লিকেশানের ট্র্যাফিক পরিচালনা করতে দিয়ে, আপনি বিনামূল্যের জন্য মেট্রিক্স, ট্রেসিং, গতিশীল ট্রাফিক ব্যবস্থাপনা, পরিষেবা ভিজ্যুয়ালাইজেশন, ফল্ট ইনজেকশন এবং আরও অনেক কিছুর মতো বৈশিষ্ট্যগুলি পান৷

আপনি পরবর্তী ধাপে মেট্রিক্স অন্বেষণ দিয়ে শুরু করবেন।

4. গ্রাফানা এবং প্রমিথিউসের সাথে মেট্রিক্স

ডিফল্টরূপে, Istio কিছু মেট্রিক্স তৈরি করে। আপনি এই ডিফল্ট মেট্রিকগুলি অনুসন্ধান করতে এবং কল্পনা করতে অ্যাড-অনগুলি ব্যবহার করতে পারেন৷

প্রমিথিউস

প্রমিথিউস একটি ওপেন সোর্স মনিটরিং সমাধান। আপনি Istio দ্বারা উত্পন্ন মেট্রিক্স জিজ্ঞাসা করতে Prometheus ব্যবহার করতে পারেন তবে আপনাকে প্রথমে Prometheus অ্যাড-অন ইনস্টল করতে হবে।

kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.8/samples/addons/prometheus.yaml

যাচাই করুন যে প্রমিথিউস চলছে:

kubectl get svc prometheus -n istio-system

NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
prometheus   ClusterIP   10.31.243.62   <none>        9090/TCP   1d

কয়েকবার http://<gatewayurl> ভিজিট করে বা কার্ল কমান্ড চালিয়ে অ্যাপ্লিকেশনটিতে কিছু ট্র্যাফিক পাঠান।

Prometheus UI এর জন্য সেটআপ পোর্ট ফরওয়ার্ডিং:

kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=prometheus -o jsonpath='{.items[0].metadata.name}') 8080:9090

আপনি এখন ক্লাউড শেলের উপরের-ডান কোণে ওয়েব প্রিভিউ বোতামে ক্লিক করে এবং পোর্ট 8080-এ প্রিভিউ ক্লিক করে একটি ক্যোয়ারী চালাতে পারেন:

772a5248aa493025.png

আপনি একটি নতুন ট্যাবে প্রমিথিউস UI দেখতে পাবেন:

272ee63c1fe0be16.png

প্রমিথিউস সম্পর্কে আরও জানতে, প্রমিথিউসের সাথে মেট্রিক্স জিজ্ঞাসা করা দেখুন।

গ্রাফনা

গ্রাফানা হল মেট্রিক্স ভিজ্যুয়ালাইজ করার জন্য আরেকটি অ্যাড-অন।

Grafana ইনস্টল করুন। আপনার বর্তমান Istio সংস্করণ দিয়ে istio-version প্রতিস্থাপন করুন, উদাহরণস্বরূপ, 1.0.3-gke.3 :

kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.8/samples/addons/grafana.yaml

যাচাই করুন যে Grafana চলছে:

kubectl get svc grafana -n istio-system

NAME      TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
grafana   ClusterIP   10.31.248.230   <none>        3000/TCP   1d

কয়েকবার http://<gatewayurl> ভিজিট করে বা কার্ল কমান্ড চালিয়ে অ্যাপ্লিকেশনটিতে কিছু ট্র্যাফিক পাঠান।

Grafana UI এর জন্য সেটআপ পোর্ট ফরওয়ার্ডিং:

kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=grafana -o jsonpath='{.items[0].metadata.name}') 8080:3000

আপনি ওয়েব প্রিভিউতে গিয়ে Grafana ড্যাশবোর্ড দেখতে পারেন:

806d696d85267a37.png

524cb9f6d66f8655.png

Granfana সম্পর্কে আরও জানতে, Grafana এর সাথে মেট্রিক্স ভিজ্যুয়ালাইজ করুন দেখুন।

5. অ্যাপ্লিকেশনটির একটি নতুন সংস্করণ তৈরি করুন৷

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

প্রথমত, এর অ্যাপ্লিকেশন পরিবর্তন করা যাক. ক্লাউড শেল থেকে কোড এডিটর খুলুন।

mxrggIJ2Zz8E47ULCEo4NywjM-EpSkZF5c3TQgfGx4nODwP2obiQXrwQjEEaXuBhJDA2jJ5evR7TuHIy1gsqqDRFm0Wh3xhZUu9tn_xb1ygf5c3TQgfGx3 2oQ

HelloWorldAspNetCore > Views > Home এর অধীনে Index.cshtml এ নেভিগেট করুন এবং ক্যারোজেল বার্তাগুলির একটি আপডেট করুন।

নিম্নলিখিত লাইন খুঁজুন:

Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core 

এবং এটিতে এটি পরিবর্তন করুন:

Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core on Google Cloud

পরিবর্তনগুলি সংরক্ষণ করুন এবং তারপরে ক্লাউড শেলে ফিরে যান। HelloWorldAspNetCore, ডকার ইমেজ তৈরি করুন:

docker build -t gcr.io/${GOOGLE_CLOUD_PROJECT}/hello-dotnet:v2 . 

এবং কন্টেইনার রেজিস্ট্রিতে চাপ দিন:

docker push gcr.io/${GOOGLE_CLOUD_PROJECT}/hello-dotnet:v2 

আপনি ধারক চিত্রটি পুশ করার পরে, আপনি পরবর্তী ধাপে নতুন সংস্করণ স্থাপন করতে পারেন।

6. নতুন স্থাপনা তৈরি করুন

নতুন সংস্করণ স্থাপন করতে, আপনাকে প্রথমে এটির জন্য Kubernetes-এ একটি নতুন স্থাপনা তৈরি করতে হবে। aspnetcore.yaml ফাইলের শেষে নিম্নলিখিত যোগ করুন:

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: aspnetcore-v2
spec:
  replicas: 1
  selector:
    matchLabels:
      app: aspnetcore
      version: v2
  template:
    metadata:
      labels:
        app: aspnetcore
        version: v2
    spec:
      containers:
      - name: aspnetcore
        image: gcr.io/YOUR-PROJECT-ID/hello-dotnet:v2
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080

kubectl দিয়ে ডিফল্ট নামস্থানে নতুন সংস্করণ স্থাপন করুন:

kubectl apply -f aspnetcore.yaml
service "aspnetcore" unchanged
deployment.extensions "aspnetcore-v1" unchanged
deployment.extensions "aspnetcore-v2" created

যাচাই করুন যে প্রত্যাশিত পড চলছে:

kubectl get pods
NAME                          READY     STATUS    RESTARTS   AGE
aspnetcore-v1-6cf64748-mddb   2/2       Running   0          34s
aspnetcore-v2-5d765db-l9xmg   2/2       Running   0          1m

এখন, আবেদনটি আবার পরীক্ষা করুন। গেটওয়ের বাহ্যিক আইপি পান:

kubectl get svc istio-ingressgateway -n istio-system

এটি EXTERNAL-IP এর অধীনে তালিকাভুক্ত। একটি ছদ্মবেশী ব্রাউজার খুলুন এবং http://<replace-with-external-ip> এ যান

আপনি যখন রিফ্রেশ করবেন, মাঝে মাঝে, আপনি "ASP.NET কোর দিয়ে ওয়েব অ্যাপস তৈরি করার বিষয়ে জানুন" বার্তাটি দেখতে পাবেন:

11d528132dbb6cee.png

অন্য সময়ে, আপনি "Google ক্লাউডে ASP.NET কোর দিয়ে ওয়েব অ্যাপ তৈরি করার বিষয়ে জানুন" বার্তাটি দেখতে পাবেন:

3eb0d5be1b4cb40b.png

এর কারণ হল v1 এবং v2 উভয় স্থাপনাই একই Kubernetes পরিষেবার পিছনে উন্মোচিত হয় ( aspnetcore-service ) এবং আপনার পূর্ববর্তী ল্যাবে ( aspnetcore-virtualservice ) তৈরি করা VirtualService হোস্ট হিসাবে সেই পরিষেবাটি ব্যবহার করে৷

পরবর্তী ধাপে, আপনি একটি DestinationRule ব্যবহার করে v2 স্থাপনায় পরিষেবাটি পিন করুন।

7. নতুন সংস্করণে আপনার পরিষেবা পিন করুন৷

এই ধাপে, আপনি v2 ডিপ্লয়মেন্ট ব্যবহার করতে আপনার পরিষেবা পিন করুন এবং আপনি এটি একটি DestinationRule দিয়ে করতে পারেন। একটি DestinationRule একটি VirtualService রাউটিং অপারেশন হওয়ার পরে একটি অনুরোধে প্রয়োগ করার জন্য নীতিগুলির সেট কনফিগার করে৷

একটি DestinationRule সংশ্লিষ্ট গন্তব্য হোস্টের ঠিকানাযোগ্য উপসেটগুলিকেও সংজ্ঞায়িত করে, যার অর্থ নামকৃত সংস্করণ। পরিষেবার নির্দিষ্ট সংস্করণে ট্রাফিক পাঠানোর সময় এই উপসেটগুলি ভার্চুয়াল সার্ভিস রুট স্পেসিফিকেশনে ব্যবহার করা হয়।

aspnetcore-destinationrule.yaml নামে একটি নতুন ফাইল তৈরি করুন:

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: aspnetcore-destinationrule
spec:
  host: aspnetcore-service
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2

এরপরে, DestinationRule তৈরি করুন। এটি দুটি উপসেট (v1 এবং v2) তৈরি করে যা আপনি ভার্চুয়াল সার্ভিস থেকে ব্যবহার করতে পারেন:

kubectl apply -f aspnetcore-destinationrule.yaml
destinationrule.networking.istio.io "aspnetcore-destionationrule" created

এখন, v2 উপসেট ব্যবহার করতে VirtualService আপডেট করতে aspnetcore-virtualservice.yaml ফাইলে ফিরে যান:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: aspnetcore-virtualservice
spec:
  hosts:
  - "*"
  gateways:
  - aspnetcore-gateway
  http:
  - route:
    - destination:
        host: aspnetcore-service
        subset: v2

ভার্চুয়াল সার্ভিস আপডেট করুন:

kubectl apply -f aspnetcore-virtualservice.yaml

আপনার ব্রাউজার খুলুন এবং http://<replace-with-external-ip>. এমনকি একাধিক রিফ্রেশ করার পরেও, আপনি "Google ক্লাউডে ASP.NET কোরের সাথে ওয়েব অ্যাপস তৈরি করার বিষয়ে জানুন" বার্তাটি দেখতে পাবেন:

3eb0d5be1b4cb40b.png

8. সংস্করণগুলির মধ্যে ট্র্যাফিক বিভক্ত করুন

কখনও কখনও, আপনি পরীক্ষার জন্য সংস্করণগুলির মধ্যে ট্র্যাফিক বিভক্ত করতে চাইতে পারেন। উদাহরণস্বরূপ, আপনি ট্রাফিকের 75% v1 এবং 25% ট্রাফিক পরিষেবার v2 সংস্করণে পাঠাতে চাইতে পারেন। আপনি সহজেই ইস্টিও দিয়ে এটি অর্জন করতে পারেন। একটি নতুন aspnetcore-virtualservice-weights.yaml ফাইল তৈরি করুন বিভিন্ন ওজন সহ দুটি উপসেট উল্লেখ করতে:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: aspnetcore-virtualservice
spec:
  hosts:
  - "*"
  gateways:
  - aspnetcore-gateway
  http:
  - route:
    - destination:
        host: aspnetcore-service
        subset: v1
      weight: 75
    - destination:
        host: aspnetcore-service
        subset: v2
      weight: 25

ভার্চুয়াল সার্ভিস আপডেট করুন:

kubectl apply -f aspnetcore-virtualservice-weights.yaml

এখন, আপনি যখন ব্রাউজারটি রিফ্রেশ করবেন, তখন আপনি দেখতে পাবেন যে v1 বনাম v2 সংস্করণগুলি মোটামুটি 3:1 অনুপাতের সাথে পরিবেশন করা হয়েছে।

আরও জানতে, ইস্টিওতে ট্রাফিক বিভাজন দেখুন।

9. ইনজেকশন ত্রুটি

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

উদাহরণস্বরূপ, আপনি v1 সংস্করণে ট্রাফিকের 50% জন্য একটি খারাপ অনুরোধ (HTTP 400) প্রতিক্রিয়া ফেরত দিতে চাইতে পারেন। নিম্নলিখিতগুলির সাথে মেলে aspnetcore-virtualservice-fault-abort.yaml ফাইল তৈরি করুন:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: aspnetcore-virtualservice
spec:
  hosts:
  - "*"
  gateways:
  - aspnetcore-gateway
  http:
  - fault:
      abort:
        percentage:
          value: 50
        httpStatus: 400
    route:
    - destination:
        host: aspnetcore-service
        subset: v1

ভার্চুয়াল সার্ভিস আপডেট করুন:

kubectl apply -f aspnetcore-virtualservice-fault-abort.yaml

এখন, আপনি যখন ব্রাউজার রিফ্রেশ করবেন, তখন আপনার দেখতে হবে যে অর্ধেক সময়, v1 পরিষেবাটি একটি HTTP 400s প্রতিক্রিয়া কোড প্রদান করে।

অথবা আপনি অনুরোধে 5 সেকেন্ড বিলম্ব যোগ করতে চান। নিম্নলিখিতগুলির সাথে মেলে aspnetcore-virtualservice-fault-delay.yaml ফাইল তৈরি করুন:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: aspnetcore-virtualservice
spec:
  hosts:
  - "*"
  gateways:
  - aspnetcore-gateway
  http:
  - fault:
      delay:
        fixedDelay: 5s
        percentage:
          value: 100
    route:
    - destination:
        host: aspnetcore-service
        subset: v1

ভার্চুয়াল সার্ভিস আপডেট করুন:

kubectl apply -f aspnetcore-virtualservice-fault-delay.yaml

এখন, আপনি যখন ব্রাউজার রিফ্রেশ করবেন, আপনি দেখতে পাবেন যে অনুরোধগুলি 5 সেকেন্ডের জন্য বিলম্বিত হয়েছে।

Istio বৈশিষ্ট্যগুলি যেমন টাইমআউট, পুনরায় চেষ্টা, শর্তসাপেক্ষ নিয়ম, সার্কিট ব্রেকার এবং আরও অনেক কিছু সম্পর্কে আরও জানতে, ট্রাফিক ব্যবস্থাপনা বৈশিষ্ট্যগুলি দেখুন৷

10. অভিনন্দন!

আশা করি, এই ল্যাবটি আপনাকে বাক্সের বাইরে আপনার পরিষেবার জন্য Istio কী করতে পারে তার একটি ওভারভিউ দিয়েছে। Istio এবং GKE সম্পর্কে আরও জানতে।

পরবর্তী পদক্ষেপ

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন 2.0 জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।

11. পরিষ্কার করা

আপনি অ্যাপটি মুছে ফেলতে পারেন এবং Istio আনইনস্টল করতে পারেন অথবা আপনি কেবল Kubernetes ক্লাস্টার মুছে দিতে পারেন।

অ্যাপ্লিকেশনটি মুছুন

অ্যাপ্লিকেশন মুছে ফেলার জন্য:

kubectl delete -f aspnetcore-gateway.yaml
kubectl delete -f aspnetcore-virtualservice.yaml
kubectl delete -f aspnetcore-destinationrule.yaml
kubectl delete -f aspnetcore.yaml

আবেদনটি চলে গেছে তা নিশ্চিত করতে:

kubectl get gateway 
kubectl get virtualservices
kubectl get destinationrule
kubectl get pods

Istio আনইনস্টল করুন

Istio মুছে ফেলতে:

kubectl delete -f install/kubernetes/istio-demo-auth.yaml

ইস্টিও চলে গেছে তা নিশ্চিত করতে:

kubectl get pods -n istio-system

Kubernetes ক্লাস্টার মুছুন

gcloud container clusters delete hello-dotnet-cluster