Можем ли мы НЕ установить nginx .ingress.kubernetes.io / client-body-timeout: '120' с использованием входных аннотаций? - PullRequest
1 голос
/ 26 мая 2020

Значение указанной аннотации по умолчанию - 60 секунд; Я хочу изменить его значение на 120 se c. Я добавил это как аннотацию во входящий файл ресурсов, но, похоже, он не работает.

Поскольку мое тело запроса довольно велико, я получаю 408 с входящего http-сервера сразу после 60 se c только ;

Где еще я могу определить эту аннотацию, если она не разрешена в самом входящем файле?

На следующей странице эта аннотация не упоминается; Это потому, что он не предназначен для добавления в качестве аннотации?

https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations

фрагмент входящего ресурса:

kind: Ingress
metadata:
  name: app-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /my-app
    nginx.ingress.kubernetes.io/client-header-buffer-size: "1M"
    nginx.ingress.kubernetes.io/client-header-timeout: "60"
    nginx.ingress.kubernetes.io/client-body-buffer-size: "1M"
    nginx.ingress.kubernetes.io/client-body-timeout: "120"
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/configuration-snippet: |
        proxy_set_header custom-header $1;
spec:
  rules:
  - http:
      paths:
      - path: /(UK)/my-app/(.*)$
        backend:
          serviceName: test
          servicePort: 80

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Добавление в ответ HelloWorlds, если кто-то хочет предоставить эту аннотацию глобально с помощью Kubernetes-версии Ingress, тогда можно выполнить следующие шаги:

  1. Проверьте, в каком пространстве имен запущен модуль входа. В основном имя пространства имен будет примерно таким: -ingress-some-string- .

    $ kubectl get ns

    Допустим, пространство имен: 'ingress- nginx '

  2. Теперь, когда пространство имен известно, проверьте модули внутри этого пространства имен.

    $ kubectl get pods -n ingress- nginx

    Допустим вы получите модуль примерно так: 'ingress- nginx -controller-abcdefg'

  3. Проверьте конфигурационную карту, что этот модуль использует следующую команду:

    $ kubectl get pod ingress- nginx -controller-abcdefg -n ingress- nginx -o yaml | grep configmap

    Вы получите что-то вроде: --configmap = $ {POD_NAMESPACE} / nginx -configuration

  4. Теперь вам нужно создать конфигурацию карта с указанным выше именем с требуемыми и поддерживаемыми конфигурациями Kubernetes Ingress.

    $ cat global-configmap.yaml


    apiVersion: v1

    kind: ConfigMap

    meta:

     name: nginx-configuration
    
     namespace: ingress-nginx
    

    data:

     client-body-timeout: "120"   # default value is 60 seconds
    
  5. Теперь примените эту конфигурационную карту yaml.

    $ kubectl apply -f global-configmap.yaml

1 голос
/ 26 мая 2020

Подводя итог нашему разговору в комментариях:

Есть два Nginx контроллера входа; Один контроллер nginx обслуживается сообществом kubernetes, а другой nginx (компания, создавшая продукт nginx). Вот репозиторий github для Nginx контроллера входа , а здесь kubernetes nginx controller .


Nginx контроллер, предоставленный kubernetes, не Не допускается установка client-body-timeout с аннотацией. Вот ссылка на репозиторий github с кодом аннотации . Это означает, что вам остается либо

  • глобальная установка этого параметра, либо
  • открытие запроса функции на github и ожидание, пока кто-нибудь его реализует.
Параметр

client-body-timeout может быть установлен только через глобальную конфигурацию (как указано в документации ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...