web-dev-qa-db-fra.com

Erreur 413 avec le contrôleur d'entrée Kubernetes et Nginx

J'essaie de changer le client_max_body_size value, donc mon entrée nginx ne retournera pas d'erreur 413.

J'ai testé quelques solutions.
Voici ma carte de configuration de test:

kind: ConfigMap
apiVersion: v1
data:
  proxy-connect-timeout: "15"
  proxy-read-timeout: "600"
  proxy-send-timeout: "600"
  proxy-body-size: "8m"
  hsts-include-subdomains: "false"
  body-size: "64m"
  server-name-hash-bucket-size: "256"
  client-max-body-size: "50m"
metadata:
  name: nginx-configuration
  namespace: ingress-nginx
  labels:
    app: ingress-nginx

Ces modifications n'ont aucun effet, après le chargement, dans le journal du contrôleur nginx, je peux voir les informations sur le rechargement de la carte de configuration, mais les valeurs dans nginx.conf sont les mêmes:

root@nginx-ingress-controller-95db685f5-b5s6s:/# cat /etc/nginx/nginx.conf | grep client_max                                                                                                       
                        client_max_body_size                    "8m";
                        client_max_body_size                    "1m";
                        client_max_body_size                    "1m";
                        client_max_body_size                    "1m";
                        client_max_body_size                    "1m";
                        client_max_body_size                    "1m";
                        client_max_body_size                    "1m";
                        client_max_body_size                    "1m";
                        client_max_body_size                    "1m";
                        client_max_body_size                    "1m";
                        client_max_body_size                    "1m";
                        client_max_body_size                    "1m";
                        client_max_body_size                    "1m";

Ma configuration nginx-controller utilise cette image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.13.0

Comment puis-je forcer le nginx à changer la valeur? Je dois le changer globalement, pour toutes mes entrées.

12
Djent

Vous pouvez utiliser annotationnginx.ingress.kubernetes.io/proxy-body-size pour définir l'option max-body-size directement dans votre objet Ingress au lieu de modifier un ConfigMap de base.

Voici l'exemple d'utilisation:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-app
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "50m"
...
29
Anton Kostenko

Pour le définir globalement, cette documentation configmap.md peut être utile. Il s'avère que la variable à définir est proxy-body-size, ne pas client-max-body-size.

Lorsque vous déployez le graphique de barre, vous pouvez définir --set-string controller.config.proxy-body-size="4m".

6
SoJeN