Как добавить блокирующие IP-правила на каждом nginx -входящем хосте - PullRequest
0 голосов
/ 12 февраля 2020

Я много искал и не нашел решения. Я хочу заблокировать / разрешить IP-адреса для каждого определения хоста на nginx -адрес, а не на местах.

Это ingress.yaml:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-nginx
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: test1.test.com
    #Blocking rules here, only affecting test1.test.com domain
    http:
      paths:
      - path: /
        backend:
          serviceName: wordpressA
          servicePort: 80
  - host: test2.test.com
    #Blocking rules here, only affecting test2.test.com domain
    http:
      paths:
      - path: /
        backend:
          serviceName: wordpressB
          servicePort: 80 

Большое спасибо за ваше время

1 Ответ

0 голосов
/ 12 февраля 2020

Вам нужно разделить эти host определения на отдельные ingress правила.

Затем вы можете использовать аннотацию к диапазону белого списка , используя следующие annotation: nginx.ingress.kubernetes.io/whitelist-source-range

Примерно так:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: app1-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/whitelist-source-range: "10.0.0.0/24"
spec:
  rules:
  - host: app1.com
    http:
      paths:
      - path: /
        backend:
          serviceName: app1-service
          servicePort: http
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: app2-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/whitelist-source-range: "10.0.0.0/24"
spec:
  rules:
  - host: app2.com
    http:
      paths:
      - path: /
        backend:
          serviceName: app2-service
          servicePort: http

Вы также можете использовать snipper сервера и добавить nginx config в yaml.

Что-то вроде это:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/server-snippet:
location / {
  # block one workstation
  deny    192.168.1.1;
  # allow anyone in 192.168.1.0/24
  allow   192.168.1.0/24;
  # drop rest of the world 
  deny    all;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...