Kubernetes Auto-Scale

WAF tự co giãn
trên Kubernetes

Phiên bản WAF triển khai trên Kubernetes — tự động tăng/giảm pod theo lượng truy cập, kết hợp XDP kernel filtering và AI threat classification.

2→20
Pod tự động scale
5
Server trong cụm
30s
Thời gian scale up
0
Downtime khi cập nhật

Từ kernel đến Kubernetes pod

Lưu lượng đi qua 5 tầng xử lý. XDP chặn DDoS tại kernel trước khi traffic vào pod network. Nginx WAF tự động scale theo tải.

⚡ HOST KERNEL
XDP SYN Protect
Lọc L3/L4 tại driver, trước khi traffic vào K8S pod network. Chặn SYN flood, IP blacklist, SYN cookie validation.
systemd native → eBPF attach vào NIC driver
🔗 API BRIDGE
xdp-api-bridge (DaemonSet)
REST API nội bộ trên mỗi node — cầu nối giữa K8S pod và XDP binary trên host. Bearer token auth, port 9100.
Go binary → hostNetwork + privileged → exec XDP CLI
🧠 WAF ENGINE
Behavioral Scoring + AI Classifier
Phân tích hành vi IP, adaptive threshold, botnet correlation. Gọi xdp-api-bridge để block/whitelist qua XDP.
Deployment 1–2 replicas → port 9090 (Dashboard)
🧱 NGINX WAF
ModSecurity + OWASP CRS v4 (HPA Auto-scale)
Tự động tăng 2→20 pod khi CPU >70% hoặc Memory >80%. Scale down sau 5 phút khi hạ tải.
Deployment + Service + HPA → LoadBalancer :80/:443
🤖 AI MODEL
Qwen3-0.6B Fine-tuned (Q4_K_M)
Threat classification và báo cáo tiếng Việt tự động. Model ~379MB trên PersistentVolumeClaim.
Deployment + ClusterIP Service :8081 → llama.cpp inference

Cầu nối giữa Kubernetes và Kernel

Thành phần then chốt giải quyết vấn đề XDP không thể chạy trong container.

Tại sao cần Bridge? XDP attach trực tiếp vào NIC driver ở kernel level — không thể chạy trong container. XDP binary chỉ hỗ trợ CLI, không có HTTP listener. Bridge chạy trên mỗi host node (DaemonSet), gọi CLI binary thay mặt K8S pods. WAF Engine biết host IP qua Downward API.

POST
/block
Block IP với TTL và reason
DELETE
/block/:ip
Unblock IP cụ thể
POST
/whitelist
Thêm IP prefix vào whitelist
GET
/stats
Thống kê XDP (cache 2s)
POST
/vrouter/block
Block theo vRouter ID
POST
/protected
Thêm IP/MAC được bảo vệ
GET
/config
Đọc cấu hình XDP hiện tại
GET
/health
Health check bridge + XDP

HPA scale Nginx WAF theo tải thực tế

Horizontal Pod Autoscaler giám sát CPU và Memory của các Nginx pod. Khi tải tăng, tự động tạo thêm pod trong 30 giây. Khi tải giảm, thu gọn dần sau 5 phút.

Điều kiện Hành động Giới hạn
CPU trung bình > 70% Scale up Tối đa +4 pod / 60 giây
Memory trung bình > 80% Scale up Tối đa +4 pod / 60 giây
CPU < 70%, traffic giảm Scale down −1 pod / 2 phút, đợi 5 phút
Cập nhật quy tắc WAF Rolling update Zero downtime

Spike traffic: Ví dụ flash sale — tải tăng đột biến 10x trong 1 phút. HPA phát hiện CPU spike, tạo thêm pod mới trong 30s. Khi sale kết thúc, hệ thống tự thu gọn về 2 pod cơ bản. Không cần can thiệp thủ công.

Các resource trong cụm Kubernetes

☸️

Namespace: vfw-waf

Namespace riêng biệt cho toàn bộ tài nguyên WAF, cách ly khỏi các workload khác.

kubectl -n vfw-waf get all
🧱

Nginx WAF + HPA

Deployment với HPA tự động 2→20 pod. ModSecurity + OWASP CRS v4. LoadBalancer Service :80/:443.

fwcloud/nginx-waf:latest
🧠

WAF Engine

Deployment 1–2 replicas. Behavioral scoring, adaptive tuning, botnet correlation, dashboard :9090.

fwcloud/waf-engine:latest
🔗

XDP API Bridge

DaemonSet chạy trên mỗi node. hostNetwork + privileged. Gọi XDP CLI, port 9100.

fwcloud/xdp-api-bridge:latest
🤖

AI Classifier

Deployment + PVC cho model Qwen3-0.6B (~379MB Q4_K_M). ClusterIP Service :8081.

llama.cpp + qwen3-waf-q4km.gguf
🔒

Secrets & ConfigMap

XDP API bearer token (Secret), WAF engine config.json (ConfigMap). Tách biệt bảo mật và cấu hình.

k8s/secrets.yaml, configmap.yaml

WAF Standalone vs. WAF K8s

Thành phần WAF Standalone WAF K8s
XDP SYN Protect systemd trên host systemd trên host (giữ nguyên)
XDP ↔ Engine CLI exec trực tiếp HTTP API qua xdp-api-bridge
Nginx WAF 1 process Auto-scale 2→20 pods (HPA)
WAF Engine 1 process K8S Deployment (restart tự động)
AI Model systemd llama-server K8S Deployment + PVC
Cấu hình File trên disk ConfigMap + Secret
Monitoring journalctl kubectl logs + metrics-server

Điều kiện triển khai

☸️

Kubernetes 1.28+

Cụm k3s hoặc k8s với metrics-server để HPA hoạt động.

🐧

Linux Kernel 5.15+

BPF/XDP support trên mỗi worker node.

📦

Container Registry

Docker Hub, ghcr.io hoặc private registry để lưu image.

💻

3+ Node

Tối thiểu 3 node, khuyến nghị 5 node cho production.

Triển khai WAF K8s cho hệ thống của bạn

Phù hợp cho hệ thống lớn, lưu lượng biến động mạnh, cần tự động co giãn và zero-downtime.