Нередко возникает задача разрешить доступ к какому-либо приложению в Kubernetes кластере только для определённых подсетей. В случае с ingress-nginx (не путаем ingress-nginx и nginx-ingress) классический подход это использование аннотации nginx.ingress.kubernetes.io/whitelist-source-range
Например так
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: restricted-app annotations: nginx.ingress.kubernetes.io/whitelist-source-range: 192.168.0.0/16,172.16.0.0/12,10.0.0.0/8 spec: ingressClassName: nginx rules: - host: restricted-app.example.com http: paths: - path: / pathType: Prefix backend: service: name: app-service port: number: 3000
У этого подхода есть несколько недостатков:
- аннотации нужно обновить в каждом приложении когда изменится список разрешённых подсетей
- в ingress-nginx контроллере могут найти уязвимость которая позволит обойти ограничение доступа