Kubernetes Gateway API บน Amazon EKS ด้วย Traefik
เจาะลึกการใช้งาน Kubernetes Gateway API บน Amazon EKS ผ่าน Traefik แทน nginx Ingress พร้อมตัวอย่างโค้ด Terraform และแอป Node.js

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- nginx Ingress เข้าสู่สถานะยุติการสนับสนุนการใช้งานแบบ active แล้ว
- Gateway API เข้าสู่สถานะ GA v1.0 ตั้งแต่เดือนตุลาคม 2023
- Traefik ทำหน้าที่เป็น Gateway controller บน Amazon EKS ผ่าน Helm
- ใช้งานร่วมกับ Terraform และ Amazon Route53 สำหรับจัดการโดเมน
วงการจัดการทราฟฟิกบน Kubernetes กำลังเปลี่ยนผ่านครั้งสำคัญ หลังจากที่ nginx Ingress controller ซึ่งเป็นเครื่องมือมาตรฐานมายาวนาน ได้ประกาศเข้าสู่โหมดบำรุงรักษาเท่านั้น (maintenance-only mode) และไม่มีการเพิ่มฟีเจอร์ใหม่อีกต่อไป ทางชุมชน Kubernetes จึงผลักดันให้หันมาใช้งาน Gateway API ซึ่งเป็นมาตรฐานใหม่ที่ดีกว่าเดิมในการจัดการคำขอ HTTP ภายนอกคลัสเตอร์
ในบทความนี้เราจะพาไปสำรวจการใช้งาน Kubernetes Gateway API บน Amazon EKS โดยใช้ Traefik เป็น Gateway controller พร้อมทั้งจัดการโครงสร้างพื้นฐานทั้งหมดด้วย Terraform เพื่อรันแอปพลิเคชัน Node.js ตัวจริงได้อย่างมีประสิทธิภาพ

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
Kubernetes Gateway API คือชุดของ Custom Resource Definitions (CRDs) อย่างเป็นทางการที่พัฒนาขึ้นมาเพื่อแทนที่ทรัพยากร Ingress แบบเดิม โดย Gateway API ได้รับการพัฒนาจนถึงระดับ General Availability (v1.0) ในเดือนตุลาคม 2023 และมีอัตราการใช้งานที่เติบโตขึ้นอย่างต่อเนื่อง จุดเด่นสำคัญคือการแยกระบบออกเป็นเลเยอร์ที่ชัดเจนระหว่างทีมโครงสร้างพื้นฐานและทีมพัฒนาแอปพลิเคชัน
การเปลี่ยนผ่านจาก Ingress ไปสู่ Gateway API ถือเป็นก้าวสำคัญของสถาปัตยกรรมคลาวด์เนทีฟ เพราะ Ingress แบบเดิมเป็นสเปกแบบแบนราบที่มีข้อจำกัดสูงในการจัดการกฎการ Routing ซับซ้อน ขณะที่ Gateway API เปิดให้ผู้ดูแลคลัสเตอร์ควบคุมส่วน Gateway และ Load Balancer ในขณะที่ทีมพัฒนาสามารถกำหนดค่า HTTPRoutes ใน Namespace ของตัวเองได้โดยไม่ต้องพึ่งพาสิทธิ์ระดับคลัสเตอร์
องค์ประกอบหลักของระบบนี้ประกอบด้วยโครงสร้างดังต่อไปนี้:
- AWS Network Load Balancer ถูกสร้างขึ้นเพียงตัวเดียวอัตโนมัติผ่าน EKS
- Traefik Pod รันด้วย 2 replicas ใน namespace ชื่อ traefik
- HTTPRoutes แบ่งการทำงานออกเป็นหลายส่วนเพื่อแยก namespace ของแอป Node.js อย่างเด็ดขาด
สำหรับการตั้งค่าเส้นทาง (Routing Patterns) บทความนี้ได้จัดเตรียมตัวอย่างรูปแบบการทำงานไว้ 2 ส่วน ได้แก่ Part 01 ที่ใช้การ Routing ตาม Hostname (แยกผ่าน subdomains app1 และ app2) และ Part 02 ที่ใช้การเขียนทับ URL (URL Rewriting) ทั้งหมดถูกจัดการผ่าน Terraform และ Route53 A-alias records อย่างครบถ้วน
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น