Istio के साथ Google Kubernetes Engine में ASP.NET Core ऐप्लिकेशन डिप्लॉय करें (पार्ट 2)

1. खास जानकारी

लैब के पहले हिस्से में, आपने ASP.NET Core ऐप्लिकेशन बनाया, उसे कंटेनर में रखा, और उसे Google Kubernetes Engine (GKE) पर डिप्लॉय किया. साथ ही, आपने उसके ट्रैफ़िक को Istio से मैनेज करने के लिए कॉन्फ़िगर किया.

लैब के इस दूसरे हिस्से में यह मान लिया गया है कि आपके पास पहले से ही Kubernetes क्लस्टर और पहले लैब से ऐप्लिकेशन चल रहा है. आपको पता चलेगा कि Istio, कोड में कम से कम बदलाव करके आपकी सेवाओं को मैनेज करने, उनकी निगरानी करने, और उन्हें सुरक्षित रखने में कैसे मदद कर सकता है. खास तौर पर, Istio की सुविधाओं के बारे में जानें. जैसे, मेट्रिक, ट्रेसिंग, सेवा विज़ुअलाइज़ेशन, डाइनैमिक ट्रैफ़िक मैनेजमेंट, फ़ॉल्ट इंजेक्शन वगैरह.

आपको क्या सीखने को मिलेगा

  • Prometheus की मदद से मेट्रिक को क्वेरी करने का तरीका.
  • Grafana की मदद से मेट्रिक को विज़ुअलाइज़ करने का तरीका.
  • अपनी सेवा का नया वर्शन बनाने का तरीका.
  • किसी सेवा को किसी खास वर्शन पर पिन करने का तरीका.
  • अलग-अलग वर्शन के बीच ट्रैफ़िक को कैसे बांटा जाता है.
  • सेवा से जुड़े कॉल में गड़बड़ियां कैसे डाली जाती हैं.

आपको किन चीज़ों की ज़रूरत होगी

  • कोई ब्राउज़र, जैसे कि Chrome या Firefox

इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?

सिर्फ़ इसे पढ़ें इसे पढ़ें और एक्सरसाइज़ पूरी करें

Google Cloud Platform इस्तेमाल करने के अपने अनुभव को आप क्या रेटिंग देंगे?

शुरुआती स्तर सामान्य स्तर एडवांस लेवल

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेट अप करना

  1. Cloud Console में साइन इन करें. इसके बाद, नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. (अगर आपके पास पहले से Gmail या G Suite खाता नहीं है, तो आपको एक खाता बनाना होगा.)

H_hgylo4zxOllHaAbPKJ7VyqCKPDUnDhkr-BsBIFBsrB6TYSisg6LX-uqmMhh4sXUy_hoa2Qv87C2nFmkg-QAcCiZZp0qtpf6VPaNEEfP_iqt29KVLD-gklBWugQVeOWsFnJmNjHDwdcCPqfBIwNO4R-0fNQLUC4aYXOOZhKhjUnakFLZJGeziw2ikOxGjGkCHDwN5x5kCbPFB8fiOzZnX-GfuzQ8Ox-UU15BwHirkVPR_0RJwl0oXrhqZmMIvZMa_uwHugBJIdx5-bZ6Z8QjgLzVCxk93d6E2bbonzATKA4jFZReoQ-fORxZZLEi5C3D-ubnv6nL-eP-iyh7qAsWyq_nyzzuEoPFD1wFOFZOe4FWhPBJjUDncnTxTImT3Ts9TM54f4nPpsAp52O0y3Cb19IceAEgQ

प्रोजेक्ट आईडी याद रखें. यह सभी Google Cloud प्रोजेक्ट के लिए एक यूनीक नाम होता है. ऊपर दिया गया नाम पहले ही इस्तेमाल किया जा चुका है. इसलिए, यह आपके लिए काम नहीं करेगा. माफ़ करें! इस कोडलैब में इसे बाद में PROJECT_ID के तौर पर दिखाया जाएगा.

  1. इसके बाद, Google Cloud संसाधनों का इस्तेमाल करने के लिए, आपको Cloud Console में बिलिंग चालू करनी होगी.

इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. "सफ़ाई करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें. इसमें आपको संसाधनों को बंद करने का तरीका बताया गया है, ताकि इस ट्यूटोरियल के बाद आपको बिलिंग न करनी पड़े. Google Cloud के नए उपयोगकर्ता, 300 डॉलर का क्रेडिट मुफ़्त में आज़माने के प्रोग्राम के लिए ज़रूरी शर्तें पूरी करते हैं.

Cloud Shell शुरू करें

Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जाता है. यह Google Cloud में चलने वाला कमांड लाइन एनवायरमेंट है.

Cloud Shell चालू करें

  1. Cloud Console में, Cloud Shell चालू करें dnDTxS9j60RcXdTjea12HLB9paS9Gzf7PfFLE9RW8g0Qx1bz7nmCzyCu4rjluX3bOEwavOpDwioXEkzOf6xtZp6-ZbJa08jwJqtmeeW8jZ1tYfi2lyXqvW3WFHP0eAxDkQDfpO9Ljw पर क्लिक करें.

yzBQBp2RC1EFvSSLYVkMA2m6LHqGsp22O81rUS5tGb9Y1FqlVhoRj_ka8V_uEjtpcirZRULMy1IjNr848uYvb9mC9RcGGqeayaLcXFfRwUGeXWChZPtWkHzUshTcqx_wJHis0X8viA

अगर आपने पहले कभी Cloud Shell का इस्तेमाल नहीं किया है, तो आपको एक इंटरमीडिएट स्क्रीन दिखेगी. इसमें Cloud Shell के बारे में जानकारी दी गई होगी. अगर ऐसा है, तो जारी रखें पर क्लिक करें. इसके बाद, आपको यह स्क्रीन कभी नहीं दिखेगी. एक बार दिखने वाली स्क्रीन ऐसी दिखती है:

VgsaqGbKPRiqK24CqAKjSXjepuJT96PmiDqQMcySmWKx8QyW5F3G2D8JH2d08ek-YM77wWKxPvggpOFER8Hbq3aaZipTDU2o0il7A0kS3FXY_NzuujjEqDF1nsbDKkNMThrqcdMGtQ

Cloud Shell से कनेक्ट होने में कुछ ही सेकंड लगेंगे.

7RuYr-LCKzdiE1veTFmL_lYrVxsMZ6-xDoxAnfwPPc5uFA0utmFGejvu81jGmTdbqnqxrytW3KcHT6xrMIRc3bskctnDZC5nJdpqw-LRxu3r35hL4A0BSBTtbtirfh3PKv-eOKt8Rg

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद होते हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है और Google Cloud में चलता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस कोडलैब में ज़्यादातर काम, सिर्फ़ ब्राउज़र या Chromebook की मदद से किया जा सकता है.

Cloud Shell से कनेक्ट होने के बाद, आपको दिखेगा कि आपकी पुष्टि पहले ही हो चुकी है और प्रोजेक्ट को आपके प्रोजेक्ट आईडी पर पहले ही सेट कर दिया गया है.

  1. पुष्टि करें कि आपने Cloud Shell में पुष्टि कर ली है. इसके लिए, यह कमांड चलाएं:
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, दोनों इंस्टॉल हो गए हों और सही तरीके से काम कर रहे हों.

इस समय, आपको लग सकता है कि "Istio का क्या फ़ायदा है?". Istio को अपने ऐप्लिकेशन के ट्रैफ़िक को मैनेज करने की अनुमति देने पर, आपको कई सुविधाएं मिलती हैं. जैसे, मेट्रिक, ट्रेसिंग, डाइनैमिक ट्रैफ़िक मैनेजमेंट, सेवा विज़ुअलाइज़ेशन, फ़ॉल्ट इंजेक्शन वगैरह. इन सुविधाओं के लिए, आपको कोई शुल्क नहीं देना पड़ता.

अगले चरण में, मेट्रिक एक्सप्लोर करना शुरू करें.

4. Grafana और Prometheus की मदद से मेट्रिक

डिफ़ॉल्ट रूप से, Istio कुछ मेट्रिक जनरेट करता है. इन डिफ़ॉल्ट मेट्रिक को क्वेरी करने और विज़ुअलाइज़ करने के लिए, ऐड-ऑन का इस्तेमाल किया जा सकता है.

Prometheus

