1. ภาพรวม
ASP.NET Core เป็นเฟรมเวิร์กแบบโอเพนซอร์สและข้ามแพลตฟอร์มสำหรับสร้างแอปพลิเคชันที่ทันสมัยซึ่งทำงานบนระบบคลาวด์และเชื่อมต่ออินเทอร์เน็ตโดยใช้ภาษาโปรแกรม C#
Kubernetes คือระบบโอเพนซอร์สสำหรับการทำให้การติดตั้งใช้งาน การปรับขนาด และการจัดการแอปพลิเคชันที่มีคอนเทนเนอร์เป็นไปโดยอัตโนมัติ Istio เป็นเฟรมเวิร์กแบบเปิดสำหรับการเชื่อมต่อ การรักษาความปลอดภัย การจัดการ และการตรวจสอบบริการ
ในส่วนแรกของแล็บนี้ คุณจะทำให้แอป ASP.NET Core แบบง่ายใช้งานได้ใน Kubernetes ที่ทำงานบน Google Kubernetes Engine (GKE) และกำหนดค่าให้ Istio จัดการ
ในส่วนที่ 2 ของแล็บ คุณจะได้สำรวจฟีเจอร์ต่างๆ ของ Istio เพิ่มเติม เช่น เมตริก การติดตาม การจัดการการรับส่งข้อมูลแบบไดนามิก การแทรกข้อบกพร่อง และอื่นๆ
สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้างและแพ็กเกจแอป ASP.NET Core อย่างง่ายในคอนเทนเนอร์ Docker
- วิธีสร้างคลัสเตอร์ Kubernetes ด้วย Google Kubernetes Engine (GKE)
- วิธีติดตั้ง Istio บนคลัสเตอร์ Kubernetes ใน GKE
- วิธีติดตั้งใช้งานแอป ASP.NET Core และกำหนดค่าการรับส่งข้อมูลให้ Istio จัดการ
สิ่งที่คุณต้องมี
คุณจะใช้บทแนะนำนี้อย่างไร
คุณจะให้คะแนนประสบการณ์การใช้งาน Google Cloud Platform เท่าไร
2. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง
- ลงชื่อเข้าใช้ Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี



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


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

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

