So ändern Sie einen Kubernetes Ingress, damit er mit oath2-proxy funktioniert

So ändern Sie einen Kubernetes Ingress, damit er mit oath2-proxy funktioniert

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.homesollten 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.yamlDatei, 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/oauth2und 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.yamlgibt zwei Anmerkungen, die angeben, dass der oauth2-proxyDienst 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.yamlDatei 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.yamlich 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

verwandte Informationen