Hallo Philipp,
ich habe das mit unserem openDesk-Deployment verglichen.
Bei uns ist OX/AppSuite nicht über nginx, sondern explizit über HAProxy Ingress angebunden. Unsere relevanten Werte sind sinngemäß:
ingress:
ingressClassName: „haproxy“
controller: „haproxy“
und für OX setzen wir zusätzlich den internen Objectstore-Endpunkt:
objectstores:
openxchange:
endpoint: „http://minio:9000“
Das steht bei uns nicht als Kubernetes-Manifest, sondern als Helmfile-Werte/Release-Customization. Daher: bitte nicht mit kubectl apply -f helmfile/environments/default/objectstores.yaml.gotmpl anwenden. *.gotmpl sind Helmfile-Templates. Nach einer Änderung muss openDesk wieder über Helmfile angewendet werden, also sinngemäß:
helmfile apply
bzw. mit deinem üblichen Environment-/Namespace-Parameter.
Wichtig: Dass minio auf der SLES-/Proxmox-VM selbst nicht auflösbar ist, ist normal. Der Name minio ist Kubernetes-DNS und gilt innerhalb der Pods im Namespace. Bitte keine 10.42.x.x-Pod-IP in die Werte schreiben, die ist nicht stabil.
Test aus dem Cluster heraus:
NS=opendesk3
kubectl -n „$NS“ run minio-test
–rm -i --restart=Never
–image=curlimages/curl
– curl -i http://minio:9000/
Ein 403 Forbidden von MinIO ist dabei nicht automatisch ein Fehler. Ohne Credentials darf MinIO so antworten.
Der aktuelle Fehler sieht für mich aber zuerst nach Ingress/API-Route aus, nicht nach MinIO:
/appsuite/ → HTTP 200
/appsuite/api… → HTTP 404 / NOSERVER
Das heißt: Das statische AppSuite-UI wird ausgeliefert, aber die API-Route landet nicht korrekt bei der OX-Middleware.
Ich würde daher zuerst prüfen, ob die OX-AppSuite-API-Ingressroute existiert und zur tatsächlich installierten Ingress-Klasse passt:
NS=opendesk3
HOST=webmail.my-domain.cloud
kubectl get ingressclass
kubectl -n „$NS“ get ingress | grep -Ei ‚open-xchange|appsuite‘
kubectl -n „$NS“ get svc,endpoints | grep -Ei ‚open-xchange|core-mw|core-ui‘
kubectl -n „$NS“ describe ingress open-xchange-appsuite-http-api-routes-appsuite-api
kubectl -n „$NS“ get ingress open-xchange-appsuite-http-api-routes-appsuite-api -o yaml
curl -k -i „https://${HOST}/appsuite/api?action=config&version=8.46.4“ | sed -n ‚1,80p‘
curl -k -i „https://${HOST}/appsuite/api/login?action=autologin“ | sed -n ‚1,80p‘
Wenn die Ingressroute fehlt, auf die falsche ingressClassName zeigt oder der Cluster z.B. nginx verwendet, die openDesk-Werte aber auf HAProxy stehen, passt das Fehlerbild sehr gut.
Also: Den internen OX-Objectstore-Endpunkt setzen wir auch so. Der 404 auf /appsuite/api ist aber wahrscheinlich zuerst ein Ingress-/Controller-Mismatch. Besonders prüfen würde ich nginx vs. HAProxy und die Route open-xchange-appsuite-http-api-routes-appsuite-api.