Запретить доступ к маршруту вне кластера kubernetes - PullRequest
0 голосов
/ 10 января 2019

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

Мне нужно перенести это в Kubernetes, и я должен запретить любой внешний доступ к этим маршрутам. Я использую GKE и AFAIK, приватизировать маршруты можно в контроллере 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

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

У вас есть какие-нибудь идеи или советы, чтобы сделать эту работу?

1 Ответ

0 голосов
/ 14 января 2019

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

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

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;
            }

Наслаждайтесь!

...