Azure Container Service Engine - provision and deploy container orchestrators on Azure: Kubernetes, DC/OS, and Docker Swarm.
Switch branches/tags
0.17.0-patch-cherrypick 0.17.0-patch aks-20180621 aks-images aks-nil-linux-profile aks-patch-release-v0.21.2 aksrp-cherry-pick auxvendor delete-app hcp hyperkube-with-docker jack mas master new-vhd ostest patch-release-0.19.3 patch-release-0.22.4 patch-release-v0.12.1 patch-release-v0.12.2 patch-release-v0.12.3 patch-release-v0.12.4 patch-release-v0.12.5 patch-release-v0.13.1 patch-release-v0.14.1 patch-release-v0.14.2 patch-release-v0.14.3 patch-release-v0.14.4 patch-release-v0.14.5 patch-release-v0.14.6 patch-release-v0.15.1 patch-release-v0.15.2 patch-release-v0.16.1 patch-release-v0.16.2 patch-release-v0.17.1 patch-release-v0.18.1 patch-release-v0.18.2 patch-release-v0.18.3 patch-release-v0.18.4 patch-release-v0.18.5 patch-release-v0.18.6 patch-release-v0.18.7 patch-release-v0.18.8 patch-release-v0.18.9 patch-release-v0.19.1 patch-release-v0.19.2 patch-release-v0.19.3 patch-release-v0.19.4 patch-release-v0.19.5 patch-release-v0.19.6 patch-release-v0.20.1 patch-release-v0.20.2 patch-release-v0.20.3 patch-release-v0.20.4-hotfix patch-release-v0.20.4 patch-release-v0.20.5 patch-release-v0.20.6 patch-release-v0.20.7 patch-release-v0.20.8 patch-release-v0.20.9 patch-release-v0.21.1 patch-release-v0.21.2 patch-release-v0.22.1 patch-release-v0.22.2 patch-release-v0.22.3 patch-release-v0.22.4 patch-release-v0.23.1 patch-release-v0.23.2 patch-release-v0.24.1 patch-release-v0.24.2 patch-release-v0.24.3 patch-release-v0.25.1 patch-release-v0.25.2 patch-release-v0.25.3 patch-release-v0.26.1 patch-release-v0.26.2 release-aks-2018-08-15 release-v0.18.0 release-v0.19.0 release-v0.20.0 release-v0.21.0 release-v0.22.0-rc.2 release-v0.22.0 release-v0.23.0 release-v0.25.0 release-v0.26.0 v0.1.0 v0.15.0 v0.16.0-rc.5 v0.24.0 vars-back-compat vendor-dir-update
Nothing to show
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Add copyright headers to source files (#4324) Dec 3, 2018
.codecov change codecov yaml (#3316) Jun 20, 2018
.github Update (#2515) Mar 22, 2018
.prowci Updates from aks-engine spike (#4302) Nov 29, 2018
cmd Add copyright headers to source files (#4324) Dec 3, 2018
docs Support Windows Server 2019 and make it default (#4299) Nov 29, 2018
examples Support Windows Server 2019 and make it default (#4299) Nov 29, 2018
extensions feat(perf): Invoke-WebRequest much slower then browser download (#4294) Nov 28, 2018
jenkins retire Azure CDN for container image repository proxying (#3535) Jul 24, 2018
loc LEGO: check in for master to temporary branch. (#2983) May 16, 2018
packer Bump cluster-autoscaler to recommended version for 1.11.5 (#4314) Dec 1, 2018
parts we need newline (#4341) Dec 4, 2018
pkg [BUG] orchestratorVersion should not get changed for ACS scale apiVer… Dec 5, 2018
releases Add TLS Certificates to Docker Image (#3457) Jul 12, 2018
scripts Add copyright headers to source files (#4324) Dec 3, 2018
test Add copyright headers to source files (#4324) Dec 3, 2018
translations Update localization for strings (#2902) May 10, 2018
vendor Prune non-go files from vendoring (#4320) Nov 30, 2018
windows update images to 1803 (#2958) May 15, 2018
.dockerignore Fix make generate slowness on Docker for Mac (#1226) Aug 10, 2017
.gitattributes Add devenv for building/testing/validating under Docker Oct 27, 2016
.gitignore Using dep 0.5.0 and adding dep check to the CI/CD cycle (#3709) Aug 30, 2018
.vsts-ci.yaml Updates from aks-engine spike (#4302) Nov 29, 2018 remove duplicate sentence (#1559) Oct 9, 2017
Dockerfile Layer `ADD source-code` prior to `make bootstrap` layer in Dockerfile ( Aug 30, 2018
Dockerfile.k8swin Updating the go-bindata go get paths (#3119) May 31, 2018
Gopkg.lock Prune non-go files from vendoring (#4320) Nov 30, 2018
Gopkg.toml Prune non-go files from vendoring (#4320) Nov 30, 2018
LICENSE Add License Oct 6, 2016
Makefile Add copyright headers to source files (#4324) Dec 3, 2018
OWNERS adding Tariq to the owners text file (#3842) Sep 13, 2018 deprecation notice (#4335) Dec 4, 2018 remove one extra english paragraph in zh-cn readme. (#4281) Nov 22, 2018
labels.yaml docs(github): use labeler to manage project labels (#955) Jul 11, 2017
main.go Add copyright headers to source files (#4324) Dec 3, 2018
makedev.ps1 Updates from aks-engine spike (#4302) Nov 29, 2018 Improve VHD VSTS pipeline output URL (#3682) Aug 16, 2018 Add openshift e2e test (#2675) May 4, 2018 version output improvements (#1325) Aug 25, 2017

Pardon our Dust!

This codebase has been deprecated in favor of aks-engine, the natural evolution from acs-engine:

All future development and maintenance will occur there as an outcome of this deprecation. We're sorry for any inconvenience!

We've moved the Kubernetes code over 100% as-is (with the exception of the boilerplate renaming overhead that accompanies such a move); we're confident this housekeeping manouver will more effectively track the close affinity between the AKS managed service and the "build and manage your own configurable Kubernetes" stories that folks use this tool for.

See you at!

Microsoft Azure Container Service Engine - Builds Docker Enabled Clusters

Coverage Status CircleCI GoDoc


The Azure Container Service Engine (acs-engine) generates ARM (Azure Resource Manager) templates for Docker enabled clusters on Microsoft Azure with your choice of DC/OS, Kubernetes, OpenShift, Swarm Mode, or Swarm orchestrators. The input to the tool is a cluster definition. The cluster definition (or apimodel) is very similar to (in many cases the same as) the ARM template syntax used to deploy a Microsoft Azure Container Service cluster.

The cluster definition file enables you to customize your Docker enabled cluster in many ways including:

  • Choice of DC/OS, Kubernetes, OpenShift, Swarm Mode, or Swarm orchestrators
  • Multiple agent pools where each agent pool can specify:
    • Standard or premium VM Sizes, including GPU optimized VM sizes
    • Node count
    • Virtual Machine ScaleSets or Availability Sets
    • Storage Account Disks or Managed Disks
    • OS and distro
  • Custom VNET
  • Extensions

More info, including a thorough walkthrough is here.

User guides

These guides show how to create your first deployment for each orchestrator:

These guides cover more advanced features to try out after you have built your first cluster:


Follow the developers guide to set up your environment.

To build acs-engine, run make build. If you are developing with a working Docker environment, you can also run make dev (or makedev.ps1 on Windows) first to start a Docker container and run make build inside the container.

Please follow these instructions before submitting a PR:

  1. Execute make test to run unit tests.
  2. Manually test deployments if you are making modifications to the templates.
    • For example, if you have to change the expected resulting templates then you should deploy the relevant example cluster definitions to ensure that you are not introducing any regressions.
  3. Make sure that your changes are properly documented and include relevant unit tests.


Generate Templates

Usage is best demonstrated with an example:

$ vim examples/kubernetes.json

# insert your preferred, unique DNS prefix
# insert your SSH public key

$ ./acs-engine generate examples/kubernetes.json

This produces a new directory inside _output/ that contains an ARM template for deploying Kubernetes into Azure. (In the case of Kubernetes, some additional needed assets are generated and placed in the output directory.)

Code of conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact with any additional questions or comments.