Я пытаюсь защитить страницу состояния службы с помощью oauth2_proxy, используя Azure AD в качестве внешнего поставщика аутентификации. В настоящее время, если я перехожу к общедоступному URL-адресу приложения (https://sub.domain.com/service/hangfire), я получаю тайм-аут 504 шлюза, где он должен указывать мне на аутентификацию.
Я в основном следовал этому руководству для справки: https://msazure.club/protect-kubernetes-webapps-with-azure-active-directory-aad-authentication/
Если я отключу аннотации, которые управляют аутентификацией, я могу без проблем попасть на общедоступную страницу статуса. Если я перейду к https://sub.domain.com/oauth2,, я получу приглашение для аутентификации у своего провайдера, чего я и ожидал. Я не уверен, где проблема заключается во входной конфигурации, но я не смог найти каких-либо подобных случаев для этого онлайн, stackoverflow или иным образом.
В этом случае все (о развертывании oauth, правилах обслуживания и входа) находится в пространстве имен dev, за исключением фактического входа, который находится в своем собственном пространстве имен. Я не подозреваю, что это имеет значение, но завершение SSL обрабатывается шлюзом за пределами кластера.
oauth2 развертывание:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: oauth2-proxy
spec:
replicas: 1
selector:
matchLabels:
app: oauth2-proxy
template:
metadata:
labels:
app: oauth2-proxy
spec:
containers:
- name: oauth2-proxy
image: quay.io/pusher/oauth2_proxy:v3.2.0
imagePullPolicy: IfNotPresent
args:
- --provider=azure
- --email-domain=domain.com
- --upstream=http://servicename
- --http-address=0.0.0.0:4180
- --azure-tenant=id
- --client-id=id
- --client-secret=number
env:
- name: OAUTH2_PROXY_COOKIE_SECRET
value: secret
ports:
- containerPort: 4180
protocol : TCP
---
apiVersion: v1
kind: Service
metadata:
labels:
app: oauth2-proxy
name: oauth2-proxy
spec:
ports:
- name: http
port: 4180
protocol: TCP
targetPort: 4180
selector:
app: oauth2-proxy
Правила входа:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: service-ingress1
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/auth-url: https://sub.domain.com/oauth2/auth"
nginx.ingress.kubernetes.io/auth-signin: https://sub.domain.com/oauth2/start?rd=$https://sub.domain.com/service/hangfire"
spec:
rules:
- host: sub.domain.com
http:
paths:
- path: /service/hangfire
backend:
serviceName: service
servicePort: 80
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: service-oauth2-proxy
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: sub.domain.com
http:
paths:
- path: /oauth2
backend:
serviceName: oauth2-proxy
servicePort: 4180
Я получаю 504 ошибки при просмотре URL-адреса, но не вижу никаких ошибок во входных модулях.