GKE Nginx 入口控制器 Oauth2 代理重定向

GKE Nginx Ingress Controller Oauth2 Proxy redirect

我正在尝试使用 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。

我是不是漏掉了什么?

注意:我检查过两个入口都在应用。

好的,我明白了:问题出在使用的 Ingress 控制器上。我从存储库 helm.nginx.com/stable 安装了 Nginx 控制器,它是 nginxinc,不支持注释。因此他们被忽略了。为了修复它,我只使用了 kubernetes.github.io/ingress-nginx/deploy/#gce-gke。这在此处有更好的解释

干杯! :)