หลังจากอธิบายเกี่ยวกับ 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 ต่าง ๆ ดังนี้
- Pilot
- Telemetry ทำการรวม metric และ log ต่าง ๆ เป็นส่วนการทำงานหนึ่งของ Mixer
- Policy ใช้กำหนดนโยบายต่าง ๆ เพื่อการจัดการ traffic เป็นส่วนการทำงานหนึ่งของ Mixer
- Ingress-gateway สำหรับจัดการ traffic ขาเข้าซึ่งมาจากนอก Cluster
- Citadel หรือ Istio-Auth หรือ Istio-CA นั่นเอง
มาดูกันหน่อยว่าสร้าง service อะไรให้บ้าง ?
บอกเลยว่า เยอะมากมาย !!!
ยังไม่พอต้องไปดู Pods ด้วยว่า สร้างเรียบร้อยหรือไม่ ?
ขั้นตอนที่ 3 ติดตั้ง application กัน
เมื่อทุกอย่างพร้อมแล้ว ก็ทำการติดตั้ง application กันหน่อย
ซึ่ง Istio นั้นมีตัวอย่าง application มาให้ด้วย
ชื่อว่า Book Info
มีโครงสร้างของ service จำนวน 4 service คือ
- productpage พัฒนาด้วยภาษา Python
- details พัฒนาด้วยภาษา Ruby
- reviews พัฒนาด้วยภาษา Java
- 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 ครับ