Google Kubernetes Engine(GKE)Ingress w / auth-url

时间:2018-01-31 18:15:39

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

我希望我能在其他地方找到我的答案,但缺乏文件让我感到很有帮助:)

我一直关注this tutorial作为起点。我可以按照步骤一直走到最后,取得巨大成功。但当我修改入口以完成我想要完成的任务时,没有任何反应。

本教程让您使用以下.yaml

创建入口
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: basic-ingress
spec:
  backend:
    serviceName: nginx
    servicePort: 80

我想要做的是修改入口,以便它可以利用auth-url annotation,最后我的ingress.yaml我失败了看起来像

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: basic-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/auth-url: https://someauth.com/path/to/my/auth
spec:
  backend:
    serviceName: nginx
    servicePort: 80

为了使用注释,我发现我需要包含kubernetes.io/ingress.class: "nginx"注释以使用适当的入口。但基本上,这没有任何作用。我可以在没有我的身份验证的情况下触及后端nginx群集。就像这些注释甚至不存在一样。

GKE不支持nginx入口控制器吗?我的yaml有些根本错误吗? gce入口控制器是否有可以完成相同操作的注释?

我想要完成的是:客户端调用我的服务,loadbalancer / proxy首先通过外部端点验证请求,如果auth成功,代理将调用发送到我的服务(所有没有发送给客户端的单个重定向响应)。基本上nginx auth_request所做的就是我假设这个auth-url注释在幕后使用。

谢谢!

1 个答案:

答案 0 :(得分:2)

GKE有自己的Ingress Controller。它被称为GKE入口控制器。如果您想使用Nginx Ingress Controller,您需要自己管理它。

看起来auth-url annotation仅适用于Nginx Ingress Controller。因此,您必须首先运行Nginx Ingress Controller。

有关如何在GKE上执行此操作,请参阅this post

希望它有所帮助。