maybe the problem is that crossplane application is already deleted and keycloak is still there with its resources. maybe crossplane needs to be deployed before (so lower sync-wave) then it also gets deleted after keycloak.
$ kubectl get function
NAME INSTALLED HEALTHY PACKAGE
AGE
function-auto-ready True True xpkg.upbound.io/crossplane-contrib/function-auto-ready:v0.2.1
26m
function-extra-resources True True xpkg.upbound.io/crossplane-contrib/function-extra-resources:v0.0.3
26m
function-keycloak-builtin-objects True True registry.gitlab.com/corewire/images/crossplane/function-keycloak-builtin-objects:v0.7.0 26m
maybe the problem is that crossplane application is already deleted and keycloak is still there with its resources. maybe crossplane needs to be deployed before (so lower sync-wave) then it also gets deleted after keycloak.