Зачем использовать кеширование в Ingress
Кеширование — важный инструмент для уменьшения нагрузки на бэкенд и ускорения отдачи контента пользователям.
Почему стоит использовать кеш
- Снижение нагрузки на сервисы
- Быстрая отдача при повторных запросах
- Снижение затрат и трафика
- Более стабильная работа при всплесках трафика
Кеширование с NGINX Ingress Controller
Наиболее распространённый способ — через NGINX Ingress с аннотациями.
Шаг 1: Аннотации в объекте Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app-ingress
annotations:
nginx.ingress.kubernetes.io/proxy-cache: "my-cache-zone"
nginx.ingress.kubernetes.io/proxy-cache-key: "$scheme$request_method$host$request_uri"
nginx.ingress.kubernetes.io/proxy-cache-use-stale: "error timeout updating http_500 http_502 http_503 http_504"
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-app
port:
number: 80
Шаг 2: Добавляем зону кеша в ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-configuration
namespace: ingress-nginx
data:
proxy-cache-paths: |
my-cache-zone keys_zone=my-cache-zone:10m max_size=100m inactive=60m use_temp_path=off;
⚠️ После этого может понадобиться перезапуск контроллера.
Очистка кеша и управление
- Изменение ключа кеша или аннотаций
- Управление через заголовки
Cache-Control
- Ручная очистка (требует дополнительной настройки)
Важные моменты
- Не всё кешируется (например, POST-запросы и API)
- Не забывайте об актуальности данных
Заключение
Кеширование через Ingress — простой способ повысить производительность и снизить нагрузку. Особенно полезно для статических и полудинамических страниц. С правильной настройкой вы получите заметную выгоду без изменений в коде.