Kubernetes Nginx入口忽略ConfigMap和注释

Kubernetes Nginx入口忽略ConfigMap和注释,kubernetes,nginx-ingress,Kubernetes,Nginx Ingress,我已经建立了一个k8s集群(目前有1个裸机节点,它既是主节点又是工作节点)。我还设置了Nginx入口控制器,如下所述:以下是具体步骤: kubectl应用-f common/ns和sa.yaml(无修改) kubectl应用-f rbac/rbac.yaml(无修改) kubectl apply-f通用/默认服务器机密.yaml(无修改) kubectl apply-f common/nginx config.yaml修改文件: kind:ConfigMap 版本:v1 元数据: 名称:ngin

我已经建立了一个k8s集群(目前有1个裸机节点,它既是主节点又是工作节点)。我还设置了Nginx入口控制器,如下所述:以下是具体步骤:

  • kubectl应用-f common/ns和sa.yaml
    (无修改)
  • kubectl应用-f rbac/rbac.yaml
    (无修改)
  • kubectl apply-f通用/默认服务器机密.yaml
    (无修改)
  • kubectl apply-f common/nginx config.yaml
    修改文件:
  • kind:ConfigMap
    版本:v1
    元数据:
    名称:nginx config
    名称空间:nginx入口
    数据:
    忽略无效的标题:“false”
    使用转发的标题:“true”
    转发至标头:“CF连接IP”
    代理真实ip cidr:“…ip转到此处…”
    
  • kubectl应用-f通用/入口类.yaml
    修改文件:
  • apiVersion:networking.k8s.io/v1beta1 种类:安格拉斯 元数据: 姓名:nginx 注释: ingressclass.kubernetes.io/is-default-class:“true” 规格: 控制器:nginx.org/ingres-controller
  • 这些命令:
  • kubectl apply-f common/crds/k8s.nginx.org\u virtualserver.yaml
    kubectl apply-f common/crds/k8s.nginx.org_virtualserverroutes.yaml
    kubectl apply-f common/crds/k8s.nginx.org_transportservers.yaml
    kubectl apply-f common/crds/k8s.nginx.org_policies.yaml
    
    无修改,链接:

  • kubectl apply-f守护程序集/nginx-ingres.yaml
    (无修改)
  • 我还设置了cert manager,它工作得很好(非常确定这并不重要)

    现在,当我创建一些入口资源时,它几乎可以工作。我可以从外部互联网、证书颁发机构等访问它,但不应用ConfigMap(common/nginx config.yaml),也不应用
    nginx.org/rewrite-target://$1
    等注释

    例如:

    apiVersion:networking.k8s.io/v1 种类:入口 元数据: 名称:示例com 名称空间:示例com 注释: nginx.org/rewrite-target://$1 规格: 名称:nginx tls: -主持人: -example.com secretName:示例com tls 规则: -主持人:example.com http: 路径: -路径:/api/(*) 路径类型:特定于实现 后端: 服务: 名称:api 端口: 电话:80 -路径:/(*) 路径类型:特定于实现 后端: 服务: 名称:前端 端口: 电话:80 当然,使用的是真正的域名。在这个例子中,我得到404nginx错误。在其他入口中,我传递
    /proxy body size
    注释,该注释也不起作用(无法上载大文件)

    我已经用
    kubectl-n nginx-ingres exec-it nginx-ingres snjjp bash
    exec
    进入了入口控制器吊舱,并查看了
    /etc/nginx/conf.d
    中的文件。所有文件均不包含ConfigMap或批注中指定的配置

    这就是它的样子(我删除了额外的空行并替换了域名):

    我还尝试了
    nginx.ingres.kubernetes.io/
    annotations(正如你所见,我不是专业人士,这是我在谷歌上搜索到的)。没有成功

    我正在更新我的集群,使用旧版本的k8s(我想是1.15),几天前一切正常。当然,除了入口控制器之外,我对每个服务都使用了完全相同的配置


    有什么想法吗?

    我已经找到了问题所在。我在旧的设置中使用了Kubernetes Nginx Ingress Controller,现在使用的是Nginx Ingress Controller这些实现有不同的注释(后者缺少许多有用的注释)。这真的很混乱,因为配置是相似的,人们可能会认为它们是相同的

    # configuration for example-com/example-com
    
    upstream example-com-example-com-example.com-api-80 {
            zone example-com-example-com-example.com-api-80 256k;
            random two least_conn;
    
            server 10.32.0.4:80 max_fails=1 fail_timeout=10s max_conns=0;
    }
    upstream example-com-example-com-example.com-frontend-80 {
            zone example-com-example-com-example.com-frontend-80 256k;
            random two least_conn;
    
            server 10.32.0.27:80 max_fails=1 fail_timeout=10s max_conns=0;
    }
    
    server {
            listen 80;
    
            listen 443 ssl;
    
            ssl_certificate /etc/nginx/secrets/example-com-example-com-tls;
            ssl_certificate_key /etc/nginx/secrets/example-com-example-com-tls;
    
            server_tokens on;
    
            server_name example.com;
    
            set $resource_type "ingress";
            set $resource_name "example-com";
            set $resource_namespace "example-com";
    
            if ($scheme = http) {
                    return 301 https://$host:443$request_uri;
            }
    
            location /api/(.*) {
                    set $service "api";
    
                    proxy_http_version 1.1;
    
                    proxy_connect_timeout 60s;
                    proxy_read_timeout 60s;
                    proxy_send_timeout 60s;
                    client_max_body_size 1m;
                    proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header X-Forwarded-Host $host;
                    proxy_set_header X-Forwarded-Port $server_port;
                    proxy_set_header X-Forwarded-Proto $scheme;
                    proxy_buffering on;
    
                    proxy_pass http://example-com-example-com-example.com-api-80;
            }
            location /(.*) {
                    set $service "frontend";
    
                    proxy_http_version 1.1;
    
                    proxy_connect_timeout 60s;
                    proxy_read_timeout 60s;
                    proxy_send_timeout 60s;
                    client_max_body_size 1m;
                    proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header X-Forwarded-Host $host;
                    proxy_set_header X-Forwarded-Port $server_port;
                    proxy_set_header X-Forwarded-Proto $scheme;
                    proxy_buffering on;
    
                    proxy_pass http://example-com-example-com-example.com-frontend-80;
            }
    }