Estamos migrando de una implementación nginx tradicional a un controlador de entrada nginx de kubernetes. Estoy tratando de aplicar la configuración a nivel de location , pero no puedo ver cómo hacerlo con las anotaciones.
Por ejemplo, teníamos:
server { listen 80; server_name example.com; location /allow-big-uploads { client_max_body_size 100M; ... } }Y lo traducimos a algo como esto:
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: web-ingress annotations: nginx.ingress.kubernetes.io/proxy-body-size: 100m <-- this now applies globally spec: rules: - host: example.com http: paths: - path: /allow-big-uploads backend: serviceName: example-svc servicePort: 5009 Agregar esa anotación en la sección de path no parece funcionar. ¿Me estoy perdiendo de algo?
Las anotaciones solo se pueden establecer en todo el recurso de kubernetes, ya que forman parte de los metadatos del recurso. La especificación de ingreso no incluye esa funcionalidad en un nivel inferior.
Si está buscando configuraciones más complejas, traefik ha creado una definición de recursos personalizada para su controlador de entrada que permite más configuraciones por servicio . La desventaja es que la definición no es compatible con otros controladores de ingreso.
Si tiene 2 ubicaciones en el mismo host y desea aplicar una configuración en una sola ubicación, puede crear 2 entradas con los mismos hosts y aplicar en la entrada que le interesa la anotación del fragmento de configuración:
nginx.ingress.kubernetes.io/configuration-snippet: | more_set_headers "Request-Id: $req_id";Lo he intentado para este ejemplo y funciona.
Sin embargo, cuando trato de cambiar client_max_body_size a través del fragmento de código de configuración, aparece el error:
"client_max_body_size" directive is duplicate