Sergey Nivens - Fotolia
At its annual Microsoft Build developer conference in May, Microsoft discussed its roadmap for multicloud application deployment. The main route the company now provides for multicloud support is via a new feature called Azure Pipelines together with Azure Kubernetes Service (AKS), its own version of the Kubernetes container orchestration system.
Discussing the firm’s multicloud support, Microsoft principal programme manager Gabe Monroy says: “Multicloud is a reality for many enterprises and it is important that whatever CI/CD [continuous integration/continuous delivery] system they choose, it has first-class support for deploying to different environments.”
Organisations tend to consider deploying workloads across multiple public clouds either to improve resiliency or to avoid being locked into one provider’s cloud stack.
But from Microsoft’s perspective, Monroy says multicloud is more about portability to avoid being locked into one provider, than resiliency. Although resiliency via multicloud looks good on paper, he says: “Then things like physics and data locality come into the picture. Where does your data live? What are the latencies? Getting that data spread across multiple providers ends up being hard.”
Caveat on portability
Monroy says portability is feasible, but there is a caveat – developers need to take a lot of care over the dependent services they decide to use. This means that a standard Docker container is not portable if it is dependent on proprietary services.
Another element of portability is the ability to move workloads between the public cloud and on-premise servers. Monroy says Microsoft’s approach is centred on providing consistent tooling. “Our approach has been to provide consistent hardware and consistent tooling experiences, and consistent APIs [application programming interfaces] that allow us to support all the way from the cloud API down to the metal,” he says.
Microsoft describes Azure Pipelines as a fully featured CI/CD service. From a multicloud perspective, the company says it can be used to deploy code to most major cloud services, including Azure services.
Pipelines effectively enable DevOps teams to build automated workflows to build, test and deploy applications. A Pipeline can be triggered by an event such as checking in code to a GitHub repository, enabling continuous delivery. The basic idea is that the Pipeline provides the necessary plumbing to automate the various tasks that are triggered once code is checked into the repository.
The automation can include deploying the application on a container that can then be run on a Kubernetes cluster.
“We understand that one of the biggest blockers to adopting DevOps practices with containers and Kubernetes is setting up the required ‘plumbing’,” Microsoft Azure DevOps group programme manager Gopinath Chigakkagari explained in a recent blog post. “We believe developers should be able to go from a Git [repository] to an app running inside Kubernetes in as few steps as possible. With Azure Pipelines, we aim at making this experience straightforward, automating the creation of the CI/CD definitions, as well as the Kubernetes manifest.”
Microsoft uses YAML (YAML Ain’t Markup Language) to support multistage Pipelines. Such a Pipeline can include release as well as build automation, to provide both CI and CD capabilities. Microsoft has also added a feature called Environments, which lets DevOps teams group the resources targeted by a Pipeline, enabling better traceability and diagnostics.
Read more about multicloud
- Enterprise interest in multicloud deployments is on the rise, but with so many moving parts to take care of, will the benefits end up being too hard-fought to make it viable for most enterprises?
- Migrating to and managing a multicloud network introduces new complexities into the network. We look at how to avoid the potential pitfalls
An important part of Microsoft’s multicloud strategy is Azure Stack, which is preconfigured hardware to run Azure services that can be deployed locally. However, Kubernetes support on-premise via Azure Stack is behind the support for Kubernetes on the public Azure cloud.
“We have Kubernetes on Azure Stack through a project called AKS Engine, which is in preview now,” says Monroy. He claims that AKS Engine will be generally available “soon”, adding: “We have a lot of customers who are using this today.”
Serverless containers offer developers a way to achieve multicloud portability. In the Microsoft world, Azure AKS virtual nodes can be deployed to run workloads in Azure Container instances. “There is no lock-in, nothing Azure-specific – you just annotate your workloads and say ‘I want to opt in to this scaling capability’ and we’re able to provide per-second billing,” says Monroy. “If you take that same workload and you run it on a different cloud, it’s going to run.”
But AKS virtual nodes are not yet available for Azure in the UK – although they are available elsewhere in Europe.
Of Microsoft’s Kubernetes-based multicloud support, Monrow says: “For the container orchestration use case, it’s pretty clear that Kubernetes has the industry momentum, so we are advising customers to go with Kubernetes.”
Service Fabric powers on
As a consequence of the shift to Kubernetes, Microsoft appears to be downplaying the use of Service Fabric, its own microservices platform. But Monroy says it still uses Service Fabric internally and will continue to do so. “Service Fabric is powering many of the most important services in Azure. It was architected in an era before Kubernetes existed, so we are investing massively in it to ensure Azure is the best cloud platform it can be.”
According to Monroy, a subset of Microsoft customers require “stateful support” built into the Service Fabric architecture. “Service Fabric is architecturally a ring topology and it can replicate state across everywhere in the ring,” he says. “It’s very different to Kubernetes architecture – and it turns out there are some customers who need that capability, such as in gaming and in financial services.”
In most cases, though, Microsoft recommends Kubernetes. “Enterprises are increasingly looking to solutions that are multi-vendor and open source where the community shows up and rallies behind it,” says Monroy. “And that’s happening in Kubernetes, so we want to help our customers achieve that multi-vendor, open source goal. That’s why you are seeing us leading strongly with container orchestration and Kubernetes.”
Alternative to Microsoft’s multicloud model
Although Microsoft is edging towards multicloud support, there are other companies that have such support as a foundation of their architecture. The Cloud Foundry Foundation is one, with an open source Cloud Foundry (CF) Container Runtime that can be run either on-premise or in the public cloud.
The CF Container Runtime has now been migrated to use Kubernetes. But perhaps the key component is CF Bosh, an open source tool for managing the CF infrastructure. Bosh has a plug-in “cloud provider interface” model, which means it can deploy applications to multiple clouds, including Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), OpenStack and VMware vSphere.
Pivotal is a commercial company that provides extended support and enhanced versions of Cloud Foundry technology called PKS (Pivotal Container Service), through a collaboration with VMware. According to Pivotal CTO Colin Humphreys, while it does run well on VMware, PKS also runs on GCP, and AWS is now supported in the latest release. “If you are a VMware administrator, it’s a very natural feel to use this,” he says. “It has integrations into all the VMware technology.”
As for Microsoft Azure, Humphreys says: “We are bringing Azure support in PKS 1.3. We will add OpenStack shortly after that. It will run well on any public cloud.”
For companies that still prefer or require on-premise deployment, or for others that want to avoid cloud lock-in, the use of multicloud technology makes sense and is getting easier.
The fact that Microsoft is adopting Kubernetes and that VMware administrators can use a familiar toolset to manage PKS through Pivotal’s collaboration with VMware, means that organisations that are accustomed to dealing with Microsoft and VMware have a way forward to make the best use of multiclouds and container orchestration.