ทำให้แอป ASP.NET Core ใช้งานได้กับ Google Kubernetes Engine ด้วย Istio (ส่วนที่ 2)

1. ภาพรวม

ในส่วนแรกของแล็บ คุณได้สร้างแอปพลิเคชัน ASP.NET Core สร้างคอนเทนเนอร์ และนำไปใช้งานใน Google Kubernetes Engine (GKE) รวมถึงกำหนดค่าให้ Istio จัดการการรับส่งข้อมูล

ห้องทดลองส่วนที่ 2 นี้ถือว่าคุณมีคลัสเตอร์ Kubernetes และแอปพลิเคชันจากห้องทดลองแรกที่กำลังทำงานอยู่แล้ว คุณจะเห็นว่า Istio ช่วยจัดการ ตรวจสอบ และรักษาความปลอดภัยบริการของคุณได้อย่างไรโดยมีการเปลี่ยนแปลงโค้ดน้อยที่สุด โดยเฉพาะอย่างยิ่ง คุณจะได้สำรวจฟีเจอร์ต่างๆ ของ Istio เช่น เมตริก การติดตามภาพ การแสดงภาพบริการ การจัดการการรับส่งข้อมูลแบบไดนามิก การแทรกข้อบกพร่อง และอื่นๆ

สิ่งที่คุณจะได้เรียนรู้

  • วิธีค้นหาเมตริกด้วย Prometheus
  • วิธีแสดงภาพเมตริกด้วย Grafana
  • วิธีสร้างบริการเวอร์ชันใหม่
  • วิธีปักหมุดบริการเป็นเวอร์ชันที่เฉพาะเจาะจง
  • วิธีแยกการรับส่งข้อมูลระหว่างเวอร์ชันต่างๆ
  • วิธีแทรกข้อบกพร่องในการเรียกใช้บริการ

สิ่งที่คุณต้องมี

  • เบราว์เซอร์ เช่น Chrome หรือ Firefox

คุณจะใช้บทแนะนำนี้อย่างไร

อ่านอย่างเดียว อ่านและทำแบบฝึกหัด

คุณจะให้คะแนนประสบการณ์การใช้งาน Google Cloud Platform เท่าไร

ผู้ฝึกหัด ขั้นกลาง ผู้ชำนาญ

2. การตั้งค่าและข้อกำหนด

การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง

  1. ลงชื่อเข้าใช้ Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ (หากยังไม่มีบัญชี Gmail หรือ G Suite คุณต้องสร้างบัญชี)

H_hgylo4zxOllHaAbPKJ7VyqCKPDUnDhkr-BsBIFBsrB6TYSisg6LX-uqmMhh4sXUy_hoa2Qv87C2nFmkg-QAcCiZZp0qtpf6VPaNEEfP_iqt29KVLD-gklBWugQVeOWsFnJmNjHDw

dcCPqfBIwNO4R-0fNQLUC4aYXOOZhKhjUnakFLZJGeziw2ikOxGjGkCHDwN5x5kCbPFB8fiOzZnX-GfuzQ8Ox-UU15BwHirkVPR_0RJwl0oXrhqZmMIvZMa_uwHugBJIdx5-bZ6Z8Q

jgLzVCxk93d6E2bbonzATKA4jFZReoQ-fORxZZLEi5C3D-ubnv6nL-eP-iyh7qAsWyq_nyzzuEoPFD1wFOFZOe4FWhPBJjUDncnTxTImT3Ts9TM54f4nPpsAp52O0y3Cb19IceAEgQ

โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนมีผู้ใช้แล้วและจะใช้ไม่ได้ ขออภัย) ซึ่งจะเรียกว่า PROJECT_ID ในภายหลังใน Codelab นี้

  1. จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud

การทำตาม Codelab นี้ไม่ควรมีค่าใช้จ่ายมากนัก หรืออาจไม่มีเลย โปรดทำตามวิธีการในส่วน "การล้างข้อมูล" ซึ่งจะแนะนำวิธีปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD

เริ่มต้น Cloud Shell

แม้ว่าคุณจะใช้งาน Google Cloud จากระยะไกลจากแล็ปท็อปได้ แต่ใน Codelab นี้ คุณจะใช้ 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 GB และทำงานใน 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. ทดสอบแอปพลิเคชัน

