Kubernetes Dashboard mit Keycloak OIDC: Unterschied zwischen den Versionen

Aus RT-Wiki - IT-Notizbuch
Zur Navigation springen Zur Suche springen
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
__NOINDEX__
__NOINDEX__


'# apiserver oidc config erstellen
=== API-Server konfigurieren ===
 


'# /etc/kubernetes/manifests/kube-apiserver.yaml<syntaxhighlight lang="yaml" line="1">
'# /etc/kubernetes/manifests/kube-apiserver.yaml<syntaxhighlight lang="yaml" line="1">
Zeile 21: Zeile 22:


''Um den Prefix zu dekativieren muss als Wert '-' angegeben werden.''
''Um den Prefix zu dekativieren muss als Wert '-' angegeben werden.''
=== Load Balancer installieren ===
'# MetalLB installieren / Aktiviert den Service Typ "LoadBalancer" der sonst nur in Cloud Umgebungen verfügbar ist




'# MetalLB installieren / Aktiviert den Service Typ "LoadBalancer" der sonst nur in Cloud Umgebungen verfügbar ist


'# Bildet IPs aus dem Cluster in einen physischen Adressbereich des LANs<syntaxhighlight lang="bash">
'# Bildet IPs aus dem Cluster in einen physischen Adressbereich des LANs<syntaxhighlight lang="bash">
Zeile 54: Zeile 57:
</syntaxhighlight>
</syntaxhighlight>


 
=== Reverse Proxy installieren ===
'# ingress-nginx installieren /.Reverse proxy um mehrere Domains auf einer IP erreichbar zu machen.
Reverse proxy um mehrere Domains auf einer IP erreichbar zu machen.


values.yaml<syntaxhighlight lang="yaml" line="1">
values.yaml<syntaxhighlight lang="yaml" line="1">
Zeile 71: Zeile 74:




'# oauth2-proxy installieren / Authentifizierung gegen Keyclok und Token Weiterleitung an Dashboard
'# oauth2-proxy installieren /  
 
 


=== OAUTH Proxy installieren ===
Authentifizierung gegen Keyclok und Token Weiterleitung an Dashboard
values.yaml<syntaxhighlight lang="yaml" line="1">
values.yaml<syntaxhighlight lang="yaml" line="1">
extraArgs:
extraArgs:

Version vom 21. Dezember 2022, 02:02 Uhr


API-Server konfigurieren

'# /etc/kubernetes/manifests/kube-apiserver.yaml

spec:
  containers:
  - command:
    - kube-apiserver
... 
	- --oidc-issuer-url=https://<my.keycloak.server>/realms/<Realm-Name>
    - --oidc-client-id=k8s-cluster
    - --oidc-username-claim=email
    #- --oidc-ca-file=/path/to/oidc-ca.pem
	#- --oidc-username-prefix=-

Hinweis:

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

Um den Prefix zu dekativieren muss als Wert '-' angegeben werden.

Load Balancer installieren

'# MetalLB installieren / Aktiviert den Service Typ "LoadBalancer" der sonst nur in Cloud Umgebungen verfügbar ist


'# Bildet IPs aus dem Cluster in einen physischen Adressbereich des LANs

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.7/config/manifests/metallb-native.yaml

address_pool.yaml

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: first-pool
  namespace: metallb-system
spec:
  addresses:
  - 192.168.1.240-192.168.1.250

l2_advert.yaml

apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: example
  namespace: metallb-system
  #- first-pool

IPAddressPools können explizit ausgewählt werden. Ohne Angabe werden alle Pools dem L2Advertisement zugeordnet.

kubectl apply -f address_pool.yaml
kubectl apply -f l2_advert.yaml

Reverse Proxy installieren

Reverse proxy um mehrere Domains auf einer IP erreichbar zu machen.

values.yaml

controller:
  config:
    proxy-buffer-size: "16k"

Wenn header zu groß dann 50x Fehler. Deswegen auf 16k erhöhen

helm upgrade --install ingress-nginx ingress-nginx \
  --repo https://kubernetes.github.io/ingress-nginx \
  --namespace ingress-nginx --create-namespace \
  -f values.yaml



'# oauth2-proxy installieren /

OAUTH Proxy installieren

Authentifizierung gegen Keyclok und Token Weiterleitung an Dashboard

values.yaml

extraArgs:
  provider: keycloak-oidc
  #provider-display-name: OIDC Login
  #http-address: "0.0.0.0:4180"
  #skip-provider-button: true
  #skip-jwt-bearer-tokens: true
  #ssl-insecure-skip-verify: true
  #ssl-upstream-insecure-skip-verify: true
  #pass-access-token: true
  #pass-authorization-header: true
  set-authorization-header: true
  #set-xauthrequest: true
  client-id: XXX # Change XXX to your client_id
  client-secret: XXX # Change XXX to your client_secret
  cookie-secret: XXX # Generate with 'openssl rand -base64 32 | head -c 32 | base64'
  #cookie-secure: false
  #cookie-httponly: false
  oidc-issuer-url: "https://<my.keycloak.server>/realms/<Realm-Name>"
  redirect-url: "https://<my.keycloak.server>/oauth2/callback"
  #whitelist-domain: ["*"]
  #allowed-group: ["*"]
  #allowed-role: ["*"]
  #email-domain: ["*"]
helm upgrade --install oauth2-proxy oauth2-proxy \
  --repo https://oauth2-proxy.github.io/manifests \
  --namespace kubernetes-dashboard \
  -f values.yaml