This happens sometimes and is usually related to the finalizers.
# Find the CR causing the problem
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n <NAMESPACE>
# Patch the finalizer to be able to nuke it
kubectl patch <RESOURCE> -p '{"metadata":{"finalizers": []}}' --type=merge -n <NAMESPACE>
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n eunomia-hello-world-demo
NAME AGE
gitopsconfig.eunomia.kohls.io/hello-world-yaml 1h
kubectl patch gitopsconfig.eunomia.kohls.io/hello-world-yaml -p '{"metadata":{"finalizers": []}}' --type=merge -n eunomia-hello-world-demo
More fun with the finalizer most likely. Use the below commands to clean it up.
# remove the CRD finalizer blocking on custom resource cleanup
kubectl patch crd/gitopsconfigs.eunomia.kohls.io -p '{"metadata":{"finalizers":[]}}' --type=merge
# now delete it
kubectl delete -f ./deploy/crds/eunomia.kohls.io_gitopsconfigs_crd.yaml