The below works in AWS. I haven't worked much with Azure's networking environment, but I can't imagine (well, I can, it's Microsoft) that the DNAT / SNAT workings are too different. Assign PUB IP to instance/interface, then just change the below configs in Kamailio and Freeswitch. If you're using an all-in-one, then you'll just need one PUB. I've got a clustered setup going with my Kama and FS instances separate.
On Freeswitch - Remember FS trunks directly out of the cluster. It does not route out back through Kamailio.
Set <param name="ext-rtp-ip" value="auto"/> to <param name="ext-rtp-ip" value="x.x.x.x."/> (x.x.x.x is the external IP you have assigned to this instance)
Set <param name="local-network-acl" value="localnet.auto"/> to <param name="local-network-acl" value="NOPE"/> # “NOPE” doesn't matter, just not localnet.auto
Should be down at the bottom of the file. The advertise flag essentially tells Kamailio what to change the IP to when it detects NAT.
listen=UDP_SIP advertise x.x.x.x:5060
listen=TCP_SIP advertise x.x.x.x:5060
(where x.x.x.x is your public IP address you assigned)
I believe that's it. Hopefully that'll help.