【问题标题】:Apply nginx-ingress annotations at path level在路径级别应用 nginx-ingress 注释
【发布时间】:2020-06-30 02:34:51
【问题描述】:

我们正在从传统的 nginx 部署迁移到 kubernetes nginx-ingress 控制器。我正在尝试在 location 级别应用设置,但看不到如何使用注释。

例如,我们有:

server {
  listen 80;
  server_name example.com;

  location /allow-big-uploads {
    client_max_body_size 100M;
    ...
  }
}

我们翻译成这样的:

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

path 部分下添加该注释似乎不起作用。我错过了什么吗?

【问题讨论】:

    标签: nginx kubernetes nginx-ingress


    【解决方案1】:

    Annotations 只能在整个 kubernetes 资源上设置,因为它们是资源 metadata 的一部分。 ingress spec 不包括较低级别的该功能。

    如果您正在寻找更复杂的设置,traefik 为他们的入口控制器构建了一个custom resource definition,它允许每个service 进行更多配置。缺点是定义与其他入口控制器不兼容。

    【讨论】:

      【解决方案2】:

      如果您在同一主机上有 2 个位置,并且只想在一个位置上应用设置,则可以使用相同的主机创建 2 个入口,并在您感兴趣的入口上应用配置 sn-p 注释:

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

      nginx.ingress.kubernetes.io/configuration-snippet: |
      
        more_set_headers "Request-Id: $req_id";
      

      我已经尝试过这个例子并且它有效。

      但是,当我尝试通过配置 sn-p 更改 client_max_body_size 时,出现错误:

      "client_max_body_size" directive is duplicate
      

      【讨论】:

        猜你喜欢
        • 2021-05-15
        • 2022-12-14
        • 1970-01-01
        • 2018-12-12
        • 2021-10-26
        • 1970-01-01
        • 2021-05-15
        • 2021-02-15
        • 2020-04-16
        相关资源
        最近更新 更多