Prometheus एक ओपन-सोर्स मॉनिटरिंग समाधान है. Istio से जनरेट की गई मेट्रिक के लिए क्वेरी करने के लिए, Prometheus का इस्तेमाल किया जा सकता है. हालांकि, इसके लिए आपको पहले Prometheus ऐड-ऑन इंस्टॉल करना होगा.

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

पुष्टि करें कि Prometheus चल रहा है:

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 यूज़र इंटरफ़ेस (यूआई) के लिए पोर्ट फ़ॉरवर्डिंग की सुविधा सेट अप करें:

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

अब Cloud Shell के सबसे ऊपर दाएं कोने में मौजूद, वेब की झलक देखें बटन पर क्लिक करके क्वेरी चलाई जा सकती है. इसके बाद, पोर्ट 8080 पर झलक देखें पर क्लिक करें:

772a5248aa493025.png

आपको नए टैब में Prometheus का यूज़र इंटरफ़ेस (यूआई) दिखेगा:

272ee63c1fe0be16.png

Prometheus के बारे में ज़्यादा जानने के लिए, Prometheus की मदद से मेट्रिक के लिए क्वेरी करना लेख पढ़ें.

Grafana

Grafana, मेट्रिक को विज़ुअलाइज़ करने के लिए एक और ऐड-ऑन है.

Grafana इंस्टॉल करें. istio-version को Istio के मौजूदा वर्शन से बदलें. उदाहरण के लिए, 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> पर कुछ बार जाकर या curl कमांड चलाकर, ऐप्लिकेशन पर कुछ ट्रैफ़िक भेजें.

Grafana के यूज़र इंटरफ़ेस (यूआई) के लिए पोर्ट फ़ॉरवर्डिंग सेट अप करें:

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.png524cb9f6d66f8655.png

Grafana के बारे में ज़्यादा जानने के लिए, Grafana की मदद से मेट्रिक को विज़ुअलाइज़ करना लेख पढ़ें.

5. ऐप्लिकेशन का नया वर्शन बनाना

किसी समय, प्रोडक्शन में डिप्लॉय किए गए ऐप्लिकेशन में गड़बड़ियां ठीक करने या अतिरिक्त सुविधाएं जोड़ने की ज़रूरत होगी. आइए, देखते हैं कि यह प्रोसेस कैसी दिखती है.

सबसे पहले, ऐप्लिकेशन में बदलाव करते हैं. Cloud Shell से कोड एडिटर खोलें.

mxrggIJ2Zz8E47ULCEo4NywjM-EpSkZF5c3TQgfGx4nODwP2obiQXrwQjEEaXuBhJDA2jJ5evR7TuHIy1gsqqDRFm0Wh3xhZUu9tn_xb1ygFlBm1HKJqLdfz_aK7WJS33u2IBDO2oQ

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

बदलावों को सेव करें और फिर Cloud Shell पर वापस जाएं. HelloWorldAspNetCore,डॉकर इमेज बनाएं:

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

इसके बाद, इसे Container Registry में पुश करें:

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 Core की मदद से वेब ऐप्लिकेशन बनाने के बारे में जानें":

11d528132dbb6cee.png

अन्य मामलों में, आपको यह मैसेज दिखेगा: "Google Cloud पर ASP.NET Core का इस्तेमाल करके वेब ऐप्लिकेशन बनाने के बारे में जानें":

3eb0d5be1b4cb40b.png

ऐसा इसलिए है, क्योंकि v1 और v2, दोनों डिप्लॉयमेंट एक ही Kubernetes सेवा (aspnetcore-service) के पीछे दिखते हैं. साथ ही, पिछले लैब (aspnetcore-virtualservice) में बनाए गए VirtualService में, उस सेवा का इस्तेमाल होस्ट के तौर पर किया जाता है.

अगले चरण में, DestinationRule का इस्तेमाल करके, सेवा को v2 डिप्लॉयमेंट पर पिन किया जाता है.

7. अपनी सेवा को नए वर्शन पर पिन करना

इस चरण में, आपको अपनी सेवा को पिन करना होगा, ताकि v2 डिप्लॉयमेंट का इस्तेमाल किया जा सके. इसके लिए, DestinationRule का इस्तेमाल किया जा सकता है. DestinationRule, नीतियों के उस सेट को कॉन्फ़िगर करता है जिसे VirtualService की राउटिंग कार्रवाई के बाद, किसी अनुरोध पर लागू किया जाना है.

