ใช้ AWS WAF กับ AWS EKS ที่ติดตั้ง NGINX Ingress Controller

Pao Payungsak Klinchampa
1 min readJun 30, 2022

ต้องเล่าก่อนว่าผมเองจะใช้ NGINX Ingress Controller เป็นหลัก และใช้ในการสอน Partner พี่ๆน้องๆหลายๆคนที่สนใจ Kubernetes เนื่องจากมันใช้ง่าย และติดตั้งค่อนข้างง่ายด้วย

สิ่งที่เกิดขึ้นก็คือ NGINX Ingress Controller มัน Deploy L4 Load balancer มาให้ ซึ่งถ้าเป็น AWS ก็คือ AWS Network Load balancer นั่นล้ะครับ

มันก็ใช้งานได้ปกติดีนั่นล้ะครับ เเต่บาง Case ผมต้องการ Whitelist แบบง่ายๆ เช่น Allow only source ip from customer office ถ้ามาจาก IP อื่น ก็ Return 403 กลับไปซะ อะไรแบบนี้

และปัญหาที่เกิดขึ้นก็คือ Nginx Ingress มันมองเห็น Source IP เป็น Private IP บน AWS VPC ครับ เเทนที่จะเป็น Source IP ของ User ก็เลยไม่สามารถใช้ Annotation ชื่อ whitelist-source-range ได้

ผมก็ Search วิธีแก้ปัญหา ตั้งเเต่ เปิดใช้ Proxy Protocol แก้นั่น แก้นี่ เเละสุดท้ายมันก็พัง 555555555 แถมพังหนักมาก เปิดเว็บไม่ขึ้นเลยทีเดียว

ก็เลยเกิด Idea แปลกๆขึ้นมาว่า เราสร้าง ALB มาไว้ข้างหน้าซะซิ เพราะมันใส่ Security Group ก็ได้ หรือจะเอา AWS WAF มาใช้ด้วยก็ยังได้ 555 แค่นี้ก็ Control Source IP ที่ Request เข้ามาได้เเล้ว

ส่วน Target Group ก็สร้างเป็นแบบ IP Address ล้ะเอา Private IP ของ NLB มาใส่

จากนั้นก็ปรับให้ NLB เป็น Internal หรือสร้างอันใหม่เเทนอันเดิมไปเลย

ทีนี้ก็ง่ายล้ะครับ ALB เราสามารถเปิด Port พิเศษสำหรับบาง Service ได้ ล้ะ Allow Source IP จาก Customer Office ไรงี้ก็ทำได้

หรือจะใช้ AWS WAF ก็ได้อีก อยากเก็บ Log ก็เปิดจาก AWS WAF หรือ ALB Access Log ก็ทำได้ ไม่ต้องไปวุ่นวายบน EKS

จบปัญหาครับ 5555555

ส่วนฝั่ง Ingress ใน EKS ก็ไม่ได้มีอะไรมากกมายครับ เเค่ Map Domain name กับชื่อ Service และ Port ที่ตัว App เปิดขึ้นมา

--

--