1. Tổng quan

Nginx Ingress Controller là một Ingress Controller cho Kubernetes, sử dụng Nginx làm Reverse Proxy và Load Balancer để định tuyến lưu lượng HTTP/HTTPS từ bên ngoài vào các dịch vụ bên trong cụm Kubernetes một cách linh hoạt, dựa trên các quy tắc được định nghĩa trong tài nguyên Ingress, giúp quản lý truy cập và cấu hình cho các ứng dụng được triển khai

Vai trò: 

  • Làm Reverse Proxy cho cụm Kubernetes: Ingress Nginx cho phép truy cập vào các ứng dụng đang chạy bên trong cụm (thường chỉ có thể truy cập nội bộ) thông qua một điểm truy cập duy nhất (single entry point).
  • Định tuyến traffic: Dựa trên tên miền (host), đường dẫn (path), hoặc các chú thích (annotations), Ingress Nginx có thể chuyển hướng yêu cầu đến đúng Service và Pod.
  • Cân bằng tải (Load Balancing): Phân phối traffic đến các pod của dịch vụ, đảm bảo không có pod nào bị quá tải.
  • Quản lý traffic Layer 7: Cung cấp các tính năng nâng cao như SSL/TLS termination, Virtual Hosts, và tích hợp với WAF (Web Application Firewall).

2. Hướng dẫn cài đặt Nginx Ingress Controller

Bước 1: Đứng từ VM đã kết nối được tới cụm VNPT Kubernetes Service và cài đặt Helm.

curl -L https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

Bước 2: Thêm repo Helm của Ingress:

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
  • Thực hiện cài đặt Ingress bằng câu lệnh sau:
helm install ingress-nginx ingress-nginx/ingress-nginx \
  --version 4.12.1 \
  --namespace ingress-nginx \
  --create-namespace \
  --set controller.replicaCount=2 \
  --set controller.service.annotations.lb.vnptplatform.vn/load-balancer-id=125

Trong đó:

  • controller.replicaCount: Số lượng replicas của ingress controller
  • controller.service.annotations.lb.vnptplatform.vn/load-balancer-id: lb-id (Annotation dùng để gán Ingress Controller vào VNPT Load Balancer đã tạo sẵn, giúp expose dịch vụ Ingress ra bên ngoài cho người dùng truy cập. Tham khảo cách tạo VNPT Load Balancer tại đây và thông tin các annotations LB tại đây ).

Bước 3: Kiểm tra 

  • Thực hiện kiểm tra pod nginx đã running:

  • Thực hiện kiểm tra svc

  • Kiểm tra 1 dịch vụ sử dụng ingress đã tích hợp với LB