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

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