Запретить доступ к маршруту за пределами кластера kubernetes

Я работаю с большим монолитным приложением с некоторыми частными маршрутами. Эти частные маршруты в настоящее время управляются простым классическим сервером nginx.

Мне нужно перенести это в Kubernetes, и я должен запретить любой внешний доступ к этим маршрутам. Я использую GKE, и, насколько мне известно, приватизировать маршруты можно внутри контроллера nginx-ingress.

Я пытаюсь использовать фрагмент сервера, но, похоже, он не работает. Вот текущий код:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    kubernetes.io/tls-acme: "true"
    nginx.org/websocket-services: service-ws
    nginx.org/server-snippet: |
      location /private {
        allow 10.100.0.0/16; #Pods IPs
        allow 10.200.0.0/16; #Pods IPs
        deny all; 
      }
  generation: 3

В результате маршруты /private всегда возвращают 200 вместо 401/403. Я также пытался создать перенаправление вместо разрешения/запрета, а также получить 200 вместо 301 перенаправления.

У вас есть идеи или советы, как это сделать?


person Vincent    schedule 10.01.2019    source источник
comment
Возможно, простым способом было бы запретить или избежать входящего пути для этих маршрутов, также вы рассматривали возможность внесения в белый список своих частных IP-адресов.   -  person fatcook    schedule 10.01.2019
comment
Благодарю вас! Хитрость заключалась в том, что префикс не актуален, как я упоминаю в своем ответе, который я только что написал.   -  person Vincent    schedule 14.01.2019


Ответы (1)


Следуя многим ссылкам, хитрость заключалась в том, что префикс не актуален в большинстве документов:

Вот рабочий образец:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    annotations:
        kubernetes.io/ingress.class: nginx
        nginx.ingress.kubernetes.io/server-snippet: |-
            location /management_api {
                allow 1.2.3.4/16;  # Pod address range
                allow 1.3.4.5/16;   # Pod address range
                deny all;

                proxy_http_version 1.1;
                proxy_redirect off;
                proxy_intercept_errors on;
                proxy_set_header Connection "";
                proxy_set_header X-CF-Visitor $http_cf_visitor;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Host $host;
                proxy_set_header X-Forwarded-Port $server_port;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_pass http://10.11.12.13;
            }

Наслаждаться!

person Vincent    schedule 14.01.2019