【问题标题】:Kubernetes whitelist-source-range blocks instead of whitelist IPKubernetes whitelist-source-range 块而不是白名单 IP
【发布时间】:2017-12-27 10:49:37
【问题描述】:

在 GKE 上运行 Kubernetes

使用 helm 安装最新稳定版本的 Nginx 控制器。

一切正常,除了添加 whitelist-source-range 注释会导致我完全被我的服务锁定。

入口配置

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: staging-ingress
  namespace: staging
  annotations:
    kubernetes.io/ingress.class: nginx
    ingress.kubernetes.io/whitelist-source-range: "x.x.x.x, y.y.y.y"
spec:
  rules:
    - host: staging.com
      http:
        paths:
        - path: /
          backend:
            serviceName:staging-service
            servicePort: 80

我连接到控制器 pod 并检查了 nginx 配置,发现:

# Deny for staging.com/
geo $the_real_ip $deny_5b3266e9d666401cb7ac676a73d8d5ae {
    default 1;

    x.x.x.x 0;
    y.y.y.y 0;
}

看起来他将我拒之门外,而不是将此 IP 列入白名单。但它也锁定了所有其他地址......我从 staging.com 主机获得 403。

【问题讨论】:

  • 澄清一下,此配置将锁定来自不是 x.x.x.x 或 y.y.y.y 的 IP 的每个请求。您正在发送来自那些获得 403 响应的 IP 的请求?

标签: nginx kubernetes google-compute-engine


【解决方案1】:

是的。不过,我自己想通了。您的服务必须启用externalTrafficPolicy: Local。这意味着应该使用实际的客户端 IP 而不是内部集群 IP。

为了完成这个运行 kubectl patch svc nginx-ingress-controller -p '{"spec":{"externalTrafficPolicy":"Local"}}'

【讨论】:

  • 如果这不能解决整个问题,请重新启动您的 nginx 控制器 pod。之后它应该可以工作了。
【解决方案2】:

您的 nginx 控制器服务必须设置为externalTrafficPolicy: Local。这意味着将使用实际客户端 IP 而不是集群的内部 IP。

您需要从kubectl get svc 命令中获取真实的服务名称。该服务类似于:

NAME                                          TYPE           CLUSTER-IP     EXTERNAL-IP    PORT(S)                      AGE
nobby-leopard-nginx-ingress-controller        LoadBalancer   10.0.139.37    40.83.166.29   80:31223/TCP,443:30766/TCP   2d

nobby-leopard-nginx-ingress-controller 是您要使用的服务名称。

要完成这个,运行 kubectl patch svc nobby-leopardnginx-ingress-controller -p '{"spec":{"externalTrafficPolicy":"Local"}}'

当你设置一个新的 nginx 控制器时,你可以使用下面的命令:

helm install stable/nginx-ingress \
  --namespace kube-system \
  --set controller.service.externalTrafficPolicy=Local`

让 nginx 入口控制器在安装后接受白名单。

【讨论】:

  • nginx 白名单会针对哪个标头?
猜你喜欢
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2020-03-14
  • 2020-06-23
  • 1970-01-01
  • 2020-07-15
  • 2022-08-16
  • 2021-05-02
相关资源
最近更新 更多