Microsoft Azure Container Service Engine - Builds Docker Enabled Clusters
Overview
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, Swarm Mode, or Swarm orchestrators. The input to the tool is a cluster definition. The cluster definition 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 the following customizations to your Docker enabled cluster:
- choice of DC/OS, Kubernetes, Swarm Mode, or Swarm orchestrators
- multiple agent pools where each agent pool can specify:
- standard or premium VM Sizes,
- node count,
- Virtual Machine ScaleSets or Availability Sets,
- Storage Account Disks or Managed Disks (under private preview),
- Docker cluster sizes of 1200
- Custom VNET
User guides
Contributing
Please follow these instructions before submitting a PR:
-
Execute make ci
to run the checkin validation tests.
-
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 you're not
introducing any sort of regression.
Usage (Template Generation)
Usage is best demonstrated with an example:
$ vim examples/kubernetes.classic.json
# insert your preferred, unique DNS prefix
# insert your SSH public key
$ ./acs-engine examples/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.)
Deployment Usage
Generated templates can be deployed using
the Azure XPlat CLI (v0.10**.0** only),
the Azure CLI 2.0 or
Powershell.
Deploying with Azure XPlat CLI
NOTE: Some deployments will fail if certain versions of the Azure XPlat CLI are used. It's recommended that you use Azure XPlat CLI 0.10**.0** until a new point release of 0.10.x
is available with the fix.
$ azure login
$ azure account set "<SUBSCRIPTION NAME OR ID>"
$ azure config mode arm
$ azure group create \
--name="<RESOURCE_GROUP_NAME>" \
--location="<LOCATION>"
$ azure group deployment create \
--name="<DEPLOYMENT NAME>" \
--resource-group="<RESOURCE_GROUP_NAME>" \
--template-file="./_output/<INSTANCE>/azuredeploy.json" \
--parameters-file="./_output/<INSTANCE>/azuredeploy.parameters.json"
Deploying with Azure CLI 2.0
NOTE: Azure CLI 2.0 is still in preview, so changes may occur.
Please reference the Azure CLI 2.0 GitHub Repo for updated commands and please
ensure that your installation is up to date with the latest release. (Releases occur weekly!)
$ 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
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 opencode@microsoft.com with any additional questions or comments.