Я новичок в Kubernetes, и я изучал Ingress. Я весьма впечатлен идеей обработки сертификатов TLS и аутентификации в точке Ingress. Я добавил простой файловый сервер stati c и добавил cert-manager, поэтому у меня в основном есть веб-сайт HTTPS stati c.
Я прочитал, что NGINX Ingress Controller можно использовать с oauth2 прокси для обработки аутентификации на входе. Проблема в том, что я не могу заставить это работать вообще. Я могу подтвердить, что моя служба развертывания oauth2-proxy и ее развертывание присутствуют и корректны - в журнале модуля я вижу запросы, поступающие с NGINX, но я не могу видеть, на что он на самом деле звонит Azure B2 C. Всякий раз, когда я пытаюсь получить доступ к своему сервису, я получаю Внутреннюю ошибку 500 - если я помещаю свой адрес / oath2 / auth в браузер, я получаю «Область действия« openid », указанная в запросе, не поддерживается». Однако, если я тестирую, запускаю пользовательский поток в Azure, тестовый URL также указывает «openid», и он функционирует, как и ожидалось.
Я думаю, что я мог бы работать через это, если бы я мог узнать, как контролировать то, что oauth2-прокси-запросы от Azure (т.е. работают там, где мой конфиг неверен, наблюдая за его URI) - в противном случае, возможно, кто-то, кто сделал это, может сказать мне, где я ошибся в конфиге.
Мой конфиг выглядит следующим образом:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
k8s-app: oauth2-proxy
name: oauth2-proxy
namespace: default
spec:
replicas: 1
selector:
matchLabels:
k8s-app: oauth2-proxy
template:
metadata:
labels:
k8s-app: oauth2-proxy
spec:
containers:
- args:
- -provider=oidc
- -email-domain=*
- -upstream=file:///dev/null
- -http-address=0.0.0.0:4180
- -redirect-url=https://jwt.ms/
- -oidc-issuer-url=https://<tenant>.b2clogin.com/tfp/<app-guid>/b2c_1_manager_signup/
- -cookie-secure=true
- -scope="openid"
# Register a new application
# https://github.com/settings/applications/new
env:
- name: OAUTH2_PROXY_CLIENT_ID
value: <app-guid>
- name: OAUTH2_PROXY_CLIENT_SECRET
value: <key-base64>
- name: OAUTH2_PROXY_COOKIE_SECRET
value: <random+base64>
image: quay.io/pusher/oauth2_proxy:latest
imagePullPolicy: Always
name: oauth2-proxy
ports:
- containerPort: 4180
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
labels:
k8s-app: oauth2-proxy
name: oauth2-proxy
namespace: default
spec:
ports:
- name: http
port: 4180
protocol: TCP
targetPort: 4180
selector:
k8s-app: oauth2-proxy
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: static1-oauth2-proxy
namespace: default
annotations:
kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: "true"
spec:
rules:
- host: cloud.<mydomain>
http:
paths:
- backend:
serviceName: oauth2-proxy
servicePort: 4180
path: /oauth2
tls:
- hosts:
- cloud.<mydomain>
secretName: cloud-demo-crt
На моем входе в сайт c я добавил следующее в metadata.annotations:
nginx.ingress.kubernetes.io/auth-url: "https://$host/oauth2/auth"
nginx.ingress.kubernetes.io/auth-signin: "https://$host/oauth2/start?rd=$request_uri"
Я не уверен на 100%, являются ли эти аннотации всегда должен быть установлен как таковой, или я должен изменить их для B2C / OID C, но они, похоже, go от прокси, это просто то, что прокси делает дальше, что не получается.
Обратите внимание, что журнал действительно указывает, что oauth2-прокси, подключенный к B2 C, действительно, если uri эмитента изменяется, то он переходит в cra sh fallback l oop.
Кажется, что есть anumber статей о том, как настроить это, так что я уверен, что это возможно, но я немного потерял. Если бы кто-то мог помочь с настройкой или идеями для отладки, это было бы замечательно.
Спасибо.
Марк