Deploying them is easy. Figuring out the correct incantations to bind a load balancer or ingress port to redis/kafka/mysql/whatever and/or expose them in some way other than "let the ingress figure out the host from headers/SNI and map to some thing in the Service" is somewhat less than intuitive.
Sure, you could argue that you shouldn't expose backend services like that without an API endpoint at all, because one application->one namespace, or you could use a service mesh/consul to expose it to the things that need it, but it's an entirely different mindset from "I have a postgres cluster in public/private cloud"