In a recent blog post, Microsoft introduced a new container service called Azure Container Instances. This service has been positioned, by Microsoft, as a way to:
Deliver containers with simplicity and speed, without VM infrastructure to manage.
The rise of microservices and DevOps have increased the adoption of containers. Corey Sanders, director of compute at Microsoft, explains some of the benefits of using containers:
Containers offer a broadly accepted and open standard, enabling simple portability between platforms and between clouds.
Microsoft has an existing container platform called Azure Container Services (ACS). ACS offers a container hosting solution that allows developers to bring open source orchestration tools such as Mesosphere DC/OS, Kubernetes or Docker Swarm into the Azure service.
The Azure Container Instances (ACI) service provides a simplified experience that does not require learning new orchestration concepts or programming models. What ACI does allow you to do is quickly start deploying containers so you can begin the development and testing of your use cases. ACI also can be used for bursting and scaling as opposed to VMs where there is more predictability around its consumption.
With many container technologies supported within Azure, Microsoft is positioning them in the following ways:
Image Source: https://azure.microsoft.com/en-au/services/container-instances/
Azure Container Instances provide developers with a lot of granularity and optionality when provisioning containers. Sanders explains:
An Azure Container Instance is a single container that starts in seconds and is billed by the second. ACI offers highly versatile sizing, allowing you to select the exact amount of memory separate from the exact count of vCPUs, so your application perfectly fits on the infrastructure. Your containers won’t be billed for a second longer than is required and won’t use a GB more than is needed.
ACIs are considered first-class objects within the Azure ecosystem. As a result, they are able to take advantage of many Azure features including Role-Based Access Control (RBAC). Developers can also take advantage of tags which aid in the allocation of billing at the individual container. However, since Azure directly exposes Azure Container Instances, there is no virtual machine management required. Or, as Sanders refers to as:
It is simply your code, in a container, running in the cloud.
Provisioning an ACI can be accomplished through a single command in the Azure Command Line (CLI) tool.
Image Source: https://azure.microsoft.com/en-us/blog/announcing-azure-container-instances/
To control the number of cores and memory required in the container, those are parameters that can be added to the container create statement previously highlighted.
Image Source: https://azure.microsoft.com/en-us/blog/announcing-azure-container-instances/
Azure Container Instances have been designed with simplicity in mind and are not intended to replace orchestration engines. As a result, Microsoft has released an open source ACI Connector for Kubernetes which allows Kubernetes clusters to deploy Azure Container Instances. Sanders describes the benefits of this approach as:
This enables on-demand and nearly instantaneous container compute, orchestrated by Kubernetes, without having VM infrastructure to manage and while still leveraging the portable Kubernetes API. This will allow you to utilize both VMs and container instances simultaneously in the same K8s cluster, giving you the best of both worlds.
Customers also have the ability to migrate between ACI and ACS models, providing developers with agility for deploying Kubernetes, unlike any other cloud provider.
Azure Container Instances are currently available in public preview for Linux containers, with support for Windows being available in the coming weeks.