ก่อนเริ่มแล็บ โปรดตรวจสอบว่าแอปพลิเคชันยังคงทำงานได้จากแล็บก่อนหน้า เราขอแจ้งให้ทราบว่าคุณจะเห็น IP และพอร์ตภายนอกของเกตเวย์ได้ดังนี้ ซึ่งจะแสดงอยู่ในส่วน EXTERNAL-IP

kubectl get svc istio-ingressgateway -n istio-system

หากต้องการดูแอปพลิเคชัน ให้เปิดเบราว์เซอร์แล้วไปที่ http://<gatewayurl>

f579a9baedc108a9.png

หากไม่เห็นแอปพลิเคชัน ให้กลับไปที่แล็บก่อนหน้าเพื่อให้แน่ใจว่าคุณได้ทำตามขั้นตอนทั้งหมดแล้ว และทั้งแอปพลิเคชันและ Istio ได้รับการติดตั้งและทำงานอย่างถูกต้อง

ตอนนี้คุณอาจสงสัยว่า "Istio มีประโยชน์อย่างไร" การอนุญาตให้ Istio จัดการการรับส่งข้อมูลของแอปพลิเคชันจะทำให้คุณได้รับฟีเจอร์ต่างๆ เช่น เมตริก การติดตาม การจัดการการรับส่งข้อมูลแบบไดนามิก การแสดงภาพบริการ การแทรกข้อบกพร่อง และอื่นๆ โดยไม่มีค่าใช้จ่าย

คุณจะเริ่มสำรวจเมตริกในขั้นตอนถัดไป

4. เมตริกด้วย Grafana และ Prometheus

โดยค่าเริ่มต้น Istio จะสร้างเมตริกบางรายการ คุณสามารถใช้ส่วนเสริมเพื่อค้นหาและแสดงภาพเมตริกเริ่มต้นเหล่านี้ได้

Prometheus

Prometheus เป็นโซลูชันการตรวจสอบแบบโอเพนซอร์ส คุณใช้ Prometheus เพื่อค้นหาเมตริกที่ Istio สร้างขึ้นได้ แต่ต้องติดตั้งส่วนเสริม 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> 2-3 ครั้งหรือเรียกใช้คำสั่ง curl

ตั้งค่าการส่งต่อพอร์ตสำหรับ UI ของ 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

คุณจะเห็น UI ของ 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> 2-3 ครั้งหรือเรียกใช้คำสั่ง curl

ตั้งค่าการส่งต่อพอร์ตสำหรับ UI ของ 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.png

524cb9f6d66f8655.png

ดูข้อมูลเพิ่มเติมเกี่ยวกับ Grafana ได้ที่การแสดงภาพเมตริกด้วย Grafana

5. สร้างแอปพลิเคชันเวอร์ชันใหม่

ในบางครั้ง แอปพลิเคชันที่คุณติดตั้งใช้งานในเวอร์ชันที่ใช้งานจริงจะต้องมีการแก้ไขข้อบกพร่องหรือเพิ่มฟีเจอร์ มาดูกันว่ากระบวนการนี้เป็นอย่างไร

ก่อนอื่น มาแก้ไขแอปพลิเคชันกัน เปิดตัวแก้ไขโค้ดจาก Cloud Shell

mxrggIJ2Zz8E47ULCEo4NywjM-EpSkZF5c3TQgfGx4nODwP2obiQXrwQjEEaXuBhJDA2jJ5evR7TuHIy1gsqqDRFm0Wh3xhZUu9tn_xb1ygFlBm1HKJqLdfz_aK7WJS33u2IBDO2oQ

ไปที่ Index.cshtml ในส่วน HelloWorldAspNetCore > Views > Home แล้วอัปเดตข้อความภาพสไลด์

ค้นหาบรรทัดต่อไปนี้

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 โดยใช้คำสั่งต่อไปนี้

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

ตอนนี้ให้ทดสอบแอปพลิเคชันอีกครั้ง รับ IP ภายนอกของเกตเวย์

kubectl get svc istio-ingressgateway -n istio-system

โดยจะแสดงในส่วน EXTERNAL-IP เปิดเบราว์เซอร์ไม่ระบุตัวตน แล้วไปที่ http://<replace-with-external-ip>

เมื่อรีเฟรช บางครั้งคุณจะเห็นข้อความ "ดูข้อมูลเกี่ยวกับการสร้างเว็บแอปด้วย ASP.NET Core"

