Swapping in Keycloak and Ceph RGW instead of the bundled Dex and SeaweedFS is the realistic path for most existing clusters, so it is good to see it written up end to end. One thing worth pinning down for anyone repeating this: the Kubeflow Pipelines artifact store config and the KServe storage-initializer secret both need the RGW endpoint, region and path-style addressing set consistently, or runs succeed while model serving silently fails to pull artifacts. Running a tiny pipeline that writes an artifact and then serves it is a quick end-to-end smoke test after every upgrade.