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

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

เกี่ยวกับ Codelab นี้

subjectอัปเดตล่าสุดเมื่อ ธ.ค. 14, 2020
account_circleเขียนโดย Mete Atamel

1 ภาพรวม

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

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

  • วิธีค้นหาเมตริกด้วย 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 ทั้งหมด (ชื่อด้านบนมีคนใช้แล้ว และจะใช้ไม่ได้ ขออภัย) และจะมีการอ้างอิงใน Codelab ว่า PROJECT_ID ในภายหลัง

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

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

เริ่มต้น Cloud Shell

แม้ว่าคุณจะดำเนินการ Google Cloud จากระยะไกลได้จากแล็ปท็อป แต่ใน Codelab นี้ คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานใน Google Cloud

เปิดใช้งาน Cloud Shell

  1. คลิกเปิดใช้งาน Cloud Shell dnDTxS9j60RcXdTjea12HLB9paS9Gzf7PfFLE9RW8g0Qx1bz7nmCzyCu4rjluX3bOEwavOpDwioXEkzOf6xtZp6-ZbJa08jwJqtmeeW8jZ1tYfi2lyXqvW3WFHP0eAxDkQDfpO9Ljw จาก Cloud Console

yzBQBp2RC1EFvSSLYVkMA2m6LHqGsp22O81rUS5tGb9Y1FqlVhoRj_ka8V_uEjtpcirZRULMy1IjNr848uYvb9mC9RcGGqeayaLcXFfRwUGeXWChZPtWkHzUshTcqx_wJHis0X8viA

หากคุณไม่เคยเริ่มต้นใช้งาน Cloud Shell มาก่อน คุณจะเห็นหน้าจอตรงกลาง (ครึ่งหน้าล่าง) ซึ่งอธิบายว่านี่คืออะไร หากเป็นเช่นนั้น ให้คลิกดำเนินการต่อ (คุณจะไม่เห็นการดำเนินการนี้อีก) หน้าจอแบบครั้งเดียวมีลักษณะดังนี้

VgsaqGbKPRiqK24CqAKjSXjepuJT96PmiDqQMcySmWKx8QyW5F3G2D8JH2d08ek-YM77wWKxPvggpOFER8Hbq3aaZipTDU2o0il7A0kS3FXY_NzuujjEqDF1nsbDKkNMThrqcdMGtQ

การจัดสรรและเชื่อมต่อกับ Cloud Shell ใช้เวลาเพียงไม่กี่นาที

7RuYr-LCKzdiE1veTFmL_lYrVxsMZ6-xDoxAnfwPPc5uFA0utmFGejvu81jGmTdbqnqxrytW3KcHT6xrMIRc3bskctnDZC5nJdpqw-LRxu3r35hL4A0BSBTtbtirfh3PKv-eOKt8Rg

เครื่องเสมือนนี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่ทำงานอย่างต่อเนื่องใน Google Cloud ซึ่งจะช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก งานส่วนใหญ่ใน Codelab นี้สามารถทำได้โดยใช้เบราว์เซอร์หรือ 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 จัดการการรับส่งข้อมูลของแอปพลิเคชัน คุณจะได้รับฟีเจอร์ต่างๆ เช่น เมตริก การติดตาม การจัดการการรับส่งข้อมูลแบบไดนามิก การแสดงข้อมูลผ่านภาพบริการ Fault Injection และอื่นๆ โดยไม่เสียค่าใช้จ่าย

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

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

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

ตอนนี้คุณเรียกใช้การค้นหาได้โดยคลิกปุ่มตัวอย่างเว็บที่มุมขวาบนของ 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

ตั้งค่าการส่งต่อพอร์ตสำหรับ 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 สร้างแอปพลิเคชันเวอร์ชันใหม่

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

ก่อนอื่น มาแก้ไขแอปพลิเคชันกัน เปิดตัวแก้ไขโค้ดจาก 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 ที่คุณสร้างในห้องทดลองก่อนหน้า (aspnetcore-virtualservice) ใช้บริการนั้นเป็นโฮสต์

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

7 ปักหมุดบริการเป็นเวอร์ชันใหม่

ในขั้นตอนนี้ คุณจะต้องปักหมุดบริการเพื่อใช้การทําให้ v2 ใช้งานได้ และทําได้ด้วย DestinationRule ปลายทางกฎจะกำหนดค่าชุดนโยบายที่จะใช้กับคำขอหลังจากมีการดำเนินการกำหนดเส้นทาง VirtualService

นอกจากนี้ กฎปลายทางยังจะกำหนดชุดย่อยที่ระบุที่อยู่ได้ (ซึ่งก็คือเวอร์ชันที่มีชื่อ) ของโฮสต์ปลายทางที่เกี่ยวข้อง ชุดย่อยเหล่านี้จะใช้ในข้อมูลจำเพาะของเส้นทาง 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

จากนั้นสร้างกฎปลายทาง การดำเนินการนี้จะสร้างชุดย่อย 2 ชุด (v1 และ v2) ที่คุณใช้จาก VirtualService ได้

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

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

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 ยินดีด้วย

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

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

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

ใบอนุญาต

ผลงานนี้ได้รับอนุญาตภายใต้ใบอนุญาตทั่วไปครีเอทีฟคอมมอนส์แบบระบุแหล่งที่มา 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