TKE nginx-ingress 开启ip白名单限制和透传client源IP

背 景

最近TKE迎来了nginx-ingress 插件的到来,此篇文章将结合TKE nginx-ingress插件,实现IP白名单配置和service透传client源IP的功能

在传统nginx上,如果想要对nginx 里面的虚拟主机做白名单访问控制很easy。但在kubernetes中,如何通过 ingress resource配置文件来达到这个效果呢?


安装nginx-ingress

1, 控制台 组件管理 中点击”新建“找到 nginxingress组件,勾选 点击”完成“ 进行安装nginx-ingress 插件

注意: 如果nginxingress 插件是灰色的,且无法勾选,请联系腾讯云助手开白,开白后在执行安装。

安装完成具体表现:kube-system命名空间下deployment下创建一个tke-ingress-nginx-controller-operator的pod。

创建 nginx-ingress-controller

1,TKEk控制台操作:

控制台-组件管理 ——》 点击 nginx-ingress-controller ——》跳转页面

点击 新增nginx-ingress实例 ——》弹出页面

配置nginx-ingress-controller

nginx-ingress-controller 创建成功的表现是:

kube-system命名空间下有一个 <name>+ingress-nginx-controller 的pod (实践表现为: ng-ing-ingress-nginx-controller)

2,nginx-ingress-controller配置X-Forwarded-For

X-Forwarded-For(XFF) 在客户端访问服务器的过程中如果需要经过HTTP代理或者负载均衡服务器,可以被用来获取最初发起请求的客户端的IP地址,这个消息首部成为事实上的标准。在消息流从客户端流向服务器的过程中被拦截的情况下,服务器端的访问日志只能记录代理服务器或者负载均衡服务器的IP地址。如果想要获得最初发起请求的客户端的IP地址的话,那么 X-Forwarded-For 就派上了用场。

修改nginx-ingress-controller 的cm配置文件

由于TKE 控制台无法编辑kube-system命名空间下的configmap,目前通过登入节点,命令行编辑nginx-ingress-controller 的configmap ,data下添加参数 use-forwarded-headers: "true"

TKE 控制台操作:

2,TKE控制台 配置service

透传Client源IP到pod,是在创建后端service时选择ExternalTrafficPolicy:Local, 支持此参数设置的service类型是: 公网访 问,VPC内网访问,主机端口访问。 本次测试选择公网访问类型的

创建ingress 配置白名单

1,配置 ingress

访问地址: http://115.159.130.14

配置白名单: 添加方式直接写annotation,

添加参数为: nginx.ingress.kubernetes.io/whitelist-source-range: 192.168.4.15 (允许Client IP为192.168.4.15的主机访问)

测试

1,白名单IP限制

[root@vm-4-15-centos ~]# hostname -I     #此主机IP为开白主机
192.168.4.15 

[root@vm-4-15-centos ~]# curl http://115.159.130.14/      # 可以正常访问nginx服务
Hello Word

[root@vm-4-15-centos ~]# ssh root@192.168.4.3             #登入192.168.4.3主机访问  
root@192.168.4.3's password: 
Last failed login: Wed Dec 30 19:00:42 CST 2020 from 117.48.234.141 on ssh:notty
There were 17 failed login attempts since the last successful login.
Last login: Wed Dec 30 19:00:04 2020 from 192.168.4.15


[root@VM-4-3-centos ~]# curl http://115.159.130.14/   #拒绝此主机访问      
curl: (7) Failed connect to 115.159.130.14:80; 拒绝连接

白名单IP访问,非白名单IP拒绝访问 测试成功 !

2,透传client源IP测试

[root@vm-4-15-centos ~]# curl 115.159.130.14   #测试访问
Hello Word

查看nginx access.log

测试完成!

参考文档:

https://cloud.tencent.com/developer/article/1628571

本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
TKE nginx-ingress 开启ip白名单限制和透传client源IP
最近TKE迎来了nginx-ingress 插件的到来,此篇文章将结合TKE nginx-ingress插件,实现IP白名单配置和service透传client...
<<上一篇
下一篇>>