1.051
Bearbeitungen
KKeine Bearbeitungszusammenfassung |
|||
(15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{Infobox | {{Infobox | ||
| Titel = Testumgebung | | Titel = Testumgebung | ||
Zeile 6: | Zeile 4: | ||
| Bildbreite = | | Bildbreite = | ||
| Bildtext = | | Bildtext = | ||
| Stil = | | Stil = 2 | ||
| Titelfarbe = 6 | | Titelfarbe = 6 | ||
| Abschnittsfarbe = | | Abschnittsfarbe = | ||
Zeile 21: | Zeile 19: | ||
=== API-Server konfigurieren === | === API-Server konfigurieren === | ||
<syntaxhighlight lang="bash"> | |||
vi /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 | ''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 | ''Um den Präfix zu deaktivieren muss bei <code>oidc-username-prefix</code> der Wert '-' angegeben werden.'' | ||
=== Load Balancer installieren === | === Load Balancer installieren === | ||
Zeile 49: | Zeile 46: | ||
==== Ports in der Firewall öffnen ==== | ==== Ports in der Firewall öffnen ==== | ||
<syntaxhighlight lang="bash"> | Sowohl auf dem Controller als auch den Worker-Nodes<syntaxhighlight lang="bash"> | ||
firewall-cmd --permanent --add-port=7472/tcp | |||
firewall-cmd --permanent --add-port=7946/tcp | firewall-cmd --permanent --add-port=7946/tcp | ||
firewall-cmd --permanent --add-port=7946/udp | firewall-cmd --permanent --add-port=7946/udp | ||
Zeile 87: | 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 100: | Zeile 98: | ||
</syntaxhighlight>'''Hinweise:''' | </syntaxhighlight>'''Hinweise:''' | ||
'' | ''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).'' | ||
''Dieses kann man als Standard direkt in der Config für Ingress-Nginx hinerlegen oder später im Ingress.'' | ''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. | |||
Installation starten: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
helm upgrade --install ingress-nginx ingress-nginx \ | helm upgrade --install ingress-nginx ingress-nginx \ | ||
Zeile 115: | 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 145: | 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"> | ||
helm upgrade --install oauth2-proxy oauth2-proxy \ | helm upgrade --install oauth2-proxy oauth2-proxy \ | ||
--repo https://oauth2-proxy.github.io/manifests \ | --repo https://oauth2-proxy.github.io/manifests \ | ||
--namespace | --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 170: | 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 185: | Zeile 204: | ||
nginx.ingress.kubernetes.io/auth-signin: "https://$host/oauth2/start?rd=$escaped_request_uri" | nginx.ingress.kubernetes.io/auth-signin: "https://$host/oauth2/start?rd=$escaped_request_uri" | ||
nginx.ingress.kubernetes.io/auth-response-headers: "authorization" | nginx.ingress.kubernetes.io/auth-response-headers: "authorization" | ||
name: dashboard | name: k8s-dashboard | ||
namespace: kubernetes-dashboard | namespace: kubernetes-dashboard | ||
spec: | spec: | ||
Zeile 207: | Zeile 226: | ||
kind: Ingress | kind: Ingress | ||
metadata: | metadata: | ||
name: dashboard- | name: k8s-dashboard-oauth | ||
namespace: oauth2-proxy | namespace: oauth2-proxy | ||
spec: | spec: | ||
Zeile 225: | Zeile 244: | ||
path: /oauth2 | path: /oauth2 | ||
pathType: Prefix | pathType: Prefix | ||
</syntaxhighlight><syntaxhighlight lang="bash"> | |||
kubectl apply -f ingress.yaml | |||
</syntaxhighlight> | </syntaxhighlight> |