Kong使用ip-pestriction插件配置IP白名单

解决kong 代理发给plugin 的remote_addr不是真实IP, 为pod ip 问题

修改helm values.yaml

...
proxy:
  annotations:
    prometheus.io/port: "9542"
    prometheus.io/scrape: "true"
  enabled: true
  http:
    containerPort: 8080
    enabled: true
    hostPort: 80
  ingress:
    enabled: false
  labels:
    enable-metrics: true
  tls:
    containerPort: 8443
    enabled: true
    hostPort: 443
  externalIPs:
    - 172.16.187.71
    - x.x.x.x
  externalTrafficPolicy: Local # 关键配置, Kong 代理默认情况下会将自己的 IP 地址作为 remote_addr 值发送给后端服务,配置此项会保留ClientIP, 不需要其它任何配置
  type: NodePort
 ...

更新 kong 服务

helm upgrade --install kong-chainstorage kong-2.20.2.tgz --namespace kong -f values.yam

配置ip-pestriction插件

手动配置插件在 Auth 相关插件前生效

相关调试命令

因插件配置问题屋kong admin 不能访问时,使用curl 调用 admin api 禁用 ip-restriction 插件

curl -k  -X PATCH https://10.108.62.202:8444/plugins/kong-admin-ip-restriction -d 'enabled=false

测试插件生效

curl  https://kong-admin.example.io/api

# 显示如下
{
  "message":"Your IP address is not allowed"
}%

参考

https://docs.konghq.com/kubernetes-ingress-controller/latest/guides/preserve-client-ip/

https://docs.konghq.com/gateway/latest/reference/configuration/#real_ip_header

Last updated