Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Betrieb in Kubernetes #288

Open
frederikpietzko opened this issue Nov 2, 2024 · 7 comments
Open

Betrieb in Kubernetes #288

frederikpietzko opened this issue Nov 2, 2024 · 7 comments
Assignees

Comments

@frederikpietzko
Copy link

Für den Betrieb in kubernetes oder anderen Cloud-Umgebungen wären folgende Dinge praktisch:

  • für Betrieb hinter einem Ingress Controller (zB nginx oder traefik) wäre es sehr praktisch wenn sich tls deaktivierten ließe. TLS liesse sich einfacher auf dem ingress selber configurieren.
    Ich habe versucht sowohl die DisableTLS, als auch die PortHTTP variablen zu setzen, das sorgte bisher jedoch immer fuer Probleme (Internal Server Error im Browser, ohne Stacktrace im SVWS-Server)
  • Starten ohne keystore ermoeglichen. Wenn der Server selber ohne TLS betrieben wird ist der meines Verständnis nach unnötig.
  • Konfiguration sollte vollständig über Umgebungsvariablen möglich sein. Dadurch würde sich der containerisierte Betrieb start vereinfachen. Siehe 12 Faktoren.
  • Endpunkte für Health Checks bereitstellen.

Ausserdem habe ich eine weitere Frage:
Ist durch einen Mechanismus wie zB Optimistic Locking für Datenbankeinträge sichergestellt, dass Race Conditions bei Parallelbetrieb vermieden werden?

Ich würde gerne ein sauber funktionierendes Helm Chart zur Verfügung stellen, dafür sind obige Punkte jedoch meines erachtens nach nötig.

@kroerig
Copy link
Contributor

kroerig commented Nov 2, 2024

Die Frage hatte ich auch schon
https://github.com/SVWS-NRW/SVWS-Server/discussions/24

@FPfotenhauer
Copy link
Contributor

Einen Endpunkt für einen Health-Check gibt es bereits:
/status/alive

@kroerig
Copy link
Contributor

kroerig commented Nov 3, 2024

Dann wäre es schön, wenn der Check auch Bestandteil des Images wäre.

@frederikpietzko
Copy link
Author

@FPfotenhauer

Ein "/status/alive" ist nicht wirklich genug für Betrieb in kubernetes.
Ideal wären Endpunkte für Liveness, Readiness und Startup. Das wäre auch für Betrieb ausserhalb von Kubernetes nützlich, zB automatisierte Warnungen oder ein automatisierter Neustart, sollte ein SVWS-Server nicht mehr erreichbar sein.

Ist denn geplant, TLS und keystore sauber konfiguerierbar zu machen, sodass ein Betrieb hinter zB Traefik möglich wird?

@kroerig
Copy link
Contributor

kroerig commented Nov 5, 2024

Das wird vermutlich erst später kommen. Docker geschweige denn Kubernetes ist kein typischer Installationstype in Schulen. Da dürfte die klassische Windows-Installation überwiegen.
Docker und Kubernetes ist für Dienstleiter interessant. Dann aber vermutlich in Verbindung mit SchILD Zentral, was aber ja erst später kommen wird.

@FPfotenhauer
Copy link
Contributor

Wie @kroerig schon schreibt, ist das momentan nicht unser Fokus. Wir müssen den Schild-NRW Schulen zunächst beim Umstieg helfen und die sind doch noch sehr in der Windows-Welt verankert.

Es ist richtig, dass Schild-Zentral hier der Entwicklung von Schild-NRW etwas "hinterher hinkt". Das ist aber auch normal, weil das einfach größere Systeme sind und die großen IT-Dienstleister mehr Planungszeit benötigen. Auch hier sprechen wir noch nicht von Kubernetes. (Zumindest kenne ich nur ein KRZ, was das bisher kann.)
Ich gehe davon aus, dass wir das im Jahr 2025 weiter verfolgen können.

Außerdem verzögert sich die Umsetzung vieler Vorschläge hier nicht, weil wir die nicht für sinnvoll halten. Es liegt schlicht daran, dass wir uns nicht "zerschneiden" können. Siehe daran, dass ich erst jetzt dazu komme zu antworten und das an einem Sonntag mache. Sorry!

Danke an @kroerig für die Unterstützung!

@FPfotenhauer FPfotenhauer self-assigned this Nov 28, 2024
@FPfotenhauer
Copy link
Contributor

Wie gestern besprochen haben wir für uns Tickets erstellt, die den Betrieb mit Umgebungsvariablen und die Erstellung von Health-Checks vorsehen. Wann das umgesetzt wird hängt allerdings stark von unseren Ressourcen ab.

Der Betrieb hinter einem Proxy sollte ohne https möglich sein. "DisableTLS : true" in der svwsconfig.json.
Wir haben allerdings festgestellt, dass http2 das Abschalten von TLS nicht vorsieht, so dass "UseDefaultv11 : true" gesetzt werden muss.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants