首页 > 解决方案 > 是否可以将通过 Nginx Ingress 访问 Google Kubernetes Engine 服务的外部 IP 列入白名单

问题描述

我有一个在 GKE 上运行的 k8s 集群。该集群使用 nginx-ingress 向 Internet 公开一些服务。我想为这些服务的一个子集配置 IP 白名单,因为我正在使用nginx.ingress.kubernetes.io/whitelist-source-range,例如:

kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/add-base-url: "true"
    nginx.ingress.kubernetes.io/proxy-body-size: 30M
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/whitelist-source-range: 81.x.x.x
  generation: 7
  name: my-apps
  namespace: client-apps
  spec:
  rules:
  - host: somehost.com
    http:
      paths:
      - backend:
          serviceName: app1
          servicePort: 8080

使用此配置,我的服务无法从具有该 IP 的客户端访问。在 NGINX 入口日志中,我看到:

10.0.0.36 - [10.0.0.36] - - [18/Feb/2019:10:34:34 +0000] "GET /xxx HTTP/2.0" 403 0 " https://xxx " "Mozilla/5.0 (Windows NT 10.0;Win64;x64) AppleWebKit/537.36(KHTML,如 Gecko)Chrome/72.0.3626.109 Safari/537.36"

因此入口阻止了来自 10.0.0.36 的请求的访问。但是实际的客户端 IP 是 81.xxx 有没有办法按原始 IP 过滤?

标签: kubernetesgoogle-kubernetes-enginekubernetes-ingressnginx-ingress

解决方案


推荐阅读