使用 Ingress Controller 限制集群外部 ip 访问集群服务
Rancher 部署工作负载,通过 NodePort 将 Service 服务映射后,无法通过防火墙策略对集群外客户端访问进行限制,在公司研发环境内存在风险,易被扫描到。
经过查找资料,只能通过 Ingress 实现对服务访问的限制。
1. 创建测试服务
创建 nginx 工作负载用于验证,其中端口映射不能再使用 NodePort
模式,必须使用 集群 IP
,否则无法限制。
2. 创建 Ingress
- 进入集群仪表板
- 选择命名空间并进入 Ingresses 列表
-
创建 Ingress
(1)填写【规则】
(2)填写【标签注释】
# 固定写法
nginx.ingress.kubernetes.io/rewrite-target=/
# 允许单个 ip 访问
nginx.ingress.kubernetes.io/whitelist-source-range=10.232.0.43/32
# 允许 ip 范围访问 10.232.0.1-10.232.0.255
nginx.ingress.kubernetes.io/whitelist-source-range=10.232.0.0/24
# 允许多个 ip 或范围访问,逗号分隔
nginx.ingress.kubernetes.io/whitelist-source-range=10.232.0.26/32,10.232.0.43/32
其他内容无需填写,保存即可。
3. 配置 hosts 解析
将规则中配置的主机域名解析到集群 ip 即可
192.168.1.111 xf.com
4. 通过域名访问验证
http://xf.com/nginx
有访问权限的访问:
无访问权限的访问: