Azure is just now rolling out availability zones. There are strange constraints everywhere, like you can only use premium storage accounts with specific VM types. You cannot use the same premium storage account for blobs. In general, not all configurations of skus for storage accounts, vms and disks are supported. You need to match availability set skus between scalesets and load balancers. If you connect an internal 'standard' load balancer to an instance, then it cannot reach the internet anymore. You can only attach one internal and one external load balancer to a scale set. You can't use the internal load balancer to loopback (same as internal AWS NLBs, but AWS has other options).
And so on. It all seems poorly integrated. Budget 5x as much time for a similar deployment on Azure as compared to AWS or GCP. Add more buffer if you need flexible automation, as you'll bump into those edge cases often as people change parameters.
They have a ridiculously huge amount of features compared to the other two major cloud providers, but integration between them is iffy. It is improving.
AKS seems pretty good, although it's still new and people are reporting issues. But it is promising, you can actually tweak quite a few things, and I have high hopes for the compatibility story (even more so than GKE). AWS's EKS is a marginal implementation at best.
On Azure AD, the tables are turned: it's AWS that provides an inconsistent story. There are many options, none are as well polished compared to Azure.
They did learn from some AWS mistakes. But technically speaking they have a bunch of polishing to do.
It makes no god damn sense. They had every opportunity to look at how Azure or Google were doing it and just straight-up copy it. For Christ's sake, they were over a year late to the game.
I remember during the original announcement, maybe its documented somewhere, they announced that Fargate was coming to EKS "eventually". They don't even have managed worker nodes for normal VMs, if their intention is to bring Fargate as well we literally won't see it for another two years. It took them over six months to get from announcement to GA.
The only good thing I have to say about it is that it's pretty reliable. Which isn't saying a lot because it doesn't do much, but they're happy to charge you $150/mo for what it does.
Did I mention it takes over 20 minutes to create a new cluster? Well, actually, they "call" it a cluster, but its really just the control plane. The actual cluster can take up to 30 minutes for everything to actually connect and be usable. My company was interested in doing a "pristine" staging environment for every/some PR, throwing it away afterward. Interesting idea. Not worth it on EKS because their performance is so god awful.
EKS is literally the reason why we abandoned AWS in favor of Google Cloud. I'm not suggesting that the rest of AWS isn't overall pretty great, but when nearly all of your workload is defined as "90% inside kubernetes, a few cloud-managed queues, and blob storage" Amazon isn't doing themselves any favors by ignoring the most interesting infrastructure technology to be released in the past five years. Oh, and our bill dropped by ~50% because preemptible instances on GCloud are actually easy to use, instead of the sheer insanity of trying to integrate spot fleets with an eksctl cluster.
For example AKS (azure kubernetes service) has been problematic for us. Similarly AWS RDS is much better than Azure PostgreSQL offering.
https://azure.microsoft.com/en-gb/blog/azure-immutable-blob-...