I've contacted Microsoft Azure support with this question. My conversation with them led to 2 answers which I would like to share here.
"So regarding your doubts, in order to implement an Express Route you’ll need to have a Gateway linked to the dedicated circuit and to have a VNET linked to the gateway.
Your PaaS instances will also need to be deployed within that VNET so you can access them.
I think we can do some workarounds to overcome this limitation (I’ll need a bit of time to perform some testing on my side to perform a proof of concept though if you wish me to do it).
To have everything moved to a VNET would be the solution that would cause you less trouble in the future in my opinion and definitely the recommended one."
Then I asked how to do it when one has compute nodes on both Classic and ARM deployment models.
"What you need to do step by step:
- Create a VNET in ARM and move all the PaaS ARM instances there.
- Create a VNET in Classic mode and move all the PaaS classic instances there.
- Create an ARM Dynamic Gateway ( or Route Based Gateway ) and link it to the ARM VNET.
- Create an Classic Dynamic Gateway ( or Route Based Gateway ) and link it to the Classic VNET.
- Enable a VNET to VNET connection between both VNETs.
- Request the deployment for ExpressRoute and wait for the circuits to be provisioned an enabled.
- On the Azure Side you’ll need to create a new Gateway for the dedicated circuits that you just had provisioned.
- That gateway needs to be linked to the ARM VNET as well.
- This should link all the dots on your environment!"
Image - ExpressRoute topology with Classic and ARM VNETs