Ich folgedieses Tutorialum mein Kubernetes-Dashboard über einen Ingress verfügbar zu machen und den Ingress mit einer Basisauthentifizierung zu sichern, indemOAuth2-Proxymit GitHub als Identitätsanbieter.
Grundsätzlich kubernetes.vismark.home
sollten alle Anfragen für den Zugriff auf mein Kubernetes-Dashboard (auf dem Host) zum GitHub-Anmeldebildschirm umgeleitet werden. Der Benutzer gibt dann gültige GitHub-Anmeldeinformationen ein und wird, wenn dies erfolgreich ist, zu meinem Kubernetes-Dashboard umgeleitet.
Ich habe eine oauth2-proxy.yaml
Datei, die eine einfache Bereitstellung, einen Dienst und einen Ingress für den OAuth2-Proxy erstellt, wie unten gezeigt, und die meine GitHub-Anwendungskonfiguration angibt:
// oauth2-proxy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
k8s-app: oauth2-proxy
name: oauth2-proxy
namespace: kubernetes-dashboard
spec:
replicas: 1
selector:
matchLabels:
k8s-app: oauth2-proxy
template:
metadata:
labels:
k8s-app: oauth2-proxy
spec:
containers:
- args:
- --provider=github
- --email-domain=*
- --upstream=file:///dev/null
- --http-address=0.0.0.0:4180
env:
- name: OAUTH2_PROXY_CLIENT_ID
value: 3d00820d20ac2d5494f3 # Our client ID
- name: OAUTH2_PROXY_CLIENT_SECRET
value: XXXXXXXX
- name: OAUTH2_PROXY_COOKIE_SECRET
value: XXXXXXXX
image: quay.io/oauth2-proxy/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: kubernetes-dashboard
spec:
ports:
- name: http
port: 4180
protocol: TCP
targetPort: 4180
selector:
k8s-app: oauth2-proxy
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: oauth2-proxy
namespace: kubernetes-dashboard
spec:
ingressClassName: nginx
rules:
- host: kubernetes.vismark.home
http:
paths:
- path: /oauth2
pathType: Prefix
backend:
service:
name: oauth2-proxy
port:
number: 4180
Bereitstellung, Dienst und Ingress für den OAuth2-Proxy funktionieren wie erwartet – nach dem Erstellen der Objekte kann ich darauf zugreifen http://kubernetees.vismark.home/oauth2
und werde zur Anmeldung aufgefordert.
Mein Problem betrifft das Ingress-YAML, das das Kubernetes-Dashboard verfügbar macht kubernetes-ingress.yaml
:
// kubernetes-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: kubernetes-ingress
annotations:
nginx.ingress.kubernetes.io/auth-url: "https://oauth2-proxy.kubernetes-dashboard.svc.cluster.local/oauth2/auth"
nginx.ingress.kubernetes.io/auth-signin: "https://oauth2-proxy.kubernetes-dashboard.svc.cluster.local/oauth2/start?rd=$escaped_request_uri"
spec:
rules:
- host: kubernetes.vismark.home
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: kubernetes-dashboard
port:
number: 80
Es kubernetes-ingress.yaml
gibt zwei Anmerkungen, die angeben, dass der oauth2-proxy
Dienst verwendet werden soll, um den Benutzer zur Authentifizierung aufzufordern.
Aber wenn ich versuche, auf den Host „http://kubernetes.vismark.home“ zuzugreifen, erhalte ich einen 503-Fehler.
Die kubernetes-ingress.yaml
Datei stellt mein Dashboard einwandfrei bereit, wenn ich die beiden OAuth2-Proxy-Anmerkungen entferne, aber sobald ich die beiden Anmerkungen wieder hinzufüge, erhalte ich die Fehlermeldung 503.
Ich glaube, kubernetes-proxy.yaml
ich habe in dieser Datei etwas falsch konfiguriert, ich weiß nur nicht, was das ist.
Unten sehen Sie einen Screenshot meiner GitHub-Anwendungskonfigurationen für zusätzlichen Kontext:
- Homepage-URL:
https://kubernetes.vismark.home
- Autorisierungs-Rückruf-URL:
https://kubernetes.vismark.home/oauth2/callback