Split traffic to deployments

Hey everyone,

I was wondering what the correct way to split traffic with x % to deployment A and y % to deployment B is. In the kodekloud learning platform, they suggested, to just scale the number of replicas from A and B to certain numbers of replicas in order to obtain the desired ratio.
But what if I want a 90% and 10% traffic split without having to spin up 9 replicas on deployment A and have only 1 for deployment B ?
I wasn’t able to find anything about this topic in the documentation, I’ve only found third party extensions for this, but I would like to stick with the native api.
Can the ingresses be configured somehow in order to do this?
I’ve found these annotations somewhere on Google:

    nginx.ingress.kubernetes.io/canary: "true"
    nginx.ingress.kubernetes.io/canary-weight: "10"

But that would limit the possibility of usage to only nginx servers, right?
Is there a more general way?