เครื่องเสมือนนี้มีเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักแบบถาวรขนาด 5 GB และทำงานใน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานในโค้ดแล็บนี้ได้โดยใช้เพียงเบราว์เซอร์หรือ Chromebook
เมื่อเชื่อมต่อกับ Cloud Shell แล้ว คุณควรเห็นว่าคุณได้รับการตรวจสอบสิทธิ์แล้วและโปรเจ็กต์ได้รับการตั้งค่าเป็นรหัสโปรเจ็กต์ของคุณแล้ว
- เรียกใช้คำสั่งต่อไปนี้ใน 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`
- เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้จักโปรเจ็กต์ของคุณ
gcloud config list project
เอาต์พุตของคำสั่ง
[core] project = <PROJECT_ID>
หากไม่ได้ตั้งค่าไว้ คุณตั้งค่าได้ด้วยคำสั่งนี้
gcloud config set project <PROJECT_ID>
เอาต์พุตของคำสั่ง
Updated property [core/project].
3. สร้างแอป ASP.NET Core ใน Cloud Shell
ในพรอมต์ของ Cloud Shell คุณสามารถยืนยันว่าเครื่องมือบรรทัดคำสั่ง dotnet ได้รับการติดตั้งแล้วโดยตรวจสอบเวอร์ชัน ซึ่งควรพิมพ์เวอร์ชันของเครื่องมือบรรทัดคำสั่ง dotnet ที่ติดตั้งไว้
dotnet --version
จากนั้นสร้างเว็บแอป ASP.NET Core โครงร่างใหม่
dotnet new mvc -o HelloWorldAspNetCore
ซึ่งควรสร้างโปรเจ็กต์และกู้คืนการอ้างอิงของโปรเจ็กต์ คุณควรเห็นข้อความที่คล้ายกับข้อความด้านล่าง
Restore completed in 11.44 sec for HelloWorldAspNetCore.csproj.
Restore succeeded.
4. เรียกใช้แอป ASP.NET Core
เราพร้อมที่จะเรียกใช้แอปแล้ว ไปที่โฟลเดอร์แอป
cd HelloWorldAspNetCore
สุดท้าย ให้เรียกใช้แอป
dotnet run --urls=http://localhost:8080
แอปพลิเคชันเริ่มฟังบนพอร์ต 8080
Hosting environment: Production
Content root path: /home/atameldev/HelloWorldAspNetCore
Now listening on: http://[::]:8080
Application started. Press Ctrl+C to shut down.
หากต้องการยืนยันว่าแอปทำงานอยู่ ให้คลิกปุ่มแสดงตัวอย่างเว็บที่ด้านขวาบน แล้วเลือก "แสดงตัวอย่างบนพอร์ต 8080"

คุณจะเห็นหน้าเว็บ ASP.NET Core เริ่มต้น

เมื่อยืนยันว่าแอปทำงานอยู่แล้ว ให้กด Ctrl+C เพื่อปิดแอป
5. แพ็กเกจแอป ASP.NET Core ในคอนเทนเนอร์ Docker
จากนั้นเตรียมแอปให้ทำงานเป็นคอนเทนเนอร์ ขั้นตอนแรกคือการกำหนดคอนเทนเนอร์และเนื้อหาของคอนเทนเนอร์
ในไดเรกทอรีฐานของแอป ให้สร้าง Dockerfile เพื่อกำหนดอิมเมจ Docker
touch Dockerfile
เพิ่มข้อมูลต่อไปนี้ลงใน Dockerfile โดยใช้โปรแกรมแก้ไขที่คุณชื่นชอบ (vim, nano,emacs หรือตัวแก้ไขโค้ดของ Cloud Shell)
# Use Microsoft's official build .NET image. # https://hub.docker.com/_/microsoft-dotnet-core-sdk/ FROM mcr.microsoft.com/dotnet/sdk:5.0-alpine AS build WORKDIR /app # Install production dependencies. # Copy csproj and restore as distinct layers. COPY *.csproj ./ RUN dotnet restore # Copy local code to the container image. COPY . ./ WORKDIR /app # Build a release artifact. RUN dotnet publish -c Release -o out # Use Microsoft's official runtime .NET image. # https://hub.docker.com/_/microsoft-dotnet-core-aspnet/ FROM mcr.microsoft.com/dotnet/aspnet:5.0-alpine AS runtime WORKDIR /app COPY --from=build /app/out ./ # Make sure the app binds to port 8080 ENV ASPNETCORE_URLS http://*:8080 # Run the web service on container startup. ENTRYPOINT ["dotnet", "HelloWorldAspNetCore.dll"]
การกำหนดค่าที่สำคัญอย่างหนึ่งซึ่งรวมอยู่ใน Dockerfile คือพอร์ตที่แอปใช้รับฟังการรับส่งข้อมูลขาเข้า (8080) ซึ่งทำได้โดยการตั้งค่าตัวแปรสภาพแวดล้อม ASPNETCORE_URLS ซึ่งแอป ASP.NET Core ใช้เพื่อกำหนดพอร์ตที่จะรับฟัง
บันทึก Dockerfile นี้ ตอนนี้มาสร้างอิมเมจกัน
docker build -t gcr.io/${GOOGLE_CLOUD_PROJECT}/hello-dotnet:v1 .
เมื่อกระบวนการนี้เสร็จสมบูรณ์ (ระบบจะใช้เวลาสักครู่ในการดาวน์โหลดและแตกไฟล์ทุกอย่าง) คุณจะเห็นว่าระบบสร้างและบันทึกอิมเมจไว้ในเครื่องแล้ว
docker images REPOSITORY TAG gcr.io/yourproject-XXXX/hello-dotnet v1
ทดสอบอิมเมจในเครื่องด้วยคำสั่งต่อไปนี้ ซึ่งจะเรียกใช้คอนเทนเนอร์ Docker ในเครื่องบนพอร์ต 8080 จากอิมเมจคอนเทนเนอร์ที่สร้างขึ้นใหม่
docker run -p 8080:8080 gcr.io/${GOOGLE_CLOUD_PROJECT}/hello-dotnet:v1
และใช้ประโยชน์จากฟีเจอร์ตัวอย่างเว็บของ Cloud Shell อีกครั้ง

คุณควรเห็นหน้าเว็บ ASP.NET Core เริ่มต้นในแท็บใหม่

เมื่อยืนยันว่าแอปทำงานได้ดีในเครื่องในคอนเทนเนอร์ Docker แล้ว คุณจะหยุดคอนเทนเนอร์ที่กำลังทำงานได้โดยใช้ Ctrl-> C
ตอนนี้อิมเมจทำงานได้ตามที่ต้องการแล้ว คุณสามารถพุชอิมเมจไปยัง Google Container Registry ซึ่งเป็นที่เก็บส่วนตัวสำหรับอิมเมจ Docker ที่เข้าถึงได้จากทุกโปรเจ็กต์ Google Cloud (รวมถึงจากภายนอก Google Cloud Platform) ดังนี้
docker push gcr.io/${GOOGLE_CLOUD_PROJECT}/hello-dotnet:v1
หากทุกอย่างเป็นไปด้วยดีและหลังจากผ่านไปสักครู่ คุณควรจะเห็นอิมเมจคอนเทนเนอร์แสดงอยู่ในส่วน Container Registry ตอนนี้คุณมีอิมเมจ Docker ระดับโปรเจ็กต์แล้ว ซึ่ง Kubernetes สามารถเข้าถึงและจัดระเบียบได้ตามที่คุณจะเห็นในอีกไม่กี่นาที

หากสนใจ คุณสามารถไปยังส่วนต่างๆ ของอิมเมจคอนเทนเนอร์ขณะที่จัดเก็บไว้ใน Google Cloud Storage ได้โดยไปที่ลิงก์ https://console.cloud.google.com/storage/browser/ (ลิงก์ที่สมบูรณ์ควรมีรูปแบบดังนี้ https://console.cloud.google.com/project/PROJECT_ID/storage/browser/)
6. สร้างคลัสเตอร์ Kubernetes/GKE ด้วย Istio
ก่อนอื่น ให้ตรวจสอบว่าคุณได้เปิดใช้ Kubernetes Engine API แล้ว โดยทำดังนี้
gcloud services enable container.googleapis.com
สร้างคลัสเตอร์ Kubernetes คุณเปลี่ยนภูมิภาคเป็นที่ใดที่อยู่ใกล้คุณได้หากต้องการ โดยทำดังนี้
gcloud container clusters create hello-istio \ --cluster-version=latest \ --machine-type=n1-standard-2 \ --num-nodes=4 \ --region europe-west1
รอสักครู่ขณะที่ระบบตั้งค่าคลัสเตอร์ให้คุณ ซึ่งจะปรากฏในส่วน Kubernetes Engine ของคอนโซล Google Cloud Platform

สำหรับ Codelab นี้ เราจะดาวน์โหลดและติดตั้ง Istio จาก istio.io นอกจากนี้ยังมีตัวเลือกการติดตั้งอื่นๆ รวมถึงส่วนเสริม Istio สำหรับ GKE และ Anthos Service Mesh ขั้นตอนการสมัครหลังจากขั้นตอนนี้จะใช้ได้กับการติดตั้ง Istio ทุกครั้ง
ก่อนอื่น ให้ดาวน์โหลดไคลเอ็นต์และตัวอย่างของ Istio หน้าเผยแพร่ Istio มีอาร์ติแฟกต์ที่ดาวน์โหลดได้สำหรับระบบปฏิบัติการหลายระบบ ในกรณีของเรา เราสามารถใช้คำสั่งที่สะดวกเพื่อดาวน์โหลดและแตกไฟล์เวอร์ชันล่าสุดสำหรับแพลตฟอร์มปัจจุบันได้ดังนี้
curl -L https://istio.io/downloadIstio | sh -
สคริปต์จะแจ้งเวอร์ชันของ Istio ที่ดาวน์โหลดไว้
Istio has been successfully downloaded into the istio-1.8.1 folder on your system.
ไดเรกทอรีการติดตั้งมีแอปพลิเคชันตัวอย่างและไบนารีของไคลเอ็นต์ istioctl เปลี่ยนเป็นไดเรกทอรีนั้นโดยใช้คำสั่งต่อไปนี้
cd istio-1.8.1
คัดลอกและวางคำสั่งที่ระบุเพื่อเพิ่มไดเรกทอรี bin ลงใน PATH เพื่อให้คุณใช้ istioctl ได้
export PATH="$PATH:/home/<YOURHOMEID>/istio-1.8.1/bin"
ตรวจสอบว่า istioctl พร้อมใช้งานโดยตรวจสอบว่าคลัสเตอร์พร้อมสำหรับ Istio หรือไม่
istioctl x precheck
คุณควรเห็นข้อความที่ระบุว่า Install Pre-Check passed! The cluster is ready for Istio installation.
ติดตั้ง Istio ด้วยโปรไฟล์การสาธิต
istioctl install --set profile=demo
ตอนนี้ระบบได้ติดตั้ง Istio ในคลัสเตอร์แล้ว
การแทรก Sidecar อัตโนมัติ
หากต้องการเริ่มใช้ Istio คุณไม่จำเป็นต้องทำการเปลี่ยนแปลงใดๆ กับแอปพลิเคชัน เมื่อคุณกำหนดค่าและเรียกใช้บริการ ระบบจะแทรกไฟล์ช่วยเหลือ Envoy ลงในพ็อดแต่ละรายการของบริการโดยอัตโนมัติ
หากต้องการให้ทำงานได้ คุณต้องเปิดใช้การแทรก Sidecar สำหรับเนมสเปซ ("default") ที่ใช้สำหรับไมโครเซอร์วิส โดยทำได้ด้วยการใช้ป้ายกำกับดังนี้
kubectl label namespace default istio-injection=enabled
หากต้องการยืนยันว่าติดป้ายกำกับสำเร็จแล้ว ให้เรียกใช้คำสั่งต่อไปนี้
kubectl get namespace -L istio-injection
เอาต์พุตยืนยันว่าได้เปิดใช้การแทรก Sidecar สำหรับเนมสเปซเริ่มต้นแล้ว
NAME STATUS AGE ISTIO-INJECTION default Active 3m enabled istio-system Active 63s disabled ...
7. ยืนยันการติดตั้ง
Istio มาพร้อมกับบริการ 3 อย่าง ได้แก่ istiodระนาบควบคุม และเกตเวย์ขาเข้าและขาออก (ซึ่งคุณอาจคิดว่าเป็น "พร็อกซีแบบไซด์คาร์สำหรับอินเทอร์เน็ตที่เหลือ") โดยมีชื่อว่า istio-ingressgateway และ istio-egressgateway ตามลำดับ
kubectl get svc -n istio-system
เอาต์พุตควรมีลักษณะดังนี้
NAME TYPE CLUSTER-IP EXTERNAL-IP AGE istio-egressgateway ClusterIP 10.55.252.182 <none> istio-ingressgateway LoadBalancer 10.55.250.185 35.233.118.42 istiod ClusterIP 10.55.253.217 <none>
Ingress Gateway มีประเภทเป็น LoadBalancer จึงเข้าถึงได้จากอินเทอร์เน็ต ส่วนอื่นๆ จะต้องเข้าถึงได้จากภายในคลัสเตอร์เท่านั้น
จากนั้นตรวจสอบว่าได้ติดตั้งใช้งานพ็อด Kubernetes ที่เกี่ยวข้องแล้ว และคอนเทนเนอร์ทั้งหมดทำงานอยู่
kubectl get pods -n istio-system
เมื่อพ็อดทั้งหมดทำงานแล้ว คุณจะดำเนินการต่อได้
NAME READY STATUS istio-egressgateway-674988f895-m6tk4 1/1 Running istio-ingressgateway-6996f7dcc8-7lvm2 1/1 Running istiod-6bf5fc8b64-j79hj 1/1 Running
istiod: Istio Control Plane จัดการการกำหนดค่าและการเขียนโปรแกรมของ Sidecar พร็อกซี, การค้นหาบริการ, การกระจายใบรับรอง และการแทรก Sidecaringress gateway: จัดการคำขอขาเข้าจากภายนอกคลัสเตอร์egress gateway: จัดการคำขอขาออกไปยังปลายทางภายนอกคลัสเตอร์
8. ทำให้แอปพลิเคชันใช้งานได้
ตอนนี้คุณได้ยืนยันแล้วว่าติดตั้งและเรียกใช้ Istio แล้ว คุณก็สามารถติดตั้งใช้งานแอป ASP.NET Core ได้
การติดตั้งใช้งานและบริการ
ก่อนอื่น ให้สร้างไฟล์ aspnetcore.yaml โดยใช้โปรแกรมแก้ไขที่คุณชื่นชอบ (vim, nano,emacs หรือโปรแกรมแก้ไขโค้ดของ Cloud Shell) และกำหนดการติดตั้งใช้งานและบริการ Kubernetes สำหรับแอป
apiVersion: v1
kind: Service
metadata:
name: aspnetcore-service
labels:
app: aspnetcore
spec:
ports:
- port: 8080
name: http
selector:
app: aspnetcore
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: aspnetcore-v1
spec:
replicas: 1
selector:
matchLabels:
app: aspnetcore
version: v1
template:
metadata:
labels:
app: aspnetcore
version: v1
spec:
containers:
- name: aspnetcore
image: gcr.io/YOUR-PROJECT-ID/hello-dotnet:v1
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
เนื้อหาของไฟล์คือการติดตั้งใช้งานและบริการมาตรฐานสำหรับการติดตั้งใช้งานแอปพลิเคชัน และไม่มีสิ่งใดที่เฉพาะเจาะจงสำหรับ Istio
โดยให้ติดตั้งใช้งานบริการไปยังเนมสเปซเริ่มต้นด้วย kubectl ดังนี้
kubectl apply -f aspnetcore.yaml
service "aspnetcore-service" created deployment.extensions "aspnetcore-v1" created
ตรวจสอบว่าพ็อดทำงานอยู่
kubectl get pods
NAME READY STATUS RESTARTS AGE aspnetcore-v1-6cf64748-mddb 2/2 Running 0 34s
Gateway และ VirtualService
หากต้องการอนุญาตให้การรับส่งข้อมูลขาเข้าเข้าถึง Mesh คุณต้องสร้าง Gateway และ VirtualService
เกตเวย์จะกำหนดค่าตัวจัดสรรภาระงานสำหรับการรับส่งข้อมูล HTTP/TCP ซึ่งโดยทั่วไปจะทำงานที่ขอบของ Mesh เพื่อเปิดใช้การรับส่งข้อมูลขาเข้าสำหรับแอปพลิเคชัน VirtualService จะกำหนดกฎที่ควบคุมวิธีกำหนดเส้นทางคำขอสำหรับบริการภายใน Istio Service Mesh
สร้างไฟล์ aspnetcore-gateway.yaml เพื่อกำหนดเกตเวย์
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: aspnetcore-gateway
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
สร้างไฟล์ aspnetcore-virtualservice.yaml เพื่อกำหนด VirtualService ดังนี้
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: aspnetcore-virtualservice
spec:
hosts:
- "*"
gateways:
- aspnetcore-gateway
http:
- route:
- destination:
host: aspnetcore-service
เรียกใช้คำสั่ง kubectl เพื่อติดตั้งใช้งานเกตเวย์ด้วย
kubectl apply -f aspnetcore-gateway.yaml
คำสั่งจะสร้างเอาต์พุตต่อไปนี้
gateway.networking.istio.io "aspnetcore-gateway" created
จากนั้นเรียกใช้คำสั่งต่อไปนี้เพื่อทำให้ VirtualService ใช้งานได้
kubectl apply -f aspnetcore-virtualservice.yaml
คำสั่งจะสร้างเอาต์พุตต่อไปนี้
virtualservice.networking.istio.io "aspnetcore-virtualservice" created
ตรวจสอบว่าทุกอย่างทำงานอยู่
kubectl get gateway
NAME AGE aspnetcore-gateway 28s
kubectl get virtualservice
NAME AGE aspnetcore-virtualservice 33s
ยินดีด้วย คุณเพิ่งทําให้แอปพลิเคชันที่เปิดใช้ Istio ใช้งานได้ จากนั้นคุณจะเห็นแอปพลิเคชันที่ใช้งานอยู่
9. ทดสอบแอปพลิเคชัน
ในที่สุดคุณก็จะได้เห็นแอปพลิเคชันทำงาน คุณต้องรับ IP และพอร์ตภายนอกของเกตเวย์ โดยจะแสดงในส่วนEXTERNAL-IP
kubectl get svc istio-ingressgateway -n istio-system
ส่งออก IP และพอร์ตภายนอกไปยังGATEWAY_URLตัวแปร:
export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
ใช้ curl เพื่อทดสอบแอป บริการควรตอบกลับด้วยรหัสการตอบกลับ 200
curl -o /dev/null -s -w "%{http_code}\n" http://${GATEWAY_URL}/
หรือจะเปิดเบราว์เซอร์ ไปที่ http://<gatewayurl> เพื่อดูแอปก็ได้

10. ยินดีด้วย
คุณเพิ่งทำให้แอป ASP.NET Core แบบง่ายใช้งานได้กับ Kubernetes ที่ทำงานบน Google Kubernetes Engine (GKE) และกำหนดค่าให้ Istio จัดการ
คุณอาจสงสัยว่า "Istio มีประโยชน์อย่างไร" เป็นคำถามที่ดีมาก ในตอนนี้ การให้ Istio จัดการแอปนี้ยังไม่มีข้อดีใดๆ ในส่วนที่ 2 ของแล็บ เราจะสำรวจฟีเจอร์ต่างๆ ของ Istio เพิ่มเติม เช่น เมตริก การติดตาม การจัดการการรับส่งแบบไดนามิก การแสดงภาพบริการ และการแทรกข้อบกพร่อง
ขั้นตอนถัดไป
- ติดตั้งใช้งานแอป ASP.NET Core ใน GKE ด้วย Istio (ตอนที่ 2)
- ดูข้อมูลเพิ่มเติมเกี่ยวกับ Istio
- ดูข้อมูลเพิ่มเติมเกี่ยวกับ Kubernetes
- ดูข้อมูลเพิ่มเติมเกี่ยวกับ Google Kubernetes Engine
- ดูข้อมูลเพิ่มเติมเกี่ยวกับ .NET ใน Google Cloud Platform
ใบอนุญาต
ผลงานนี้ได้รับอนุญาตภายใต้สัญญาอนุญาตครีเอทีฟคอมมอนส์สำหรับยอมรับสิทธิของผู้สร้าง (Creative Commons Attribution License) 2.0 แบบทั่วไป
11. ล้างข้อมูล
หากไม่ได้ทำแล็บส่วนที่ 2 ต่อ คุณสามารถลบแอปและถอนการติดตั้ง Istio หรือลบคลัสเตอร์ Kubernetes ได้เลย
ลบแอป
วิธีลบแอป
kubectl delete -f aspnetcore-gateway.yaml Kubectl delete -f aspnetcore-virtualservice.yaml kubectl delete -f aspnetcore.yaml
วิธียืนยันว่าแอปหายไปแล้ว
kubectl get gateway kubectl get virtualservices 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-istio