Как увеличить лимит на размер загружаемого файла для Ingress контроллера

Оцените статью

После переноса Next Cloud в Kubernetes оказалось, что типовой настройки мне не хватило и файлы не пролезают через Ingress контроллер и чтобы увеличить лимит на размер загружаемого файла для Ingress‑контроллера, нужно настроить соответствующие параметры и способ зависит от типа контроллера.

NGINX Ingress Controller

Есть два основных способа:

Через аннотации в ресурсе Ingress (этот метод я и использовал и он работает, остальные поискал по интернету может кому пригодится)

Добавьте аннотации в манифест Ingress:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "50m"  # лимит размера тела запроса
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "30"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "60"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "60"
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-service
            port:
              number: 80

Через ConfigMap контроллера

Отредактируйте ConfigMap для NGINX Ingress Controller:

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-ingress-controller
  namespace: ingress-nginx
data: Normally, this would be the ConfigMap data
  proxy-body-size: "50m"
  proxy-connect-timeout: "30"
  proxy-send-timeout: "60"
  proxy-read-timeout: "60"

Важные аннотации для NGINX:

  • nginx.ingress.kubernetes.io/proxy-body-size — максимальный размер тела запроса (например, «50m» для 50 МБ, «0» — без ограничений);
  • nginx.ingress.kubernetes.io/proxy-connect-timeout — таймаут подключения к бэкенду (в секундах);
  • nginx.ingress.kubernetes.io/proxy-send-timeout — таймаут отправки данных к бэкенду;
  • nginx.ingress.kubernetes.io/proxy-read-timeout — таймаут чтения данных от бэкенда.

Traefik Ingress Controller

Используйте аннотации в IngressRoute:

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: my-ingressroute
spec:
  entryPoints:
    - web
  routes:
  - match: PathPrefix(`/`)
    kind: Rule
    services:
    - name: my-service
      port: 80
    middlewares:
    - name: large-upload
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: large-upload
spec:
  headers:
    customRequestHeaders:
      X-Max-Body-Size: "52428800"  # 50 МБ в байтах

Либо настройте через ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata:
  name: traefik
data:
  traefik.toml: |
    [entryPoints.web]
      address = ":80"
      [entryPoints.web.http.middlewares]
        [entryPoints.web.http.middlewares.large-upload.headers]
          customRequestHeaders = { "X-Max-Body-Size" = "52428800" }

HAProxy Ingress Controller

Используйте аннотации:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    haproxy.org/max-body-size: "50m"
    haproxy.org/timeout-client: "60s"
    haproxy.org/timeout-server: "60s"
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-service
            port:
              number: 80

Istio Ingress Gateway

Настройте через VirtualService:

apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: my-virtualservice
spec:
  hosts:
  - "example.com"
  gateways:
  - my-gateway
  http:
  - headers:
      request:
        set:
          x-max-body-size: "50m"
    route:
    - destination:
        host: my-service
        port:
          number: 80

Похожие записи

Настройка VS Code AI Chat для работы со сторонним OpenAI провайдером.

VS Code AI Chat — это расширение, которое позволяет разработчикам взаимодействовать с моделями искусственного интеллекта (AI) прямо в редакторе Visual Studio Code. В стандартной конфигурации оно работает с OpenAI API,…

ProxyChains специфическая работа с прокси-серверами в UNIX/Linux-системах

В современном мире, где вопросы конфиденциальности и безопасности в сети становятся всё более актуальными, инструменты для работы с прокси-серверами приобретают особую ценность. Одним из таких инструментов является программа ProxyChains, которая…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Настройка VS Code AI Chat для работы со сторонним OpenAI провайдером.

Настройка VS Code AI Chat для работы со сторонним OpenAI провайдером.

ProxyChains специфическая работа с прокси-серверами в UNIX/Linux-системах

ProxyChains специфическая работа с прокси-серверами в UNIX/Linux-системах

Полное руководство по установке и настройке мониторинга с Grafana и Prometheus: от установки до первого дашборда

Полное руководство по установке и настройке мониторинга с Grafana и Prometheus: от установки до первого дашборда

Резервное копирование баз данных MySQL в Linux: краткое руководство с примерами

Резервное копирование баз данных MySQL в Linux: краткое руководство с примерами

Клонирование работающего Linux-сервера с помощью rsync (немного из практики).

Клонирование работающего Linux-сервера с помощью rsync (немного из практики).

Установка Keycloak в Ubuntu 24.04: от тестового запуска до production-конфигурации

Установка Keycloak в Ubuntu 24.04: от тестового запуска до production-конфигурации