Zum Inhalt springen
labkompass

Assistent · openDesk

openDesk Readiness Check

Bevor du openDesk ausrollst: Geh die Voraussetzungen Punkt für Punkt durch. Zu fast jedem Punkt gibt es einen lesenden Befehl, mit dem du selbst nachsiehst — so wird aus einer Vermutung ein geprüftes Ergebnis. Am Ende steht ein Urteil, das offen sagt, worauf es beruht.

Wofür prüfst du?

Eingeschränkt

Pflicht: 0/13 erfüllt · davon 0 geprüft · 0 nein · 13 offen

Das Urteil gibt nur deine Antworten wieder. „Geprüft“ heißt: Du hast den lesenden Befehl ausgeführt und das Ergebnis passt zur Deutung. Das Tool verbindet sich mit keinem Cluster. Stand der Anforderungen: openDesk 1.19.1.

Cluster

  • Kubernetes ab Version 1.24, CNCF-zertifizierte Distribution

    Pflicht

    openDesk setzt einen bestehenden Cluster voraus und ist laut Doku gegen kubespray-basierte Cluster getestet, nicht gegen OpenShift.

    Selbst prüfen (lesend)

    kubectl version

    „Server Version“ v1.24 oder neuer → passt.

    Antwort: Kubernetes ab Version 1.24, CNCF-zertifizierte Distribution
  • Alle Nodes laufen auf x86/x64 (amd64)

    Pflicht

    ARM wird von openDesk nicht unterstützt — Images gibt es nur für x86/x64.

    Selbst prüfen (lesend)

    kubectl get nodes -L kubernetes.io/arch

    Spalte ARCH zeigt überall amd64 → passt. arm64 → diese Nodes eignen sich nicht.

    Antwort: Alle Nodes laufen auf x86/x64 (amd64)
  • Eigener Namespace und ausreichende Rechte zum Ausrollen

    Empfohlen

    openDesk rollt über 35 Helm-Charts in einen Namespace aus — inklusive Jobs, Secrets und Ingress-Objekten.

    Selbst prüfen (lesend)

    kubectl auth can-i create deployments -n opendesk

    „yes“ → du darfst ausrollen. Dasselbe für secrets, ingresses und jobs prüfen.

    Antwort: Eigener Namespace und ausreichende Rechte zum Ausrollen

Werkzeuge: Helm, Helmfile, yq

  • Helm ab 3.17.3 und unter 4 — aber nicht 3.18.0 oder 3.20.1

    Pflicht

    openDesk 1.19 unterstützt Helm 4 noch nicht; zwei Helm-3-Versionen sind wegen Fehlern ausgeschlossen.

    Selbst prüfen (lesend)

    helm version --short

    v3.17.3 bis v3.x (außer v3.18.0 und v3.20.1) → passt. v4.x → nicht unterstützt.

    Antwort: Helm ab 3.17.3 und unter 4 — aber nicht 3.18.0 oder 3.20.1
  • Helmfile ab 1.0.0

    Pflicht

    Helmfile orchestriert die Charts von openDesk in fester Reihenfolge.

    Selbst prüfen (lesend)

    helmfile --version

    Version 1.0.0 oder neuer → passt.

    Antwort: Helmfile ab 1.0.0
  • Helm-Plugin helm-diff ab 3.11.0

    Pflicht

    Helmfile braucht helm-diff, um Änderungen vor dem Ausrollen zu vergleichen.

    Selbst prüfen (lesend)

    helm plugin list

    Zeile „diff“ mit Version 3.11.0 oder neuer → passt.

    Antwort: Helm-Plugin helm-diff ab 3.11.0
  • yq ab 4.52.4

    Pflicht

    Steht in den Systemanforderungen von openDesk als benötigtes Werkzeug.

    Selbst prüfen (lesend)

    yq --version

    Version 4.52.4 oder neuer (mikefarah/yq) → passt.

    Antwort: yq ab 4.52.4

