หลังจากอธิบายเกี่ยวกับ Istio ไปนิดหน่อย
ดังนั้นเพื่อให้เห้นภาพชัดเจนขึ้น
มาลองติดตั้ง และ deploy ระบบงานกันดีกว่า
โดยใน blog นี้ทำการติดตั้งบน Kubernetes engine ของ Google Cloud
เนื่องจากติดตั้งบน local แล้ว memory ไม่พอ !!
มาเริ่มกันดีกว่า

ขั้นตอนที่ 1

สร้าง Cluster ใน Kubernetes Engine จำนวน 3 เครื่อง

ขั้นตอนที่ 2

ทำการติดตั้ง Istio แบบง่าย ๆ
เริ่มจาก download  จากนั้นทำการ extract และเข้าไปยัง folder istio เพื่อติดตั้งกัน

ทำการติดตั้ง component หลัก ๆ ของ Istio

ผลการทำงาน
จะทำการสร้าง namespace ชื่อว่า istio-system ขึ้นมา
โดยจะทำการ deploy control plane component ต่าง ๆ ดังนี้

  1. Pilot
  2. Telemetry ทำการรวม metric และ log ต่าง ๆ เป็นส่วนการทำงานหนึ่งของ Mixer
  3. Policy ใช้กำหนดนโยบายต่าง ๆ เพื่อการจัดการ traffic เป็นส่วนการทำงานหนึ่งของ Mixer
  4. Ingress-gateway สำหรับจัดการ traffic ขาเข้าซึ่งมาจากนอก Cluster
  5. Citadel หรือ Istio-Auth หรือ Istio-CA นั่นเอง

มาดูกันหน่อยว่าสร้าง service อะไรให้บ้าง ?
บอกเลยว่า เยอะมากมาย !!!

ยังไม่พอต้องไปดู Pods ด้วยว่า สร้างเรียบร้อยหรือไม่ ?

ขั้นตอนที่ 3 ติดตั้ง application กัน

เมื่อทุกอย่างพร้อมแล้ว ก็ทำการติดตั้ง application กันหน่อย
ซึ่ง Istio นั้นมีตัวอย่าง application มาให้ด้วย
ชื่อว่า Book Info
มีโครงสร้างของ service จำนวน 4 service คือ

  1. productpage พัฒนาด้วยภาษา Python
  2. details พัฒนาด้วยภาษา Ruby
  3. reviews พัฒนาด้วยภาษา Java
  4. ratings พัฒนาด้วยภาษา NodeJS

ดังรูป

โดยที่ configuration อยู่ในไฟล์ samples/bookinfo/platform/kube/bookinfo.yaml
มันคือ Kubernetes configuration นั่นเอง
ถ้าเราทำการ deploy แบบปกติผ่าน kubectl
ก็จะได้ Pods และ Services ต่าง ๆ เป็นปกติ
แน่นอนว่า ไม่มีการใช้ความสามารถของ Istio เลย เช่น Envoy sidecar
เนื่องจากค่า default นั้นจะปิดไว้ ดังนั้นเปิดซะ
ทำได้ดังนี้

ทำการ deploy ระบบตัวอย่างกันเลย รออะไร
จะใช้เวลารอให้สร้าง Pods กันนานหน่อยนะ

และให้ลองสังเกตุว่า
ในแต่ละ Pods จะมี 2 container
นั่นหมายความว่า Istio จะทำการสร้าง Envoy sidecar ให้เรียบร้อย

ขั้นตอนที่ 4 สร้าง Gateway เพื่อให้ trafic เข้ามายัง cluster ได้

คือ ingress traffic นั่นเอง
ทำการสร้างด้วยคำสั่ง

หรือทำการเปิดผ่าน browser ไปยัง IP ของ EXTERNAL-IP
แสดงการทำงานดังรูป

แค่ติดตั้งก็เหนื่อยใช้ได้เลยนะ
ไว้มาดูความสามารถอื่น ๆ กันต่อไป เช่น Routing, Telemetry และ Authentication/Authorization เป็นต้น
น่าจะมีประโยชน์ต่อการพัฒนามากยิ่งขึ้น
ขอให้สนุกกับการ coding ครับ