Multi-cloud can be accomplished in several ways. Enterprises use public cloud services hosted in a public cloud. Often the same IT organization is running workloads on a private cloud as well. The ability to run workloads across clouds without change and manage multiple clouds with the same processes and toolsets is known as hybrid cloud. Hybrid cloud is very easy to accomplish when using the same virtual machine format such as vSphere in the private cloud and public cloud. What if you want to use public cloud services, such as the upcoming Azure Arc Data Services, on your private cloud?

Traditionally, running public cloud services on a private cloud or at the edge was not possible. A few solutions have been provided by hyperscalers to run limited cloud services outside of the public cloud, but those are not widely adopted. Microsoft and VMware are co-engineering a solution to provide enterprises the Azure Arc portfolio anywhere they have a VMware Tanzu Kubernetes Grid cluster.

The creation of this demo first required early access to Azure’s portal with Arc services enabled. You can see that the initial Azure portal screen has a bright yellow banner to indicate I am in the early access portion. Once Tanzu Kubernetes Grid is available, deploying Azure Arc is quite simple.

Figure 1

Configuring Kubernetes on vSphere

vSphere with Kubernetes and NSX-T was the foundation for the demo environment. Once vSphere is deployed, storage profiles are set, and NSX-T is configured, enabling Kubernetes is performed by completing a GUI setup in vCenter through the menu item Workload Platform. The first step is to create a Supervisor Cluster on vSphere. The Supervisor Cluster is online after three healthy control plane nodes [Figure 2] with multiple IP addresses from the IP address ranges specified in the Workload Management setup are running in the Namespaces Resource Pool.

Figure 2

The Supervisor Cluster can be used in two ways to run container-based applications. The first approach is to deploy container-based applications via a yaml file in a Namespace that is created in the Supervisor Cluster. The second approach is to create a Namespace and then deploy a Tanzu Kubernetes Grid guest cluster within the Namespace. The Tanzu Kubernetes Grid, or TKG, guest cluster is the method used for Azure Arc.

Deploying Azure Arc Data Services in Kubernetes

Once the Supervisor Cluster was online, the demoazure and Namespaces was created. The arctkc Kubernetes Guest Cluster was deployed to the demoazure namespace via a yaml file. This is the arc.yaml file that was used.


The Kubernetes command to deploy the yaml is kubectl apply -f arc.yaml. This is executed after logging into the Supervisor Cluster and changing the context to the demoazure Namespace. More information on connecting to the Supervisor Cluster and TKG Guest Clusters can be found here. There are many parameters and options when deploying a Guest Cluster, review them here before finalizing your yaml.

Once the arctkc cluster is online, it is time to deploy Azure Arc Data Services! This is performed with the azdata command. After authenticating to the Tanzu Kubernetes Grid Guest Cluster and verifying the context arctkc is being used, it is a simple control create function provided by Microsoft. The specific command for the demo was azdata control create --name arctkc -c ./custom. The reason for the custom flag was at the time Microsoft used “NodePort” rather than “LoadBalancer” in the deployment. NSX-T has built in LoadBalancer capabilities that will give a node an external IP address when specified with no extra configuration! Running the command kubectl create rolebinding -n arctkc fix-mssql-controller-rbac-2 --clusterrole=psp:vmware-system-privileged --serviceaccount=arc:default was the only other special action necessary for the azdata control create to result in a running Azure Arc Data Services cluster. Both custom steps will probably be unnecessary with the Azure Arc GA release.

After approximately 11 minutes, Azure Arc Data Services was running on the local vSphere cluster in a Tanzu Kubernetes Grid! In the demo, you can see the following set of commands [Figure 3].

Figure 3

The kubectl get pods -n arctkc command shows all components of Azure Arc Data Services on vSphere. The “azdata sql instance list” command shows the SQL server that was already deployed in the environment. The command that was executed after that screen showed the deployment of a second SQL server with azdata commands. The final display of the Azure Portal shows both running sql instances after a refresh [Figure 4].

Figure 4

The Advanced Technology Group in the Office of the CTO leads innovation for VMware customers. What would you like to see next? Let @vmwocto know!