Nginx ingress 忽略 ConfigMap 和注释

2023-11-29

我已经设置了一个k8s集群(目前1个裸机节点,既是master又是worker)。我还设置了 Nginx 入口控制器,如下所述:https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests/以下是具体步骤:

  1. kubectl apply -f common/ns-and-sa.yaml https://github.com/nginxinc/kubernetes-ingress/blob/release-1.11/deployments/common/ns-and-sa.yaml(无修改)
  2. kubectl apply -f rbac/rbac.yaml https://github.com/nginxinc/kubernetes-ingress/blob/release-1.11/deployments/rbac/rbac.yaml(无修改)
  3. kubectl apply -f common/default-server-secret.yaml https://github.com/nginxinc/kubernetes-ingress/blob/release-1.11/deployments/common/default-server-secret.yaml(无修改)
  4. kubectl apply -f common/nginx-config.yaml https://github.com/nginxinc/kubernetes-ingress/blob/release-1.11/deployments/common/nginx-config.yaml修改后的文件:
kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-config
  namespace: nginx-ingress
data:
  ignore-invalid-headers: "false"
  use-forwarded-headers: "true"
  forwarded-for-header: "CF-Connecting-IP"
  proxy-real-ip-cidr: "...IPs go here..."
  1. kubectl apply -f common/ingress-class.yaml https://github.com/nginxinc/kubernetes-ingress/blob/release-1.11/deployments/common/ingress-class.yaml修改后的文件:
apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
  name: nginx
  annotations:
    ingressclass.kubernetes.io/is-default-class: "true"
spec:
  controller: nginx.org/ingress-controller
  1. 这些命令:
kubectl apply -f common/crds/k8s.nginx.org_virtualservers.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

没有修改,链接:

  • https://github.com/nginxinc/kubernetes-ingress/blob/release-1.11/deployments/common/crds/k8s.nginx.org_virtualservers.yaml
  • https://github.com/nginxinc/kubernetes-ingress/blob/release-1.11/deployments/common/crds/k8s.nginx.org_virtualserverroutes.yaml
  • https://github.com/nginxinc/kubernetes-ingress/blob/release-1.11/deployments/common/crds/k8s.nginx.org_transportservers.yaml
  • https://github.com/nginxinc/kubernetes-ingress/blob/release-1.11/deployments/common/crds/k8s.nginx.org_policies.yaml
  1. kubectl apply -f daemon-set/nginx-ingress.yaml https://github.com/nginxinc/kubernetes-ingress/blob/release-1.11/deployments/daemon-set/nginx-ingress.yaml(无修改)

我还设置了证书管理器,它运行良好(很确定这并不重要)。

现在,当我创建一些 Ingress 资源时,它almost作品。我可以从外部互联网访问它,证书颁发工作等。但是没有应用ConfigMap(common/nginx-config.yaml),并且注释如下nginx.org/rewrite-target: /$1也没有应用。

Example:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-com
  namespace: example-com
  annotations:
    nginx.org/rewrite-target: /$1
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - example.com
    secretName: example-com-tls
  rules:
  - host: example.com
    http:
      paths:
      - path: /api/(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: api
            port:
              number: 80
      - path: /(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: frontend
            port:
              number: 80

当然,使用的是真实域名。在此示例中,我收到 404 nginx 错误。在其他 Ingress 我通过/proxy-body-size注释,这也不起作用(无法上传大文件)。

I've exec编辑到入口控制器 Pod 中kubectl -n nginx-ingress exec -it nginx-ingress-snjjp bash并查看了文件/etc/nginx/conf.d。所有文件均不包含 ConfigMap 或注释中指定的配置。

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

# 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;
        }
}

我也尝试过nginx.ingress.kubernetes.io/注释(如你所见,我不是专业人士,这是我在谷歌上搜索的)。没有成功。

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

有任何想法吗?


我已经发现出了什么问题。我正在使用 Kubernetes Nginx Ingress Controllerhttps://kubernetes.github.io/ingress-nginx/使用我的旧设置,现在我使用 Nginx Ingress Controllerhttps://www.nginx.com/products/nginx-ingress-controller/这些实现有不同的注释(后者缺少许多有用的注释)。这确实非常令人困惑,因为配置相似,人们可能会认为它们是相同的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx ingress 忽略 ConfigMap 和注释 的相关文章

