kubernetes - 是否可以将通过 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 过滤?
解决方案
推荐阅读
- swift - 在 Swift 4.1 中,具体类型不能符合具有约束关联类型的协议
- java - 阻止具有跳过元素的能力的 FIFO 队列?
- scheme - Scheme/Racket中letrec的含义
- node.js - 如何在 Angular 中保护凭证
- algorithm - 用于在 While 循环内包含收缩列表的算法的大 O 表示法
- sql - 重构 COALESCE 比较
- .net - 在通过 Http 将其发送到 Angular 之前压缩/缩小 JSONObject
- java - 线程运行时按钮 onClick() 不起作用
- crystal-reports - 上传到 .csv 时字段格式不成立
- android - Json 字符串 java bean 对象