Azure ADを外部認証プロバイダーとして使用して、oauth2_proxyでサービスのステータスページを保護しようとしています。現在、アプリのパブリック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
URLを参照すると504エラーが発生しますが、入力ポッドにエラーは表示されません。
私はここで解決策を見つけることになりました:https://github.com/helm/charts/issues/5958
auth-urlには内部サービスアドレスを使用する必要がありましたが、これは他のどこにも言及されていませんでした。
nginx.ingress.kubernetes.io/auth-url: http://oauth2-proxy.development.svc.cluster.local:4180/oauth2/auth
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加