Azure Container Service Engine - a place for community to collaborate and build the best open Docker container infrastructure for Azure.
Go Perl 6 Shell Perl PowerShell Groovy Other
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.circleci cleanup openshift e2e, retain if fail for k8s (#3041) May 22, 2018
.github Update (#2515) Mar 22, 2018
.prowci Setup prow CI (#2923) May 23, 2018
cmd Delete role assignments when deleting a VM (#2934) May 23, 2018
docs Update docs (#3050) May 25, 2018
examples Autofill ACI Connector credentials and enable logs (#2903) May 23, 2018
extensions Fix extensions not working (#3031) May 22, 2018
jenkins Update references to to point to Azure CDN endpoint (#2721) Apr 19, 2018
loc LEGO: check in for master to temporary branch. (#2983) May 16, 2018
parts Use vars for nsg, ip, and lb openshift resources (#3089) May 26, 2018
pkg Sync template service broker deployment with latest o-a (#3069) May 25, 2018
releases acs-engine Docker Image Rework (#2784) May 2, 2018
scripts Add support for building win zip from for e2e testing (#3003) May 18, 2018
test Add healthcheck for registry-console in openshift e2e (#3071) May 25, 2018
translations Update localization for strings (#2902) May 10, 2018
vendor feat(*): Bumps client-go to v7.0.0 (#2954) May 21, 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 Delete role assignments when deleting a VM (#2934) May 23, 2018 remove duplicate sentence (#1559) Oct 9, 2017
Dockerfile Add the new signing key for the azure cli package (#2786) May 2, 2018
Dockerfile.k8swin Dev environment setup for k8s on Windows machine (#1703) Nov 3, 2017
LICENSE Add License Oct 6, 2016
Makefile use go-bindata (#3074) May 25, 2018
OWNERS Setup OWNERS files (#2791) Apr 30, 2018 First version of OpenShift docs (#2839) May 10, 2018 ref(docs): reorganize documentation Aug 3, 2017
glide.lock feat(*): Bumps client-go to v7.0.0 (#2954) May 21, 2018
glide.yaml feat(*): Bumps client-go to v7.0.0 (#2954) May 21, 2018
labels.yaml docs(github): use labeler to manage project labels (#955) Jul 11, 2017
main.go Resubmit PR# 2332: Enable colorized logging on Windows (#2482) Mar 20, 2018 Add openshift e2e test (#2675) May 4, 2018 version output improvements (#1325) Aug 25, 2017

Microsoft Azure Container Service Engine - Builds Docker Enabled Clusters

Coverage Status CircleCI


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

User guides


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 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/classic/kubernetes.classic.json

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

$ ./acs-engine generate examples/classic/kubernetes.classic.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.