【问题标题】:Google Kubernetes Engine (GKE) Ingress w/auth-urlGoogle Kubernetes Engine (GKE) Ingress w/auth-url
【发布时间】:2018-01-31 18:15:39
【问题描述】:

我希望我能在其他地方找到我的答案,但是由于缺乏文档,我不得不卑躬屈膝地寻求帮助 :)

我一直关注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 入口控制器是否有一个可以完成同样事情的注解?

我想要完成的是:客户端调用我的服务,负载均衡器/代理首先使用外部端点对请求进行身份验证,如果身份验证成功,代理将调用发送到我的服务(所有没有发送到客户端的单个重定向响应)。基本上nginx auth_request 所做的就是我认为auth-url 注释在幕后利用的作用。

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    看起来auth-url annotation 仅适用于 Nginx 入口控制器。所以,你必须先运行 Nginx Ingress Controller。

    请参阅this post,了解如何在 GKE 上执行此操作。

    希望对您有所帮助。

    【讨论】:

    • 这看起来确实非常彻底和惊人!不错的文章 :) 如果我像这样滚动自己的入口控制器,入口服务器是否在它们自己的自动扩展集群中运行?或者更确切地说,这些控制器在哪里运行?如果有意义的话,我想让我的后端服务的 cpu 独立于控制器。
    • 它们在同一个集群中的自己的命名空间中运行。如果他们在另一个集群中,他们将无法观察实际入口文件的变化,不是吗? :)
    猜你喜欢
    • 2018-09-07
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    相关资源
    最近更新 更多