Kubernetes Dashboard mit Keycloak OIDC: Unterschied zwischen den Versionen

Zur Navigation springen Zur Suche springen
K
keine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
__NOINDEX__
{{Infobox
{{Infobox
| Titel      = Testumgebung
| Titel      = Testumgebung
Zeile 21: Zeile 19:


=== API-Server konfigurieren ===
=== API-Server konfigurieren ===
 
<syntaxhighlight lang="bash">
 
vi /etc/kubernetes/manifests/kube-apiserver.yaml
'# /etc/kubernetes/manifests/kube-apiserver.yaml
</syntaxhighlight><syntaxhighlight lang="yaml" line="1">
<syntaxhighlight lang="yaml" line="1">
spec:
spec:
   containers:
   containers:
Zeile 39: Zeile 36:
'''Hinweis:'''
'''Hinweis:'''


''Wenn <code>oidc-username-claim</code> NICHT 'email' ist, wird standardmäßig die 'issuer-url' als Prefix benutzt (z.B. https://<my.keycloak.server>/realms/<Realm-Name>:<username>).''
''Wenn <code>oidc-username-claim</code> '''NICHT''' 'email' ist, wird standardmäßig die 'issuer-url' als Präfix vor den Benutzer gestellt (z.B. https://<my.keycloak.server>/realms/<Realm-Name>:<username>).''


''Um den Prefix zu dekativieren muss als Wert '-' angegeben werden.''
''Um den Präfix zu deaktivieren muss bei <code>oidc-username-prefix</code> der Wert '-' angegeben werden.''


=== Load Balancer installieren ===
=== Load Balancer installieren ===
Zeile 88: Zeile 85:
</syntaxhighlight>
</syntaxhighlight>


=== Reverse Proxy installieren ===
=== Reverse Proxy installieren (ingress-nginx) ===
Reverse Proxy um mehrere Domains auf einer IP erreichbar zu machen.
Reverse Proxy um mehrere Domains auf einer IP erreichbar zu machen.


Zeile 101: Zeile 98:
</syntaxhighlight>'''Hinweise:'''
</syntaxhighlight>'''Hinweise:'''


''Wenn Header zu groß dann 502 Fehler. Deswegen auf 8k erhöhen''
''Bei Keycloak kann es vorkommen, dass mehr als 4 kb Daten über den Header gesendet werden.''
 
''Wenn der Header zu groß wird, bekommt man einen Fehler (502).''
 
''Deswegen erhöhen wir diesen direkt während der Installation auf 8 kb.''
 
 
 
''Für TLS benötigen wir ein 'Secret" mit dem "Privat Key" und dem "Public Certificate" für die Domain, die später für das Dashboard genutzt werden soll.''
 
''Dieses kann man als Standard, direkt in der Config für Ingress-Nginx hinerlegen oder später im Ingress definieren.''
 
 
'''Tipp:'''
 
Wenn man bei <code>default-ssl-certificate</code> ein Wildcard-Zertifikat (z.B. *.my-cluster.host) für den Cluster hinterlegt,
 
kann für jeden Ingress einfach eine Sub-Domain vergeben, die dann automatisch ein gültiges Zertifikat hat.
 


''Für TLS benötigen wir ein 'Secret" mit dem Privat Key und dem Public Certificate für die Domain, die später für das Dahsboard genutzt werden soll.''


''Dieses kann man als Standard direkt in der Config für Ingress-Nginx hinerlegen oder später im Ingress.''
Installation starten:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
helm upgrade --install ingress-nginx ingress-nginx \
helm upgrade --install ingress-nginx ingress-nginx \
Zeile 116: Zeile 130:
=== OAUTH2 Proxy installieren ===
=== OAUTH2 Proxy installieren ===
Authentifizierung gegen Keyclok und Token Weiterleitung an Dashboard
Authentifizierung gegen Keyclok und Token Weiterleitung an Dashboard
values.yaml
values.yaml
<syntaxhighlight lang="yaml" line="1">
<syntaxhighlight lang="yaml" line="1">
Zeile 146: Zeile 161:


''Der Parameter <code>cookie-refresh</code> sollte kleiner als die "Access Token Lifespan" in Keycloak sein ("Realm Settings->Token").''
''Der Parameter <code>cookie-refresh</code> sollte kleiner als die "Access Token Lifespan" in Keycloak sein ("Realm Settings->Token").''
Installation starten:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Zeile 152: Zeile 170:
   --namespace kubernetes-dashboard \
   --namespace kubernetes-dashboard \
   -f values.yaml
   -f values.yaml
</syntaxhighlight>''
</syntaxhighlight>


=== Dem Keycloak Benutzer die Admin Rolle zuweisen ===
===Dem Keycloak Benutzer die Admin Rolle zuweisen===
oidc-role.yaml
oidc-role.yaml
<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
Zeile 171: Zeile 189:
</syntaxhighlight>'''''Hinweis:'''''
</syntaxhighlight>'''''Hinweis:'''''


Der Benutzername (subjects.name) entspricht dem <code>oidc-username-claim</code> aus der "kube-apiserver.yaml".
''Der Benutzername (subjects.name) entspricht dem'' <code>oidc-username-claim</code> ''aus der "kube-apiserver.yaml".''
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
kubectl apply -f oidc-role.yaml
kubectl apply -f oidc-role.yaml
</syntaxhighlight>
</syntaxhighlight>


=== Ingress erstellen ===
===Ingress erstellen===
<syntaxhighlight lang="yaml" line="1">
<syntaxhighlight lang="yaml" line="1">
apiVersion: networking.k8s.io/v1
apiVersion: networking.k8s.io/v1
Zeile 226: Zeile 244:
         path: /oauth2
         path: /oauth2
         pathType: Prefix
         pathType: Prefix
</syntaxhighlight><syntaxhighlight lang="bash">
kubectl apply -f ingress.yaml
</syntaxhighlight>
</syntaxhighlight>

Navigationsmenü