วิธีติดตั้ง Nginx Ingress Controller และ SSL บน Kubernetes
เรียนรู้วิธีตั้งค่า Nginx Ingress Controller บน Kubernetes พร้อมปรับใช้งานแอปพลิเคชันและออกใบรับรอง SSL ด้วย cert-manager เพื่อรองรับ HTTPS อย่างสมบูรณ์

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- การใช้งาน Nginx Ingress Controller ช่วยทำหน้าที่เป็นจุดเข้าใช้งานหลักและจัดการทราฟฟิกขาเข้า
- คู่มือนี้ครอบคลุมการติดตั้งผ่าน Helm และการ deploy แอปพลิเคชันตัวอย่างสองตัว
- สามารถออกใบรับรอง SSL อัตโนมัติด้วย Let's Encrypt และ cert-manager
- รองรับการตั้งค่า DNS และกำหนดค่า Ingress resource เพื่อเชื่อมต่อผ่าน HTTPS
Nginx Ingress Controller เป็นเครื่องมือจัดการ Ingress บน Kubernetes ที่ได้รับความนิยมสูง ทำหน้าที่เป็นรีเวอร์สพร็อกซีและตัวกระจายโหลดเพื่อส่งผ่านทราฟฟิกภายนอกเข้ามายังคลัสเตอร์ โดยเป็นจุดเข้าใช้งานเดี่ยวที่มีความสามารถทั้งการยกเลิก SSL/TLS การกระจายโหลด การจัดการเซสชัน และการกำหนดเส้นทางตามพาธ
ก่อนเริ่มต้นใช้งาน ผู้ดูแลระบบจำเป็นต้องเตรียมคลัสเตอร์ Kubernetes ที่มีโหนดอย่างน้อย 2 โหนด พร้อมติดตั้งเครื่องมือ kubectl และ Helm รวมถึงเตรียมชื่อโดเมนสำหรับใช้งานจริง
- เพิ่มรีโปสิทอรี Helm ของ Nginx Ingress:
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx - อัปเดต Helm:
helm repo update - ติดตั้ง Nginx Ingress Controller:
helm install ingress-nginx ingress-nginx/ingress-nginx - ตรวจสอบสถานะโหลดบาลานเซอร์ที่ถูกสร้างขึ้นอัตโนมัติ:
kubectl get services ingress-nginx-controller
ขั้นตอนถัดมาคือการติดตั้ง cert-manager เวอร์ชัน v1.17.2 เพื่อใช้จัดการและออกใบรับรอง SSL ให้กับแอปพลิเคชัน โดยสามารถนำเข้าใบรับรองเชิงพาณิชย์เพิ่มเติมได้ตามต้องการ และตรวจสอบพอด, เซอร์วิส, และรีพลิเคชันเซ็ตในเนมสเปซ cert-manager
การใช้งาน Ingress Controller ร่วมกับ cert-manager ถือเป็นมาตรฐานสากลในการรักษาความปลอดภัยให้กับแอปพลิเคชันที่รันอยู่บน Kubernetes เพราะช่วยลดความซับซ้อนในการจัดการใบรับรอง SSL/TLS ที่ต้องต่ออายุอยู่เสมอ และทำให้การกำหนดเส้นทางทราฟฟิกมีความยืดหยุ่นสูงผ่านคอนฟิกูเรชันไฟล์เดียว

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ในส่วนของการทดสอบระบบ นักพัฒนาสามารถสร้างแอปพลิเคชันตัวอย่างสองตัวคือ app1 และ app2 โดยใช้ภาพ hashicorp/http-echo พร้อมกำหนดอาร์กิวเมนต์ข้อความต้อนรับ และสร้างเซอร์วิสเพื่อเชื่อมต่อไปยังพอร์ตของแต่ละแอปพลิเคชัน
- สร้างไฟล์ Manifest สำหรับ Deployment ของ app1 และ app2
- ติดตั้งเซอร์วิส
app1-svcและapp2-svcผ่านคำสั่งkubectl apply - กำหนดค่า DNS record แบบ A สำหรับซับโดเมนทั้งสองให้ชี้ไปยัง External IP ของโหลดบาลานเซอร์
- สร้าง Ingress resource สำหรับแต่ละแอปพลิเคชันพร้อมระบุ annotations ของ cert-manager
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น