DestinationRule, डेस्टिनेशन होस्ट के उन सबसेट को भी तय करता है जिन्हें पता दिया जा सकता है. इसका मतलब है कि डेस्टिनेशन होस्ट के नाम वाले वर्शन. इन सबसेट का इस्तेमाल, VirtualService के रूट स्पेसिफ़िकेशन में किया जाता है. ऐसा तब किया जाता है, जब सेवा के किसी खास वर्शन पर ट्रैफ़िक भेजा जाता है.

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) बनते हैं, जिनका इस्तेमाल VirtualService से किया जा सकता है:

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

अब aspnetcore-virtualservice.yaml फ़ाइल पर वापस जाएं, ताकि v2 सबसेट का इस्तेमाल करने के लिए VirtualService को अपडेट किया जा सके:

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

VirtualService को अपडेट करें:

kubectl apply -f aspnetcore-virtualservice.yaml

अपना ब्राउज़र खोलें और http://<replace-with-external-ip>. पर जाएं. कई बार रीफ़्रेश करने के बाद भी, आपको यह मैसेज दिखेगा: "Google Cloud पर ASP.NET Core की मदद से वेब ऐप्लिकेशन बनाने के बारे में जानें":

3eb0d5be1b4cb40b.png

8. वर्शन के बीच ट्रैफ़िक को बांटना

कभी-कभी, आपको टेस्टिंग के लिए वर्शन के बीच ट्रैफ़िक बांटना पड़ सकता है. उदाहरण के लिए, हो सकता है कि आपको सेवा के v1 वर्शन पर 75% और v2 वर्शन पर 25% ट्रैफ़िक भेजना हो. Istio की मदद से, इसे आसानी से हासिल किया जा सकता है. अलग-अलग वेटेज वाले दो सबसेट के बारे में जानने के लिए, नई 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

VirtualService को अपडेट करें:

kubectl apply -f aspnetcore-virtualservice-weights.yaml

अब ब्राउज़र को रीफ़्रेश करने पर, आपको v1 और v2 वर्शन, करीब 3:1 के अनुपात में दिखेंगे.

ज़्यादा जानने के लिए, Istio में ट्रैफ़िक स्प्लिटिंग देखें.

9. गड़बड़ियां इंजेक्ट करना

टेस्टिंग के लिए, एक और ज़रूरी डेवलपमेंट टास्क यह है कि ट्रैफ़िक में गड़बड़ियां या देरी डाली जाएं. साथ ही, यह देखा जाए कि सेवाएं इसके जवाब में कैसा व्यवहार करती हैं.

उदाहरण के लिए, हो सकता है कि आपको v1 वर्शन पर आने वाले 50% ट्रैफ़िक के लिए, गलत अनुरोध (एचटीटीपी 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

VirtualService को अपडेट करें:

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

अब ब्राउज़र को रीफ़्रेश करने पर, आपको दिखेगा कि v1 सेवा, आधे समय तक एचटीटीपी 400 रिस्पॉन्स कोड दिखाती है.

इसके अलावा, हो सकता है कि आपको अनुरोधों के बीच पांच सेकंड का इंतज़ार करना हो. नीचे दी गई जानकारी के हिसाब से 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

VirtualService को अपडेट करें:

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

अब ब्राउज़र को रीफ़्रेश करने पर, आपको दिखेगा कि अनुरोधों में पांच सेकंड की देरी हो रही है.

टाइमआउट, फिर से कोशिश करने की सुविधा, शर्तों के हिसाब से नियम, सर्किट ब्रेकर वगैरह जैसी Istio की सुविधाओं के बारे में ज़्यादा जानने के लिए, ट्रैफ़िक मैनेजमेंट की सुविधाएं देखें.

10. बधाई हो!

हमें उम्मीद है कि इस लैब से आपको यह समझने में मदद मिली होगी कि Istio, आपकी सेवाओं के लिए क्या-क्या कर सकता है. Istio और GKE के बारे में ज़्यादा जानने के लिए.

अगले चरण

लाइसेंस

इस काम के लिए, Creative Commons एट्रिब्यूशन 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

यह पुष्टि करने के लिए कि Istio हट गया है:

kubectl get pods -n istio-system

Kubernetes क्लस्टर मिटाना

gcloud container clusters delete hello-dotnet-cluster