我正在尝试使用 oauth2-proxy 向我的集群添加身份验证。我在本地进行了测试并按预期工作:当我转到登录页面时,它会将我重定向到一个 IP,例如 GitHub。登录后,我被重定向到我的页面,一切都按预期工作。出于某种奇怪的原因,当从本地移植到 google 云中的集群时,我没有重定向到 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。
我错过了什么吗?
注意:我检查过,两个入口都被应用了。
答案 0 :(得分:0)
好的,我想通了:问题出在使用的 Ingress 控制器上。我从 repo helm.nginx.com/stable 安装了 Nginx 控制器,它是 nginxinc 并且不支持注释。因此,他们被忽视了。为了修复它,我只使用了 kubernetes.github.io/ingress-nginx/deploy/#gce-gke。在这里可以更好地解释Nginx ingress controller authentication not working
干杯! :)