【发布时间】: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