随机推荐

  • 显示进度条直到视频加载 IOS7

    您好 在我的应用程序中 我正在使用 URL 播放视频 我正在从我的服务器传递视频 URL 现在问题是播放视频需要很长时间 所以我想显示进度条 直到加载视频 所以我使用了 MBProgressHUD 作为进度条 它显示了进度条 但视频没有播放
  • 如何从 SwaggerResponse 模型中隐藏/排除属性?不是请求而是响应

    以下是需要从 Swagger 中排除 VersionRange 属性的类ResponseModel public class Dependency public string Name get set JsonConverter typeo
  • GridView 中的 ListView 不滚动?

    我有一个显示项目的 GridView 每个项目都是一个 ListView 问题是我无法滚动 ListView 项目 似乎 GridView 正在获取焦点或阻止它从 ListViews 获得焦点 有解决方法吗 thanks EDIT 这是我的
  • 如何滚动顶部一个内容由 AngularDart 管理的 div?

    我有一个div保存一些聊天记录 我想为div内容变满时滚动 我在另一个项目中使用 jQuery 来完成这个工作 但是实现这一目标的正确 AngularDart 方法是什么 稍微简化一下 在我的 HTML 中我有 div class chat
  • 如何让 Google App Engine 具有从数据库下载内容的下载链接?

    好吧 假设我有一个数据库 Class Content db Model code db TextProperty 我想在网页上提供一个下载链接来下载以下内容code 我该怎么做 我正在使用 python 和 jinja2 您将创建一个发送回
  • 使用 Spring、JPA 和 Hibernate 访问 Jboss 中配置的多个数据库/数据源

    我有一个要求 我需要配置一个基于 Spring 的应用程序以使用两个数据库 我们有两个数据库 一个用于保存实时数据 另一个数据库用作数据仓库并包含存档数据 其结构与实时数据库完全相同 为了简单起见 假设有一个搜索产品的请求 应用程序应该做的
  • 在 MVC 中将值从控制器传递到视图

    我有一个使用数据脚手架生成的视图 该视图有一个文本字段 创建视图 div class form group Html LabelFor model gt model GroupId htmlAttributes new class cont
  • 无法在 Conda 环境中安装 Bioconda 软件包

    我正在尝试安装一些软件包Bioconda 频道使用 Conda 但即使添加了通道 我也会遇到以下错误 C Users matti gt conda install c bioconda pybedtools Solving environm
  • 将平面 JSON/字典映射到模型(包含子类)

    我想将一个平面json字符串转换为一个模型 目标类有子类 并且平面json具有所有带前缀的子类对象 就像 classname property FirstName Joey LastName Billy EmploymentDetails
  • Json Schema:仅当深层嵌套对象中存在特定属性时才需要属性

    我需要构建一个 json 模式 草案 4 该模式需要基于另一个嵌套对象中属性的存在的属性 我已经搜索并尝试了很多东西 anyOf oneOf not dependency 但没有运气 也许这在 json 模式中是不可能的 这是我的简化架构
  • 如何在 python 2.4 中安全地打开/关闭文件

    我目前正在使用 Python 编写一个小脚本 以便在我们的一台服务器上使用 服务器仅安装了Python 2 4 4 我直到 2 5 发布才开始使用 Python 所以我习惯了这种形式 with open file txt r as f do
  • 如何将 std::find/std::find_if 与自定义类对象向量一起使用?

    我有一个代表用户的类 名为Nick我想用std find if在它上面 我想在其中查找用户列表向量是否包含与我传入的相同用户名包含的对象 我做了一些尝试 尝试创建一个新的Nick我想测试并重载的用户名对象 operator然后尝试使用fin
  • WebAPI 返回 XML

    我希望我的 WEB API 方法将 XML 对象返回给调用应用程序 目前它只是将 XML 作为字符串对象返回 这是不可以吗 如果是这样 您如何告诉 webapi get 方法它正在返回 XML 类型的对象 Thanks 编辑 Get 方法的
  • 在 SQL Server 中使用 HashBytes 从数据库返回不同的结果

    我尝试计算某个值的 md5 哈希值 但得到了一个奇怪的结果 我以两种不同的方式运行它 SELECT HASHBYTES md5 ZLA PASSWORD ZLA PASSWORD len ZLA PASSWORD FROM ZLA PASS
  • 组间语音识别API

    有关于此的任何 API 或任何帮助 请告诉我 我在想这是通过与服务器交互来实现的 其中将包含语音识别解析器或 API 等 我正在开发一个 iPhone 应用程序 我必须在其中实现语音识别 四名成员将他们喜欢的话语 通过说出 一一存储在iPh
  • 从文件中读取多行并根据开始和结束模式将它们组合成一行?

    我正在编写一个程序来尝试从我拥有的文本文件中清理数据 该文件包含我和朋友之间的短信 因此它看起来像这样的格式 06 07 2016 21 44 Friend 1 Sure So there s usually a date set by t
  • 如何从 SimpleHTTPServer 获取客户端 IP

    使用以下命令构建一个简单的文件服务器SimpleHTTPServerPython 中的模块 但是当我尝试从连接客户端获取 IP 时遇到问题 这是我所拥有的 import SimpleHTTPServer Handler SimpleHTTP
  • 如何将批处理文件输出到一行?

    我是脚本编写新手 所以我需要一些帮助 我找了两天了 没明白 我正在做的是扫描目录中的特定文件 然后计算结果并将其通过管道传输到文件 dir DONE find 04338 c gt gt 04338 txt 所以结果看起来像这样 14 14
  • 处理远程通知

    我正在阅读如何处理苹果开发者指南上的远程通知 我的问题有两个 这句话的解释是什么 当应用程序未运行时发送通知 前景 未在前台运行涵盖了后台和未运行或仅处于后台状态 根据解释 以下句子 在运行 iOS 的设备上点击应用程序图标 应用程序调用相
  • Nginx ingress 忽略 ConfigMap 和注释

    我已经设置了一个k8s集群 目前1个裸机节点 既是master又是worker 我还设置了 Nginx 入口控制器 如下所述 https docs nginx com nginx ingress controller installatio