拒绝访问Kubernetes集群之外的路由

时间:2019-01-10 09:23:52

标签: kubernetes google-kubernetes-engine nginx-ingress

我正在处理带有一些私有路由的大型单片应用程序。这些私有路由目前由普通的经典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

结果是/ private路由始终返回200而不是401/403。 我还尝试创建一个重定向,而不是允许/拒绝,并且还获得了200个而不是301个重定向。

您有一些想法或技巧可以使这项工作成功吗?

1 个答案:

答案 0 :(得分:3)

在许多链接中,窍门是大多数文档中的前缀不是最新的:

这是一个工作示例:

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

享受!