【问题标题】:GKE Nginx Ingress Controller Oauth2 Proxy redirectGKE Nginx 入口控制器 Oauth2 代理重定向
【发布时间】:2021-05-14 10:16:52
【问题描述】:

我正在尝试使用 oauth2-proxy 向我的集群添加身份验证。我在本地测试并按预期工作:当我进入登录页面时,它会将我重定向到 GitHub 等 IP。登录后,我被重定向到我的页面,一切都按预期工作。出于某种奇怪的原因,当从本地移植到谷歌云中的集群时,我没有重定向到 GitHub 进行身份验证。 我有两个入口,一个用于 oauth2-proxy (ingress-oauth2-proxy),另一个用于所有应用程序 (ingress-apps)。我添加了 Nginx 注释,但仍然没有。

这里是用于创建入口规则的入口 YAML 文件

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    acme.cert-manager.io/http01-edit-in-place: "true"
    ingress.kubernetes.io/force-ssl-redirect: "true"
    ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/auth-url: "https://auth.example.com/oauth2/auth"
    nginx.ingress.kubernetes.io/auth-signin: "https://auth.exmaple.com/oauth2/start?rd=$escaped_request_uri"
    cert-manager.io/cluster-isuer: letsecnrypt-prod
    nginx.ingress.kubernetes.io/rewrite-target: $/1
  name: ingress-apps
  namespace: default
spec:
  rules:
  - host: echo.example.com
    http:
      paths:
      - path: /
        backend:
          serviceName: echo1
          servicePort: 80
  tls:
    - hosts:
      - echo.exmaple.com
      secretName: echo-tls-cert
---

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-oauth2-proxy
  namespace: default
  annotations:
    kubernetes.io/ingress.class: nginx
    acme.cert-manager.io/http01-edit-in-place: "true"
    ingress.kubernetes.io/force-ssl-redirect: "true"
    ingress.kubernetes.io/ssl-redirect: "true"
spec:
  rules:
  - host: auth.exmaple.com
    http:
      paths:
      - backend:
          serviceName: oauth2-proxy
          servicePort: 4180
        path: /oauth2
  tls:
    - hosts:
      - auth.exmaple.com
      secretName: auth-tls-cert

我检查了 OAuth 代理的日志,当我访问 echo.example.com 时,没有任何反应。如果我向 auth.example.com/oauth2 发出请求,我会按预期重定向到 IP 登录页面,在这种情况下是 GitHub。

我错过了什么吗?

注意:我检查了两个入口。

【问题讨论】:

  • 能否分享一下页面的来源和OAuth页面的JavaScript控制台日志中“什么都没有发生”的地方?
  • 您好!哪一页?很抱歉,我没有完全得到您的要求。让我补充一下,登陆页面只是一个基于 hashcorp 镜像的 echo HTTP 服务器,代理基于 quay.io 的 oauth2-proxy 镜像。请注意,我对任何与网络开发相关的东西都很陌生:/
  • 好的,我想通了:问题出在我使用的 Ingress 控制器上。我从 repo helm.nginx.com/stable 安装了 Nginx 控制器,它是 nginxinc 并且不支持注释。因此他们被忽略了。为了修复它,我只使用了 kubernetes.github.io/ingress-nginx/deploy/#gce-gke。这在stackoverflow.com/questions/65295598/… 有更好的解释。干杯! :)
  • 您能否将其写为答案并将其标记为接受答案? :)
  • 是的!完成 :) 干杯!

标签: nginx oauth-2.0 google-kubernetes-engine


【解决方案1】:

好的,我想通了:问题出在使用的 Ingress 控制器上。我从 repo helm.nginx.com/stable 安装了 Nginx 控制器,它是 nginxinc 并且不支持注释。因此他们被忽略了。为了修复它,我只使用了 kubernetes.github.io/ingress-nginx/deploy/#gce-gke。这在Nginx ingress controller authentication not working 有更好的解释@

干杯! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 2021-01-19
    • 2019-03-06
    • 2019-03-13
    • 1970-01-01
    • 2021-07-28
    • 2019-10-06
    相关资源
    最近更新 更多