GEDOPLAN
DevOpsJakarta EE (Java EE)

502 Bad Gateway in Quarkus 3 Anwendung mit Keycloak/OIDC in K8s

DevOpsJakarta EE (Java EE)
height restricted e1706010914996

Insbesondere bei der Migration einer Quarkus 2 Anwendung auf Quarkus 3 stößt man beim Testen der Anwendung im K8s-Cluster eventuell auf das Problem, dass die Anwendung über den konfigurierten Ingress nicht erreichbar ist und uns nur eine Fehlerseite mit dem HTTP Statuscode 502 Bad Gateway vom nginx Ingress erwartet. Dabei hat man doch in der Konfiguration des Ingress gar nichts verändert!

Das Problem wird klarer, wenn man sich den Log des Ingress Controllers anschaut. Hier findet sich folgender Abschnitt:

[...] upstream sent too big header while reading response header from upstream [...]

Die Authentifizierung unserer Anwendung läuft in diesem Fall über OIDC und im K8s-Cluster läuft zu diesem Zweck ein Keycloak. Quarkus 3 speichert anders als Quarkus 2 die notwendigen Tokens in den Browser Cookies nun standardmäßig verschlüsselt. Das führt dazu, dass die Cookies größer werden und auch der “Set-Cookie” HTTP-Header, mit dem die Anwendung den Browser anweist die Tokens in einem Cookie zu speichern, an Größe zunimmt. Standardmäßig hat der häufig eingesetzte nginx als Ingress Controller eine proxy-buffer-size von 4k eingestellt, leider reißt unsere HTTP-Response nun dieses Limit und der Ingress antwortet stattdessen mit einem Fehler. Die Lösung für dieses Problem ist allerdings relativ einfach umsetzbar, denn eine Vergrößerung dieser Einstellung lässt das Problem verschwinden. Im Falle des nginx Ingress Controllers kann die Konfiguration z.B. direkt an der spezifischen K8s-Ingress Beschreibung vorgenommen werden.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/proxy-buffer-size: "16k"

Hier kann dann die proxy-buffer-size erhöht werden und die Anwendung sollte nun auch in der Quarkus 3 Version erreichbar sein.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.

Autor

Diesen Artikel teilen

LinkedIn
Xing

Gibt es noch Fragen?

Fragen beantworten wir sehr gerne! Schreibe uns einfach per Kontaktformular.

Kurse

weitere Blogbeiträge

IT-Training - GEDOPLAN
Jakarta EE (Java EE)

Bean Validation auf Collections

Die zum Java-EE-6-Umfang gehörende Spezifikation Bean Validation (JSR 303) stellt einen wesentlichen Schritt zur einheitlichen Validierung von Geschäftsdaten dar. Wie…

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!