DNS, Ingress und Ports

  • DNS: Wildcard-Eintrag *.domain und die Basisdomain zeigen auf den Ingress

    Pflicht

    Jede openDesk-Anwendung bekommt eine eigene Subdomain (portal, files, chat, meet …).

    Selbst prüfen (lesend)

    dig +short test.<domain>

    Eine beliebige Subdomain liefert die Adresse des Ingress-Controllers → Wildcard funktioniert.

    Antwort: DNS: Wildcard-Eintrag *.domain und die Basisdomain zeigen auf den Ingress
  • Basisdomain kürzer als 94 Zeichen

    Empfohlen

    Die openDesk-Doku empfiehlt das wegen eines Fehlers in einer Komponente (SSSD).

    Antwort: Basisdomain kürzer als 94 Zeichen
  • Ingress-Controller haproxy-ingress — oder ingress-nginx mit den Pflichtoptionen

    Pflicht

    haproxy-ingress ist seit openDesk 1.13 der Standard. ingress-nginx ist abgekündigt und braucht erlaubte Snippet-Annotationen und annotations-risk-level: Critical.

    Selbst prüfen (lesend)

    kubectl get ingressclass

    Klasse haproxy → passt zum Standard. nginx → in der Konfiguration umstellen. traefik → nicht unterstützt.

    Antwort: Ingress-Controller haproxy-ingress — oder ingress-nginx mit den Pflichtoptionen
  • LoadBalancer-Services bekommen eine externe IP

    Empfohlen

    openDesk nutzt standardmäßig Services vom Typ LoadBalancer (cluster.service.type). Ohne Implementierung bleiben sie pending — dann NodePort konfigurieren.

    Selbst prüfen (lesend)

    kubectl get svc -A --field-selector spec.type=LoadBalancer

    EXTERNAL-IP mit Adresse → passt. <pending> → keine LoadBalancer-Implementierung im Cluster.

    Antwort: LoadBalancer-Services bekommen eine externe IP
  • Ports außerhalb des Ingress erreichbar: UDP 10000, TCP 30000, UDP 30001

    Empfohlen

    Jitsi (UDP 10000) und Element Call über die MatrixRTC-SFU (TCP 30000, UDP 30001) laufen nicht über den Ingress. Die SFU braucht beide Protokolle auf einer IP.

    Antwort: Ports außerhalb des Ingress erreichbar: UDP 10000, TCP 30000, UDP 30001

TLS-Zertifikate

  • Zertifikat geklärt: cert-manager mit ClusterIssuer oder eigenes Secret opendesk-certificates-tls

    Pflicht

    openDesk spricht nur HTTPS. cert-manager ist optional, dann muss das TLS-Secret selbst bereitliegen.

    Selbst prüfen (lesend)

    kubectl get clusterissuer

    Issuer mit READY True, Name passt zu certificate.issuerRef.name (Default letsencrypt-prod). Ohne cert-manager: Secret im Namespace vorhanden.

    Antwort: Zertifikat geklärt: cert-manager mit ClusterIssuer oder eigenes Secret opendesk-certificates-tls

Storage

  • StorageClass für ReadWriteOnce vorhanden

    Pflicht

    Datenbanken, OpenLDAP, Dovecot und andere brauchen persistente Volumes. Ohne Default-Klasse muss sie in persistence.storageClassNames.RWO stehen.

    Selbst prüfen (lesend)

    kubectl get storageclass

    Eine Klasse mit „(default)“ oder eine bewusst gewählte Klasse für die Konfiguration → passt.

    Antwort: StorageClass für ReadWriteOnce vorhanden
  • Volume-Provisioner mit Sticky-Bit-Support — nicht local-path, kein NFS für RWO

    Pflicht

    Ohne Sticky Bit scheitert laut openDesk-Doku der Seeder-Job von OpenProject. local-path-provisioner hat diese Unterstützung nicht, NFS ist für RWO nicht unterstützt.

    Selbst prüfen (lesend)

    kubectl get storageclass -o custom-columns=NAME:.metadata.name,PROVISIONER:.provisioner

    PROVISIONER rancher.io/local-path oder ein NFS-Provisioner als RWO-Klasse → nicht geeignet.

    Antwort: Volume-Provisioner mit Sticky-Bit-Support — nicht local-path, kein NFS für RWO
  • Optional: StorageClass für ReadWriteMany

    Optional

    Nur nötig für verteilte Setups und horizontale Skalierung einzelner Komponenten.

    Antwort: Optional: StorageClass für ReadWriteMany

