Prepare Your ACS Platform

Install the Azure Container Service Engine

The ACS Engine binary files are located here. To install the ACS Engine on Linux, run this command:

curl -L "" | bash

Install the Azure CLI

Follow the steps here to install the Azure CLI.

Login to Azure and set the subscription

az login
az account set -–subscription <Your-Azure-Subscription-UUID>

Create the Azure resource group and location

Get the Azure locations using the Azure CLI command:

az account list-locations

Example locations:


Create an Azure resource group by specifying a name and a location

az group create -–name <region-name> -–location <location>

Create a service principal in Azure AD

az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/72c299a4-xxxx-xxxx-xxxx-6855109979d9"
  "appId": "1311e5f6-xxxx-xxxx-xxxx-ede45a6b2bde",
  "displayName": "azure-cli-2017-10-27-07-37-41",
  "name": "http://azure-cli-2017-10-27-07-37-41",
  "password": "ac49a307-xxxx-xxxx-xxxx-fa551e221170",
  "tenant": "ca9700ce-xxxx-xxxx-xxxx-09c48f71d0ce"

Select and customize the deployment configuration

The example deployment here uses Kubernetes with pre-attached disks and VM scale sets. Find a sample JSON file in the acs-engine repository here.

Ensure that the Portworx target nodes have at least one “local” attached disk which can be used to contribute storage to the global storage pool.

For the masterProfile, specify an appropriate value for dnsPrefix which will be used for fully qualified domain name (FQDN) [ Ex: “myacsk8scluster”]. Use the default vmSize or select an appropriate value for the machine type and size. Specify the number and size of disks that will be attached to each DCOS private agent as per the template default:

"diskSizesGB": [128, 128, 128, 128]

Specify the adminUsername and public key data in keyData

Specify the clientId and secret which are located under the servicePrincipalProfile

Generate the Azure Resource Management (ARM) templates

acs-engine generate my-k8s-preAttachedDisks-vmas.json

The output files are generated in the _output/$NAME directory where $NAME corresponds to the name used for the dnsPrefix. For more information on the specific files that are generated, see this article.

Deploy the generated ARM template

az group deployment create \
    --name "$NAME" \
    --resource-group "$RGNAME" \
    --template-file "./_output/$NAME/azuredeploy.json" \
    --parameters "./_output/$NAME/azuredeploy.parameters.json"

where $RGNAME corresponds to the resource group name created above, and $NAME corresponds to the above value used for dnsPrefix

Last edited: Tuesday, Jul 5, 2022