Зачем использовать кеширование в 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 — простой способ повысить производительность и снизить нагрузку. Особенно полезно для статических и полудинамических страниц. С правильной настройкой вы получите заметную выгоду без изменений в коде.