Ingress — Kubernetes’da cluster tashqarisidan ichki HTTP va HTTPS xizmatlariga kirish qoidalarini ifodalovchi API obyekti. U host nomi va URL path asosida trafikni turli Service’larga yo‘naltirishi, TLS termination va virtual hostingni sozlashi mumkin. Ingress obyektining o‘zi trafik qayta ishlamaydi; clusterda uni amalga oshiruvchi Ingress controller bo‘lishi kerak.
Obyekt va controller
Foydalanuvchi Ingress manifestida desired routing qoidalarini yozadi. Controller API’ni kuzatib, NGINX, HAProxy, Envoy, cloud load balancer yoki boshqa data plane konfiguratsiyasini yangilaydi. Controller bo‘lmasa manifest qabul qilinadi, ammo tashqi endpoint ishlamaydi.
IngressClass qaysi controller obyektni boshqarishini belgilaydi. Bir clusterda ichki va tashqi controller yoki turli jamoaga tegishli classlar bo‘lishi mumkin. Default class noaniq bo‘lsa obyekt boshqaruvchisiz qolishi yoki noto‘g‘ri joyda ochilishi mumkin.
Host va path routing
Quyidagi qoida api.example.uz/v1 trafikini api-servicega yuboradi:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: public-api
spec:
rules:
- host: api.example.uz
http:
paths:
- path: /v1
pathType: Prefix
backend:
service:
name: api-service
port:
number: 80
Exact path faqat aynan mos yo‘lni, Prefix esa segment chegaralari asosidagi prefiksni qamraydi. Controllerga xos regex annotation portable bo‘lmasligi va security tekshiruvini murakkablashtirishi mumkin.
TLS
Ingress TLS secret’da sertifikat va private key’ga murojaat qiladi. Controller client bilan TLS handshake’ni tugatib, backend’ga HTTP yoki qayta TLS orqali ulanadi. TLS termination bo‘lsa backend source connection controllerdan keladi; original client ma’lumoti ishonchli proxy header orqali uzatilishi mumkin.
Sertifikat issuance va renewal cert-manager kabi controller bilan avtomatlashtiriladi. Secretga kirish cheklanadi, wildcard sertifikatning blast radius’i hisobga olinadi. Frontend TLS mavjudligi backend aloqa ham shifrlanganini anglatmaydi.
Tashqi trafik yo‘li
| Qatlam | Vazifa |
|---|---|
| DNS | Host nomini tashqi IP’ga bog‘laydi |
| Load balancer | Trafikni controller replica’lariga yetkazadi |
| Ingress controller | TLS va L7 routingni bajaradi |
| Service | Tayyor pod endpointlarini tanlaydi |
| Pod | Application requestini qayta ishlaydi |
Muammo yuz bersa bu qatlamlar alohida tekshiriladi. DNS to‘g‘ri bo‘lsa ham load balancer health check xato, controller qoidasi noto‘g‘ri yoki Service endpointsiz bo‘lishi mumkin.
Xavfsizlik siyosati
Ingress internet chegarasi bo‘lgani uchun request hajmi, timeout, header, rate limit va WAF siyosati muhim. Annotation orqali arbitrary snippet qo‘shishga ruxsat berish ko‘p tenantli clusterda controller konfiguratsiyasiga xavf tug‘dirishi mumkin. Admission policy ruxsat etilgan host, class va annotationlarni cheklaydi.
Authentication controllerda, alohida gateway’da yoki applicationda bajarilishi mumkin. Qatlamlar bir-biriga zid policy qo‘llamasligi va auth bypass qiladigan ikkinchi endpoint qolmasligi kerak. Internal Service tasodifan LoadBalancer bilan tashqi ochilsa Ingress himoyasi chetlab o‘tiladi.
Ishonchlilik va ishlash
Controller bir nechta replica bilan turli node yoki zonaga tarqatiladi. External load balancer readiness orqali faqat sog‘lom replica’ga yuboradi. Config reload yangi connectionlarni uzmasligi va eski connectionlarni graceful tugatishi kerak.
Connection pooling backend handshake xarajatini kamaytiradi. Timeout juda qisqa bo‘lsa qonuniy uzoq request uziladi, juda uzun bo‘lsa sekin client resursni band qiladi. Access log, request ID, status, upstream latency va retry soni diagnostika uchun yig‘iladi; token va maxfiy header logdan chiqariladi.
Ingress API chegarasi
Klassik Ingress asosan HTTP(S)ning umumiy routing modelini beradi. TCP/UDP, traffic splitting, murakkab header policy va ko‘p jamoali role modeli ko‘pincha controllerga xos extension talab qiladi. Kubernetes Gateway API bu ehtiyojlarni yanada ifodali va rollarga ajratilgan resurslar bilan qamrashga yo‘naltirilgan.
Bog‘liq tushunchalar
Kubernetes, Ingress controller, Service, Load balancer, TLS termination, Reverse proxy, Gateway API