11d528132dbb6cee.png

ในบางครั้ง คุณจะเห็นข้อความ "ดูข้อมูลเกี่ยวกับการสร้างเว็บแอปด้วย ASP.NET Core ใน Google Cloud"

3eb0d5be1b4cb40b.png

เนื่องจากการติดตั้งใช้งานทั้ง v1 และ v2 จะแสดงอยู่เบื้องหลังบริการ Kubernetes เดียวกัน (aspnetcore-service) และ VirtualService ที่คุณสร้างขึ้นใน Lab ก่อนหน้า (aspnetcore-virtualservice) จะใช้บริการดังกล่าวเป็นโฮสต์

ในขั้นตอนถัดไป คุณจะปักหมุดบริการไปยังv2การติดตั้งใช้งานโดยใช้ DestinationRule

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 ซึ่งจะสร้าง 2 เซ็ตย่อย (v1 และ v2) ที่คุณใช้ได้จาก VirtualService

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

ตอนนี้ ให้กลับไปที่ไฟล์ aspnetcore-virtualservice.yaml เพื่ออัปเดต VirtualService ให้ใช้v2 Subset

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>. หลังจากรีเฟรชหลายครั้ง คุณควรเห็นข้อความ "ดูข้อมูลเกี่ยวกับการสร้างเว็บแอปด้วย ASP.NET Core ใน Google Cloud"

3eb0d5be1b4cb40b.png

8. แยกการรับส่งข้อมูลระหว่างเวอร์ชัน

บางครั้งคุณอาจต้องการแยกการเข้าชมระหว่างเวอร์ชันเพื่อทำการทดสอบ เช่น คุณอาจต้องการส่งการเข้าชม 75% ไปยังบริการเวอร์ชัน v1 และส่งการเข้าชม 25% ไปยังบริการเวอร์ชัน v2 คุณทำเช่นนี้ได้ง่ายๆ ด้วย Istio สร้างไฟล์ aspnetcore-virtualservice-weights.yaml ใหม่เพื่ออ้างอิงถึง 2 เซ็ตย่อยที่มีน้ำหนักต่างกัน

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. แทรกข้อบกพร่อง

งานการพัฒนาที่มีประโยชน์อีกอย่างที่ควรทำเพื่อการทดสอบคือการแทรกข้อบกพร่องหรือความล่าช้าในการรับส่งข้อมูล และดูว่าบริการตอบสนองอย่างไร

เช่น คุณอาจต้องการส่งคืนการตอบสนองคำขอที่ไม่ถูกต้อง (HTTP 400) สำหรับการเข้าชม 50% ไปยังเวอร์ชัน v1 สร้างไฟล์ 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 ส่งโค้ดการตอบกลับ HTTP 400

หรืออาจต้องการเพิ่มความล่าช้า 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

อัปเดต VirtualService โดยทำดังนี้

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

ตอนนี้เมื่อรีเฟรชเบราว์เซอร์ คุณจะเห็นว่าคำขอจะล่าช้า 5 วินาที

ดูข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์ Istio เช่น การหมดเวลา การลองใหม่ กฎแบบมีเงื่อนไข เซอร์กิตเบรกเกอร์ และอื่นๆ ได้ที่ฟีเจอร์การจัดการการรับส่งข้อมูล

10. ยินดีด้วย

หวังว่า Lab นี้จะช่วยให้คุณเห็นภาพรวมของสิ่งที่ Istio ทำได้สำหรับบริการของคุณโดยไม่ต้องปรับแต่ง ดูข้อมูลเพิ่มเติมเกี่ยวกับ Istio และ GKE

ขั้นตอนถัดไป

  • ดูข้อมูลเพิ่มเติมเกี่ยวกับ Istio
  • ดูข้อมูลเพิ่มเติมเกี่ยวกับ Kubernetes
  • ดูข้อมูลเพิ่มเติมเกี่ยวกับ Google Kubernetes Engine
  • ดูข้อมูลเพิ่มเติมเกี่ยวกับ .NET ใน Google Cloud Platform

ใบอนุญาต

ผลงานนี้ได้รับอนุญาตภายใต้สัญญาอนุญาตครีเอทีฟคอมมอนส์สำหรับยอมรับสิทธิของผู้สร้าง (Creative Commons Attribution License) 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