It seems like you would still use both. Terraform to provision your Kubernetes cluster and other non-application specific infrastructure.
It seems like, and I have only briefly read the article, Crossplane is meant to bring all that application specific cloud infrastructure into the same configuration files you would use for defining you Kubernetes application.
So along with defining your ingress you define your mysql database and it gets provisioned. This keeps all your application specific provisioning together instead of having to use Terraform to provision your database ahead of time and keep it in sync with the application.
It seems like, and I have only briefly read the article, Crossplane is meant to bring all that application specific cloud infrastructure into the same configuration files you would use for defining you Kubernetes application.
So along with defining your ingress you define your mysql database and it gets provisioned. This keeps all your application specific provisioning together instead of having to use Terraform to provision your database ahead of time and keep it in sync with the application.