Secrets

  • MASTER_PASSWORD erzeugt und sicher verwahrt — nicht im Git-Repository

    Pflicht

    openDesk leitet daraus die meisten Secrets ab; es gibt keinen Default. Wer es verliert, kann die abgeleiteten Zugangsdaten nicht mehr reproduzieren. Einige Schlüssel — etwa der Synapse-Signierschlüssel, die MAS-Schlüssel und das TURN-Secret — kommen nicht daraus und müssen eigens gesichert werden.

    Antwort: MASTER_PASSWORD erzeugt und sicher verwahrt — nicht im Git-Repository

Ressourcen und Registry

  • Mindestens 12 Kerne und 32 GB RAM frei — für Produktion deutlich mehr

    Pflicht

    Das ist die offizielle Untergrenze für eine Evaluierung. Für echte Nutzung siehe die Richtwerte im Infrastruktur-Planer.

    Selbst prüfen (lesend)

    kubectl describe nodes

    Unter „Allocatable“ minus „Allocated resources“ bleibt genug frei → passt.

    Antwort: Mindestens 12 Kerne und 32 GB RAM frei — für Produktion deutlich mehr
  • Nodes erreichen registry.opencode.de und Docker Hub — oder eine private Registry

    Empfohlen

    Charts und Images kommen aus OCI-Registries. Bei häufigen Deployments droht das Docker-Hub-Rate-Limit; openDesk unterstützt dafür eine private Registry.

    Antwort: Nodes erreichen registry.opencode.de und Docker Hub — oder eine private Registry

Backups und Betrieb

  • Backup-Konzept für Datenbanken, Objektspeicher, PVCs und Konfiguration

    Optional

    openDesk liefert ein Inventar der Datenspeicher, aber kein Backup-Werkzeug. Rollback nach einem Update heißt: Restore aus dem Backup.

    Antwort: Backup-Konzept für Datenbanken, Objektspeicher, PVCs und Konfiguration
  • Monitoring mit Prometheus-Operator und eine Log-Aggregation

    Optional

    openDesk bringt ServiceMonitors, Alerts und Dashboards mit (standardmäßig aus), aber keine Log-Aggregation.

    Selbst prüfen (lesend)

    kubectl get crd servicemonitors.monitoring.coreos.com

    CRD vorhanden → Prometheus-Operator installiert, openDesk-Monitoring lässt sich einschalten.

    Antwort: Monitoring mit Prometheus-Operator und eine Log-Aggregation

Häufige Fragen

Prüft das Tool meinen Cluster?

Nein, und es verbindet sich mit nichts. Du führst die lesenden Befehle selbst aus und markierst das Ergebnis als „Ja (geprüft)“. Wer ohne Befehl antwortet, wählt „Ja (Selbstauskunft)“ — das Urteil weist dann darauf hin.

Wie entsteht das Urteil?

Ein Pflichtpunkt mit „Nein“ ergibt „Nicht bereit“. Offene oder unklare Pflichtpunkte und nicht erfüllte Empfehlungen ergeben „Eingeschränkt“. „Bereit“ heißt: alle Pflichtpunkte erfüllt, keine Empfehlung verneint. Optionale Punkte zählen nicht.

Warum hat Produktion mehr Pflichtpunkte?

Für eine Evaluierung bringt openDesk Datenbanken, Objektspeicher und Mailserver selbst mit. Im Produktivbetrieb sind sie laut openDesk durch eigene, gesicherte Dienste zu ersetzen — dazu kommen Backups, Rechte und offene Ports für Videokonferenzen.

Werden meine Antworten gespeichert?

Nur in deinem Browser (localStorage), damit die Liste beim nächsten Besuch noch da ist. Nichts davon wird übertragen; über „Zurücksetzen“ löschst du den Stand.

Passende Tools