Microsoft Azure Container Service Engine
The Azure Container Service Engine (
acs-engine) generates ARM (Azure Resource Manager) templates for Docker enabled clusters on Microsoft Azure with your choice of DCOS, Kubernetes, or Swarm orchestrators. The input to acs-engine is a cluster definition file which describes the desired cluster, including orchestrator, features, and agents. The structure of the input files is very similar to the public API for Azure Container Service.
Binary downloads for the latest version of acs-engine for are available here. Download
acs-engine for your operating system. Extract the binary and copy it to your
If you would prefer to build
acs-engine from source or you are interested in contributing to
acs-engine see building from source below.
acs-engine supports bash completion. To enable this, add the following to your
source <(acs-engine completion)
acs-engine reads a JSON cluster definition and generates a number of files that may be submitted to Azure Resource Manager (ARM). The generated files include:
- apimodel.json: is an expanded version of the cluster definition provided to the generate command. All default or computed values will be expanded during the generate phase.
- azuredeploy.json: represents a complete description of all Azure resources required to fulfill the cluster definition from
- azuredeploy.parameters.json: the parameters file holds a series of custom variables which are used in various locations throughout
- certificate and access config files: orchestrators like Kubernetes require certificates and additional configuration files (e.g. Kubernetes apiserver certificates and kubeconfig).
ACS Engine consumes a cluster definition which outlines the desired shape, size, and configuration of Kubernetes. There are a number of features that can be enabled through the cluster definition.
See ACS Engine The Long Way for an example on generating templates by hand.
Deploying with Azure CLI 2.0
Azure CLI 2.0 is the latest CLI maintained and supported by Microsoft. For installation instructions see the Azure CLI GitHub repository for the latest release.
$ az login $ az account set --subscription "<SUBSCRIPTION NAME OR ID>" $ az group create \ --name "<RESOURCE_GROUP_NAME>" \ --location "<LOCATION>" $ az group deployment create \ --name "<DEPLOYMENT NAME>" \ --resource-group "<RESOURCE_GROUP_NAME>" \ --template-file "./_output/<INSTANCE>/azuredeploy.json" \ --parameters "./_output/<INSTANCE>/azuredeploy.parameters.json"
Deploying with Powershell
Add-AzureRmAccount Select-AzureRmSubscription -SubscriptionID <SUBSCRIPTION_ID> New-AzureRmResourceGroup ` -Name <RESOURCE_GROUP_NAME> ` -Location <LOCATION> New-AzureRmResourceGroupDeployment ` -Name <DEPLOYMENT_NAME> ` -ResourceGroupName <RESOURCE_GROUP_NAME> ` -TemplateFile _output\<INSTANCE>\azuredeploy.json ` -TemplateParameterFile _output\<INSTANCE>\azuredeploy.parameters.json
Build ACS Engine from Source
Docker Development Environment
The easiest way to start hacking on
acs-engine is to use a Docker-based environment. If you already have Docker installed then you can get started with a few commands.
- Windows (PowerShell):
- Linux/OSX (bash):
This script mounts the
acs-engine source directory as a volume into the Docker container, which means you can edit your source code in your favorite editor on your machine, while still being able to compile and test inside of the Docker container. This environment mirrors the environment used in the acs-engine continuous integration (CI) system.
When the script
devenv.sh completes, you will be left at a command prompt.
Run the following commands to pull the latest dependencies and build the
# install and download build dependencies make bootstrap # build the `acs-engine` binary make build
The build process leaves the compiled
acs-engine binary in the
bin directory. Make sure everything completed successfully by running
bin/acs-engine without any arguments:
# ./bin/acs-engine ACS-Engine deploys and manages Kubernetes, OpenShift, Swarm Mode, and DC/OS clusters in Azure Usage: acs-engine [command] Available Commands: deploy Deploy an Azure Resource Manager template generate Generate an Azure Resource Manager template help Help about any command orchestrators Display info about supported orchestrators scale Scale an existing Kubernetes cluster upgrade Upgrade an existing Kubernetes cluster version Print the version of ACS-Engine Flags: --debug enable verbose debug logs -h, --help help for acs-engine Use "acs-engine [command] --help" for more information about a command.
Building on Windows, OSX, and Linux
Building ACS Engine from source has a few requirements for each of the platforms. Download and install the pre-reqs for your platform, Windows, Linux, or Mac:
- Setup your go workspace. This guide assumes you are using
c:\gopathas your Go workspace:
- Type Windows key-R to open the run prompt
rundll32 sysdm.cpl,EditEnvironmentVariablesto open the system variables
c:\gopath\binto your PATH variables
- Click "new" and add new environment variable named
GOPATHand set the value to
- Type Windows key-R to open the run prompt
cmdto open a command prompt
mkdir %GOPATH%to create your gopath
go get -d github.com/Azure/acs-engineto download acs-engine from GitHub
go get allto get the supporting components
go get -u github.com/go-bindata/go-bindata/...
go buildto build the project
go installto install the project
acs-engine.exeto see the command line parameters
OS X and Linux
- Open a command prompt to setup your gopath:
$HOME/.bash_profileand add the following lines to setup your go path
export GOPATH=$HOME/go export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
go get github.com/Azure/acs-engineto get the acs-engine Github project
cd $GOPATH/src/github.com/Azure/acs-engineto change to the source directory
make bootstrapto install supporting components
make buildto build the project
./bin/acs-engineto see the command line parameters