├── .gitignore ├── docs ├── MasterSize │ ├── resources │ │ └── masterprofile.PNG │ ├── azuredeploy.params.dcos.json │ ├── azuredeploy.params.dockerce.json │ ├── azuredeploy.params.kubernetes.json │ ├── README.md │ ├── azuredeploy.kubernetes.json │ ├── azuredeploy.dockerce.json │ └── azuredeploy.dcos.json ├── Ports │ ├── resources │ │ ├── ports_publicagent_nsg.png │ │ └── ports_publicagent_definition.png │ ├── azuredeploy.params.dockerce.json │ ├── azuredeploy.params.dcos.json │ ├── README.md │ ├── azuredeploy.dockerce.json │ └── azuredeploy.dcos.json ├── ManagedDisks │ ├── resources │ │ ├── k8s_managed_disks.png │ │ ├── dockerce_managed_disks.png │ │ ├── dcos_managed_disks_portal.png │ │ └── dcos_managed_disks_resources.png │ ├── azuredeploy.params.dcos.json │ ├── azuredeploy.params.dockerce.json │ ├── azuredeploy.params.kubernetes.json │ ├── README.md │ ├── azuredeploy.json │ ├── azuredeploy.dockerce.json │ └── azuredeploy.dcos.json ├── VNET │ ├── vnetarmtemplate │ │ ├── deploy.ps1 │ │ ├── azuredeploy.kubernetes.json │ │ ├── azuredeploy.dcos.json │ │ └── azuredeploy.swarm.json │ ├── azuredeploy.params.kubernetes.json │ ├── azuredeploy.params.dcos.json │ ├── azuredeploy.params.dockerce.json │ ├── README.md │ ├── azuredeploy.kubernetes.json │ ├── azuredeploy.dockerce.json │ └── azuredeploy.dcos.json ├── Simple │ ├── azuredeploy.params.dcos.json │ ├── azuredeploy.params.dockerce.json │ ├── azuredeploy.params.kubernetes.json │ ├── README.md │ ├── azuredeploy.json │ └── azuredeploy.dcos.json ├── StorageAccount │ ├── azuredeploy.params.dcos.json │ ├── azuredeploy.params.dockerce.json │ ├── azuredeploy.params.kubernetes.json │ ├── README.md │ ├── azuredeploy.json │ └── azuredeploy.dcos.json ├── OSDiskSize │ ├── azuredeploy.params.kubernetes.json │ ├── README.md │ └── azuredeploy.json ├── LargeCluster │ ├── azuredeploy.params.dcos.json │ ├── azuredeploy.params.dockerce.json │ ├── README.md │ └── azuredeploy.json ├── Windows │ ├── azuredeploy.params.kubernetes.json │ ├── azuredeploy.json │ └── README.md └── README.md ├── acs_regional_avilability ├── announcements ├── 2017-08-04_additional_regions.md ├── 2017-09-11_Kubernetes-cluster-not-responding-issue-fix.md ├── 2017-06-28-acs-uk-public-preview.md └── 2017-08-22_scenario_usage.md ├── .github └── ISSUE_TEMPLATE.md ├── README.md ├── kubernetes-version-support.md └── kubernetes-status.md /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store -------------------------------------------------------------------------------- /docs/MasterSize/resources/masterprofile.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/ACS/HEAD/docs/MasterSize/resources/masterprofile.PNG -------------------------------------------------------------------------------- /docs/Ports/resources/ports_publicagent_nsg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/ACS/HEAD/docs/Ports/resources/ports_publicagent_nsg.png -------------------------------------------------------------------------------- /docs/ManagedDisks/resources/k8s_managed_disks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/ACS/HEAD/docs/ManagedDisks/resources/k8s_managed_disks.png -------------------------------------------------------------------------------- /docs/ManagedDisks/resources/dockerce_managed_disks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/ACS/HEAD/docs/ManagedDisks/resources/dockerce_managed_disks.png -------------------------------------------------------------------------------- /docs/Ports/resources/ports_publicagent_definition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/ACS/HEAD/docs/Ports/resources/ports_publicagent_definition.png -------------------------------------------------------------------------------- /docs/ManagedDisks/resources/dcos_managed_disks_portal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/ACS/HEAD/docs/ManagedDisks/resources/dcos_managed_disks_portal.png -------------------------------------------------------------------------------- /docs/ManagedDisks/resources/dcos_managed_disks_resources.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/ACS/HEAD/docs/ManagedDisks/resources/dcos_managed_disks_resources.png -------------------------------------------------------------------------------- /docs/VNET/vnetarmtemplate/deploy.ps1: -------------------------------------------------------------------------------- 1 | $VerbosePreference="Continue" 2 | $deployName="myKubeVnet" 3 | $RGName=$deployName 4 | $locName="West US" 5 | #$templateFile = "azuredeploy.dcos.json" 6 | #$templateFile = "azuredeploy.swarm.json" 7 | $templateFile = "azuredeploy.kubernetes.json" 8 | New-AzureRmResourceGroup -Name $RGName -Location $locName -Force 9 | New-AzureRmResourceGroupDeployment -Name $deployName -ResourceGroupName $RGName -TemplateFile $templateFile 10 | -------------------------------------------------------------------------------- /acs_regional_avilability: -------------------------------------------------------------------------------- 1 | ## List of all ACS RPv1 regions: 2 | 3 | Australia Southeast 4 | 5 | North Europe 6 | 7 | Brazil South 8 | 9 | Australia East 10 | 11 | Japan East 12 | 13 | North Central US 14 | 15 | Westus 16 | 17 | East Asia 18 | 19 | Eastus2 20 | 21 | South Central US 22 | 23 | Southeast Asia 24 | 25 | East US 26 | 27 | West Europe 28 | 29 | Central US 30 | 31 | ## List of RPv2 regions: 32 | 33 | UK West 34 | 35 | UK South 36 | 37 | West Central US 38 | 39 | West US 2 40 | 41 | Canada East 42 | 43 | Canada Central 44 | 45 | West India 46 | 47 | South India 48 | 49 | Central India 50 | 51 | Japan West 52 | -------------------------------------------------------------------------------- /docs/Simple/azuredeploy.params.dcos.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE" 10 | }, 11 | "agentCount": { 12 | "value": 2 13 | }, 14 | "agentVMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "linuxAdminUsername": { 18 | "value": "azureuser" 19 | }, 20 | "orchestratorType": { 21 | "value": "DCOS" 22 | }, 23 | "masterCount": { 24 | "value": 1 25 | }, 26 | "masterVMSize": { 27 | "value": "Standard_D2_v2" 28 | }, 29 | "sshRSAPublicKey": { 30 | "value": "GEN-SSH-PUB-KEY" 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /docs/ManagedDisks/azuredeploy.params.dcos.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE-2" 10 | }, 11 | "agentCount": { 12 | "value": 2 13 | }, 14 | "agentVMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "linuxAdminUsername": { 18 | "value": "azureuser" 19 | }, 20 | "orchestratorType": { 21 | "value": "DCOS" 22 | }, 23 | "masterCount": { 24 | "value": 1 25 | }, 26 | "masterVMSize": { 27 | "value": "Standard_D2_v2" 28 | }, 29 | "sshRSAPublicKey": { 30 | "value": "GEN-SSH-PUB-KEY" 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /docs/MasterSize/azuredeploy.params.dcos.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE" 10 | }, 11 | "agentCount": { 12 | "value": 2 13 | }, 14 | "agentVMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "linuxAdminUsername": { 18 | "value": "azureuser" 19 | }, 20 | "orchestratorType": { 21 | "value": "DCOS" 22 | }, 23 | "masterCount": { 24 | "value": 1 25 | }, 26 | "masterVMSize": { 27 | "value": "Standard_D4_v2" 28 | }, 29 | "sshRSAPublicKey": { 30 | "value": "GEN-SSH-PUB-KEY" 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /docs/Ports/azuredeploy.params.dockerce.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE-2" 10 | }, 11 | "agentCount": { 12 | "value": 2 13 | }, 14 | "agentVMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "linuxAdminUsername": { 18 | "value": "azureuser" 19 | }, 20 | "orchestratorType": { 21 | "value": "DockerCE" 22 | }, 23 | "masterCount": { 24 | "value": 1 25 | }, 26 | "masterVMSize": { 27 | "value": "Standard_D2_v2" 28 | }, 29 | "sshRSAPublicKey": { 30 | "value": "GEN-SSH-PUB-KEY" 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /docs/Simple/azuredeploy.params.dockerce.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE" 10 | }, 11 | "agentCount": { 12 | "value": 2 13 | }, 14 | "agentVMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "linuxAdminUsername": { 18 | "value": "azureuser" 19 | }, 20 | "orchestratorType": { 21 | "value": "DockerCE" 22 | }, 23 | "masterCount": { 24 | "value": 1 25 | }, 26 | "masterVMSize": { 27 | "value": "Standard_D2_v2" 28 | }, 29 | "sshRSAPublicKey": { 30 | "value": "GEN-SSH-PUB-KEY" 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /docs/ManagedDisks/azuredeploy.params.dockerce.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE-2" 10 | }, 11 | "agentCount": { 12 | "value": 2 13 | }, 14 | "agentVMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "linuxAdminUsername": { 18 | "value": "azureuser" 19 | }, 20 | "orchestratorType": { 21 | "value": "DockerCE" 22 | }, 23 | "masterCount": { 24 | "value": 1 25 | }, 26 | "masterVMSize": { 27 | "value": "Standard_D2_v2" 28 | }, 29 | "sshRSAPublicKey": { 30 | "value": "GEN-SSH-PUB-KEY" 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /docs/MasterSize/azuredeploy.params.dockerce.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE" 10 | }, 11 | "agentCount": { 12 | "value": 2 13 | }, 14 | "agentVMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "linuxAdminUsername": { 18 | "value": "azureuser" 19 | }, 20 | "orchestratorType": { 21 | "value": "DockerCE" 22 | }, 23 | "masterCount": { 24 | "value": 1 25 | }, 26 | "masterVMSize": { 27 | "value": "Standard_D4_v2" 28 | }, 29 | "sshRSAPublicKey": { 30 | "value": "GEN-SSH-PUB-KEY" 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /docs/VNET/vnetarmtemplate/azuredeploy.kubernetes.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { }, 5 | "variables": { }, 6 | "resources": [ 7 | { 8 | "apiVersion": "2016-03-30", 9 | "location": "[resourceGroup().location]", 10 | "name": "KubernetesCustomVNET", 11 | "properties": { 12 | "addressSpace": { 13 | "addressPrefixes": [ 14 | "10.239.0.0/16" 15 | ] 16 | }, 17 | "subnets": [ 18 | { 19 | "name": "KubernetesSubnet", 20 | "properties": { 21 | "addressPrefix": "10.239.0.0/16" 22 | } 23 | } 24 | ] 25 | }, 26 | "type": "Microsoft.Network/virtualNetworks" 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /docs/Ports/azuredeploy.params.dcos.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE-2" 10 | }, 11 | "agentCount": { 12 | "value": 2 13 | }, 14 | "agentVMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "linuxAdminUsername": { 18 | "value": "azureuser" 19 | }, 20 | "orchestratorType": { 21 | "value": "DCOS" 22 | }, 23 | "masterCount": { 24 | "value": 1 25 | }, 26 | "masterVMSize": { 27 | "value": "Standard_D2_v2" 28 | }, 29 | "sshRSAPublicKey": { 30 | "value": "GEN-SSH-PUB-KEY" 31 | }, 32 | "osType": { 33 | "value": "Linux" 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /docs/StorageAccount/azuredeploy.params.dcos.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE" 10 | }, 11 | "agentCount": { 12 | "value": 2 13 | }, 14 | "agentVMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "linuxAdminUsername": { 18 | "value": "azureuser" 19 | }, 20 | "orchestratorType": { 21 | "value": "DCOS" 22 | }, 23 | "masterCount": { 24 | "value": 1 25 | }, 26 | "masterVMSize": { 27 | "value": "Standard_D2_v2" 28 | }, 29 | "sshRSAPublicKey": { 30 | "value": "GEN-UNIQUE" 31 | }, 32 | "servicePrincipalClientId": { 33 | "value": "GEN-UNIQUE" 34 | }, 35 | "servicePrincipalClientSecret": { 36 | "value": "GEN-UNIQUE" 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /docs/Simple/azuredeploy.params.kubernetes.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE" 10 | }, 11 | "agentCount": { 12 | "value": 2 13 | }, 14 | "agentVMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "linuxAdminUsername": { 18 | "value": "azureuser" 19 | }, 20 | "orchestratorType": { 21 | "value": "Kubernetes" 22 | }, 23 | "masterCount": { 24 | "value": 1 25 | }, 26 | "masterVMSize": { 27 | "value": "Standard_D2_v2" 28 | }, 29 | "sshRSAPublicKey": { 30 | "value": "GEN-SSH-PUB-KEY" 31 | }, 32 | "servicePrincipalClientId": { 33 | "value": "REPLACE" 34 | }, 35 | "servicePrincipalClientSecret": { 36 | "value": "REPLACE" 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /docs/OSDiskSize/azuredeploy.params.kubernetes.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE" 10 | }, 11 | "agentCount": { 12 | "value": 2 13 | }, 14 | "agentVMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "linuxAdminUsername": { 18 | "value": "azureuser" 19 | }, 20 | "orchestratorType": { 21 | "value": "Kubernetes" 22 | }, 23 | "masterCount": { 24 | "value": 1 25 | }, 26 | "masterVMSize": { 27 | "value": "Standard_D2_v2" 28 | }, 29 | "sshRSAPublicKey": { 30 | "value": "GEN-SSH-PUB-KEY" 31 | }, 32 | "servicePrincipalClientId": { 33 | "value": "REPLACE" 34 | }, 35 | "servicePrincipalClientSecret": { 36 | "value": "REPLACE" 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /docs/StorageAccount/azuredeploy.params.dockerce.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE" 10 | }, 11 | "agentCount": { 12 | "value": 2 13 | }, 14 | "agentVMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "linuxAdminUsername": { 18 | "value": "azureuser" 19 | }, 20 | "orchestratorType": { 21 | "value": "DockerCE" 22 | }, 23 | "masterCount": { 24 | "value": 1 25 | }, 26 | "masterVMSize": { 27 | "value": "Standard_D2_v2" 28 | }, 29 | "sshRSAPublicKey": { 30 | "value": "GEN-UNIQUE" 31 | }, 32 | "servicePrincipalClientId": { 33 | "value": "GEN-UNIQUE" 34 | }, 35 | "servicePrincipalClientSecret": { 36 | "value": "GEN-UNIQUE" 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /docs/StorageAccount/azuredeploy.params.kubernetes.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE" 10 | }, 11 | "agentCount": { 12 | "value": 2 13 | }, 14 | "agentVMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "linuxAdminUsername": { 18 | "value": "azureuser" 19 | }, 20 | "orchestratorType": { 21 | "value": "Kubernetes" 22 | }, 23 | "masterCount": { 24 | "value": 1 25 | }, 26 | "masterVMSize": { 27 | "value": "Standard_D2_v2" 28 | }, 29 | "sshRSAPublicKey": { 30 | "value": "GEN-UNIQUE" 31 | }, 32 | "servicePrincipalClientId": { 33 | "value": "GEN-UNIQUE" 34 | }, 35 | "servicePrincipalClientSecret": { 36 | "value": "GEN-UNIQUE" 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /docs/MasterSize/azuredeploy.params.kubernetes.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE" 10 | }, 11 | "agentCount": { 12 | "value": 2 13 | }, 14 | "agentVMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "linuxAdminUsername": { 18 | "value": "azureuser" 19 | }, 20 | "orchestratorType": { 21 | "value": "Kubernetes" 22 | }, 23 | "masterCount": { 24 | "value": 1 25 | }, 26 | "masterVMSize": { 27 | "value": "Standard_D4_v2" 28 | }, 29 | "sshRSAPublicKey": { 30 | "value": "GEN-SSH-PUB-KEY" 31 | }, 32 | "servicePrincipalClientId": { 33 | "value": "REPLACE" 34 | }, 35 | "servicePrincipalClientSecret": { 36 | "value": "REPLACE" 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /docs/ManagedDisks/azuredeploy.params.kubernetes.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE-2" 10 | }, 11 | "agentCount": { 12 | "value": 2 13 | }, 14 | "agentVMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "linuxAdminUsername": { 18 | "value": "azureuser" 19 | }, 20 | "orchestratorType": { 21 | "value": "Kubernetes" 22 | }, 23 | "masterCount": { 24 | "value": 1 25 | }, 26 | "masterVMSize": { 27 | "value": "Standard_D2_v2" 28 | }, 29 | "sshRSAPublicKey": { 30 | "value": "GEN-SSH-PUB-KEY" 31 | }, 32 | "servicePrincipalClientId": { 33 | "value": " GEN-CLIENT-ID" 34 | }, 35 | "servicePrincipalClientSecret": { 36 | "value": " GEN-CLIENT-SECRET" 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /docs/VNET/vnetarmtemplate/azuredeploy.dcos.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { }, 5 | "variables": { }, 6 | "resources": [ 7 | { 8 | "apiVersion": "2016-03-30", 9 | "location": "[resourceGroup().location]", 10 | "name": "ExampleCustomVNET", 11 | "properties": { 12 | "addressSpace": { 13 | "addressPrefixes": [ 14 | "10.100.0.0/24", 15 | "10.200.0.0/24" 16 | ] 17 | }, 18 | "subnets": [ 19 | { 20 | "name": "ExampleMasterSubnet", 21 | "properties": { 22 | "addressPrefix": "10.100.0.0/24" 23 | } 24 | }, 25 | { 26 | "name": "ExampleAgentSubnet", 27 | "properties": { 28 | "addressPrefix": "10.200.0.0/24" 29 | } 30 | } 31 | ] 32 | }, 33 | "type": "Microsoft.Network/virtualNetworks" 34 | } 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /docs/VNET/vnetarmtemplate/azuredeploy.swarm.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { }, 5 | "variables": { }, 6 | "resources": [ 7 | { 8 | "apiVersion": "2016-03-30", 9 | "location": "[resourceGroup().location]", 10 | "name": "ExampleCustomVNET", 11 | "properties": { 12 | "addressSpace": { 13 | "addressPrefixes": [ 14 | "10.100.0.0/24", 15 | "10.200.0.0/24" 16 | ] 17 | }, 18 | "subnets": [ 19 | { 20 | "name": "ExampleMasterSubnet", 21 | "properties": { 22 | "addressPrefix": "10.100.0.0/24" 23 | } 24 | }, 25 | { 26 | "name": "ExampleAgentSubnet", 27 | "properties": { 28 | "addressPrefix": "10.200.0.0/24" 29 | } 30 | } 31 | ] 32 | }, 33 | "type": "Microsoft.Network/virtualNetworks" 34 | } 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /announcements/2017-08-04_additional_regions.md: -------------------------------------------------------------------------------- 1 | The new Azure Container Service is now available in the following regions : 2 | 3 | 1. UK West 4 | 2. UK South 5 | 3. West Central US 6 | 4. West US 2 7 | 5. Canada East 8 | 6. Canada Central 9 | 7. West India 10 | 8. South India 11 | 9. Central India 12 | 13 | The following regions are available under a feature flag and needs subscription access: 14 | 15 | 1. Korea South 16 | 2. Korea Central 17 | 18 | See the previous [announcement](../announcements/2017-06-28-acs-uk-public-preview.md) for new features. 19 | 20 | New functionality in the regions uksouth and ukwest can be deployed using the Azure CLI 2.0 version 2.0.12 which can be 21 | downloaded [here](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) 22 | 23 | For the other new regions you can download the nightly build [here](https://github.com/Azure/azure-cli#nightly-builds) 24 | 25 | #### Please ensure that if you choose to create your own Service Principal, you need to have role set to contributor and scope to the subscription under which you are deploying the ACS cluster 26 | -------------------------------------------------------------------------------- /docs/LargeCluster/azuredeploy.params.dcos.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE" 10 | }, 11 | "agentPool1Count": { 12 | "value": 3 13 | }, 14 | "agentPool1VMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "agentPool2Count": { 18 | "value": 15 19 | }, 20 | "agentPool2VMSize": { 21 | "value": "Standard_D2_v2" 22 | }, 23 | "agentPool3Count": { 24 | "value": 15 25 | }, 26 | "agentPool3VMSize": { 27 | "value": "Standard_D2_v2" 28 | }, 29 | "linuxAdminUsername": { 30 | "value": "azureuser" 31 | }, 32 | "orchestratorType": { 33 | "value": "DCOS" 34 | }, 35 | "masterCount": { 36 | "value": 1 37 | }, 38 | "masterVMSize": { 39 | "value": "Standard_D2_v2" 40 | }, 41 | "sshRSAPublicKey": { 42 | "value": "GEN-SSH-PUB-KEY" 43 | } 44 | } 45 | } -------------------------------------------------------------------------------- /docs/LargeCluster/azuredeploy.params.dockerce.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE" 10 | }, 11 | "agentPool1Count": { 12 | "value": 3 13 | }, 14 | "agentPool1VMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "agentPool2Count": { 18 | "value": 15 19 | }, 20 | "agentPool2VMSize": { 21 | "value": "Standard_D2_v2" 22 | }, 23 | "agentPool3Count": { 24 | "value": 15 25 | }, 26 | "agentPool3VMSize": { 27 | "value": "Standard_D2_v2" 28 | }, 29 | "linuxAdminUsername": { 30 | "value": "azureuser" 31 | }, 32 | "orchestratorType": { 33 | "value": "DockerCE" 34 | }, 35 | "masterCount": { 36 | "value": 1 37 | }, 38 | "masterVMSize": { 39 | "value": "Standard_D2_v2" 40 | }, 41 | "sshRSAPublicKey": { 42 | "value": "GEN-SSH-PUB-KEY" 43 | } 44 | } 45 | } -------------------------------------------------------------------------------- /docs/VNET/azuredeploy.params.kubernetes.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE" 10 | }, 11 | "agentCount": { 12 | "value": 2 13 | }, 14 | "agentVMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "linuxAdminUsername": { 18 | "value": "azureuser" 19 | }, 20 | "orchestratorType": { 21 | "value": "Kubernetes" 22 | }, 23 | "masterCount": { 24 | "value": 1 25 | }, 26 | "masterVMSize": { 27 | "value": "Standard_D2_v2" 28 | }, 29 | "vnetSubnetID": { 30 | "value": "/subscriptions/SUB_ID/resourceGroups/VNET_RG_NAME/providers/Microsoft.Network/virtualNetworks/VNET_NAME/subnets/SUBNET_NAME" 31 | }, 32 | "sshRSAPublicKey": { 33 | "value": "GEN-SSH-PUB-KEY" 34 | }, 35 | "servicePrincipalClientId": { 36 | "value": "REPLACE" 37 | }, 38 | "servicePrincipalClientSecret": { 39 | "value": "REPLACE" 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /docs/VNET/azuredeploy.params.dcos.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE" 10 | }, 11 | "agentCount": { 12 | "value": 2 13 | }, 14 | "agentVMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "agentVnetSubnetID": { 18 | "value": "/subscriptions/SUB_ID/resourceGroups/VNET_RG_NAME/providers/Microsoft.Network/virtualNetworks/VNET_NAME/subnets/AGENT_SUBNET_NAME" 19 | }, 20 | "linuxAdminUsername": { 21 | "value": "azureuser" 22 | }, 23 | "orchestratorType": { 24 | "value": "DCOS" 25 | }, 26 | "masterCount": { 27 | "value": 1 28 | }, 29 | "masterVMSize": { 30 | "value": "Standard_D2_v2" 31 | }, 32 | "masterVnetSubnetID": { 33 | "value": "/subscriptions/SUB_ID/resourceGroups/VNET_RG_NAME/providers/Microsoft.Network/virtualNetworks/VNET_NAME/subnets/MASTER_SUBNET_NAME" 34 | }, 35 | "sshRSAPublicKey": { 36 | "value": "GEN-SSH-PUB-KEY" 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /docs/VNET/azuredeploy.params.dockerce.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE" 10 | }, 11 | "agentCount": { 12 | "value": 2 13 | }, 14 | "agentVMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "agentVnetSubnetID": { 18 | "value": "/subscriptions/SUB_ID/resourceGroups/VNET_RG_NAME/providers/Microsoft.Network/virtualNetworks/VNET_NAME/subnets/AGENT_SUBNET_NAME" 19 | }, 20 | "linuxAdminUsername": { 21 | "value": "azureuser" 22 | }, 23 | "orchestratorType": { 24 | "value": "DockerCE" 25 | }, 26 | "masterCount": { 27 | "value": 1 28 | }, 29 | "masterVMSize": { 30 | "value": "Standard_D2_v2" 31 | }, 32 | "masterVnetSubnetID": { 33 | "value": "/subscriptions/SUB_ID/resourceGroups/VNET_RG_NAME/providers/Microsoft.Network/virtualNetworks/VNET_NAME/subnets/MASTER_SUBNET_NAME" 34 | }, 35 | "sshRSAPublicKey": { 36 | "value": "GEN-SSH-PUB-KEY" 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /docs/Windows/azuredeploy.params.kubernetes.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "value": "GEN-UNIQUE" 7 | }, 8 | "agentDnsNamePrefix": { 9 | "value": "GEN-UNIQUE" 10 | }, 11 | "agentCount": { 12 | "value": 2 13 | }, 14 | "agentVMSize": { 15 | "value": "Standard_D2_v2" 16 | }, 17 | "linuxAdminUsername": { 18 | "value": "azureuser" 19 | }, 20 | "windowsAgentAdminUsername": { 21 | "value": "azureuser" 22 | }, 23 | "windowsAgentAdminPassword":{ 24 | "value": "password1234$" 25 | }, 26 | "orchestratorType": { 27 | "value": "Kubernetes" 28 | }, 29 | "masterCount": { 30 | "value": 1 31 | }, 32 | "masterVMSize": { 33 | "value": "Standard_D2_v2" 34 | }, 35 | "sshRSAPublicKey": { 36 | "value": "GEN-SSH-PUB-KEY" 37 | }, 38 | "servicePrincipalClientId": { 39 | "value": "REPLACE" 40 | }, 41 | "servicePrincipalClientSecret": { 42 | "value": "REPLACE" 43 | }, 44 | "osType": { 45 | "value": "Windows" 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | **Is this a request for help?**: 4 | 5 | --- 6 | 7 | **Is this a BUG REPORT or FEATURE REQUEST?** (choose one): 8 | 9 | 22 | 23 | **Orchestrator and version (e.g. Kubernetes, DC/OS, Swarm)** 24 | 25 | 26 | **What happened**: 27 | 28 | 29 | **What you expected to happen**: 30 | 31 | 32 | **How to reproduce it** (as minimally and precisely as possible): 33 | 34 | 35 | **Anything else we need to know**: 36 | -------------------------------------------------------------------------------- /docs/OSDiskSize/README.md: -------------------------------------------------------------------------------- 1 | # Azure Container Service - OSDiskSizeGB 2 | 3 | 4 | 5 | 6 | You may change the disk size of both the master VM and agent VMs using the `OSDiskSizeGB` parameter. Providing more disk space to these VMs may allow you to have a longer retention period for your logs or cache things to disk from your containers. Valid disk sizes are between `1GB` and `1023GB` 7 | 8 | ## Deployment 9 | Please make sure that you have created a resource group in one of the following regions: `ukwest` or `uksouth`. 10 | 11 | You will also need to change the following values in the `azuredeploy.params.kubernetes.json` file: 12 | * `masterDnsNamePrefix` 13 | * `agentDnsNamePrefix` 14 | * `windowsAgentAdminPassword` 15 | * `sshaRSAPublicKey` 16 | * `servicePrincipalClientId` 17 | * `servicePrincipalClientSecret` 18 | 19 | You can deploy an ACS cluster with the following command: 20 | 21 | `az group deployment create -g --template-file azuredeploy.dcos.json --parameters azuredeploy.params.dcos.json` 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Microsoft Azure Container Service 2 | 3 | ## Overview 4 | 5 | This repository will serve as a home for tracking [known issues](https://github.com/Azure/ACS/issues?utf8=%E2%9C%93&q=is%3Aopen%20is%3Aissue%20label%3Aknown-issue) 6 | regarding the [Azure Container Service](https://azure.microsoft.com/en-us/services/container-service/). 7 | 8 | This will also host a document discussing the [state of Kubernetes on Azure](kubernetes-status.md) 9 | 10 | Please visit the [ACS-Engine](https://github.com/Azure/ACS-Engine) repository for issues or 11 | questions regarding the use of the open-source core of ACS. 12 | 13 | ## Announcements 14 | 15 | * **June 28, 2017** - [ACS UK Public Preview w/ Extended Features](announcements/2017-06-28-acs-uk-public-preview.md) 16 | 17 | * **August 04, 2017** - [ACS UK additional regions availability](announcements/2017-08-04_additional_regions.md) 18 | 19 | * **August 22, 2017** - [ACS RPv2 Scenario's using the Azure CLI 2.0](announcements/2017-08-22_scenario_usage.md) 20 | 21 | * **November 9, 2017** - [ACS Kubernetes cluster not responding issue fix](announcements/2017-09-11_Kubernetes-cluster-not-responding-issue-fix.md) 22 | 23 | ## Code of conduct 24 | 25 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. 26 | -------------------------------------------------------------------------------- /announcements/2017-09-11_Kubernetes-cluster-not-responding-issue-fix.md: -------------------------------------------------------------------------------- 1 | Recently we discovered a few ACS kubernetes clusters that were not responding after system reboots of the Master VM's. 2 | All ACS RPv1 clusters deployed will see this issue and ACS RPv2 clusters deployed after Fri Oct 20 06:49:20 PDT 2017 will see this issue. 3 | 4 | Upon investigation, we found out that that this was due to etcd not restarting. 5 | 6 | As a fix, we set etcd2 restart to 'always' after rebooting master VM's. This issue has been fixed and has being rolled out to RPv2 resions. 7 | 8 | To fix this issue manually, please run the following commands on all the master nodes in your cluster 9 | 10 | ` 11 | +- sudo /bin/sed -i s/Restart=on-abnormal/Restart=always/g /lib/systemd/system/etcd.service 12 | ` 13 | 14 | ` 15 | +- systemctl daemon-reload 16 | ` 17 | 18 | List of all ACS RPv1 regions: 19 | 20 | 1) australiasoutheast 21 | 22 | 2) northeurope 23 | 24 | 3) brazilsouth 25 | 26 | 4) australiaeast 27 | 28 | 5) japaneast 29 | 30 | 6) northcentralus 31 | 32 | 7) westus 33 | 34 | 8) eastasia 35 | 36 | 9) eastus2 37 | 38 | 10) southcentralus 39 | 40 | 11) southeastasia 41 | 42 | 12) eastus 43 | 44 | 13) westeurope 45 | 46 | 14) Centralus 47 | 48 | List of RPv2 regions: 49 | 50 | 1) UK West 51 | 52 | 2) UK South 53 | 54 | 3) West Central US 55 | 56 | 4) West US 2 57 | 58 | 5) Canada East 59 | 60 | 6) Canada Central 61 | 62 | 7) West India 63 | 64 | 8) South India 65 | 66 | 9) Central India 67 | 68 | 10) japanwest 69 | -------------------------------------------------------------------------------- /docs/Ports/README.md: -------------------------------------------------------------------------------- 1 | # Azure Container Service - Ports 2 | `ports` is now supported in ACS since version 2017-07-01. It will be one of the optional attribute in the `agentPoolProfile` definition. Ports need to conform the following rules 3 | - All ports must be unique 4 | - they must be specified with a agentDnsNamePrefix 5 | - range is 1 <= x <= 65535 6 | 7 | In sample templates we specify the public agent pool's ports like this 8 | ![nsg image](resources/ports_publicagent_definition.png) 9 | 10 | ## Before using sample template and parameters 11 | - Replace GEN-UNIQUE and GEN-UNIQUE-2 with different unique strings 12 | - Replace GEN-SSH-PUB-KEY with valid SSH public key 13 | 14 | ## Deploy using sample template and parameters 15 | With the provided sample ARM templates and parameters, 16 | - Using [az cli](https://github.com/Azure/azure-cli) to deploy 17 | ``` 18 | az group deployment create -g --template-file azuredeploy.dcos.json --parameters azuredeploy.params.dcos.json 19 | ``` 20 | Note, `` need to be in either `ukwest` or `uksouth` regions. Other regions don't support the new version yet. 21 | 22 | - Or simply click 23 | 24 | 25 | 26 | ## After deployment 27 | You should be able to check the public agent pool's nsg rules, in [azure portal](https://portal.azure.com/) 28 | ![nsg image](resources/ports_publicagent_nsg.png) -------------------------------------------------------------------------------- /announcements/2017-06-28-acs-uk-public-preview.md: -------------------------------------------------------------------------------- 1 | # Microsoft Azure Container Service 2 | 3 | ## ACS UK Public Preview Release 4 | **Announced: June 28, 2017** 5 | 6 | On June 28, 2017, the Azure Container Service team released a new version of the 7 | service as public preview in the UK region. This is available in the `ukwest` 8 | and `uksouth` regions. The new service is based on the open-source heart of 9 | ACS: [ACS-Engine](https://github.com/Azure/acs-engine). As part of this new 10 | release, a new preview header version `2017-07-01` is now available. 11 | 12 | The new header version `2017-07-01` exposes the following new preview features: 13 | 14 | 1. [Simple Clusters](../docs/Simple/README.md) - Deploy a standard cluster 15 | 2. [Large Clusters](../docs/LargeCluster/README.md) - Supports multiple worker pools 16 | 3. [Storage via Managed Disks](../docs/ManagedDisks/README.md) - Support for storing OS disks in Azure's new Managed Disk feature (see #3) 17 | 4. [Storage via Storage Accounts](../docs/StorageAccount/README.md) - Support for storing OS disks in Azure's classic Storage Accounts 18 | 5. [Configurable Master Size](../docs/MasterSize/README.md) - User control over Master VM SKU/size 19 | 6. [Configurable OS Disk Size](../docs/OSDiskSize/README.md) - User control over Master VM OS Disk size 20 | 7. [Configurable Network Ports](../docs/Ports/README.md) - User control over additional network ports 21 | 8. [Bring your own VNET](../docs/VNET/README.md) - User control of the network the cluster is deployed into 22 | 9. [Windows](../docs/Windows/README.md) - Support for deploying Windows clusters 23 | 24 | You may wish to start with [the documentation index page](../docs/README.md) which contains 25 | instructions for deploying via [Azure CLI](https://github.com/Azure/azure-cli). Additionally, each extended feature 26 | page should contain a link to deploy via the Portal. 27 | 28 | And don't forget, these new features only work in `ukwest` and `uksouth`, 29 | for now. -------------------------------------------------------------------------------- /docs/ManagedDisks/README.md: -------------------------------------------------------------------------------- 1 | # Azure Container Service - Managed Disks 2 | 3 | You can now create clusters with all managed disks, meaning the whole cluster has encryption at rest by default, as can be [read here](https://azure.microsoft.com/blog/azure-managed-disks-sse/?v=17.23h) 4 | 5 | All orchestrators clusters in version “vlabs” and v20170701 use managed disks by default on all masters and agents with the exception of K8S agents. If you don’t need Kubernetes persistent volumes, you can even override K8S agents to use managed disks [example here](https://github.com/Azure/acs-engine/blob/master/examples/disks-managed/kubernetes-preAttachedDisks-vmas.json) 6 | 7 | ## Before using sample template and parameters 8 | - Replace GEN-UNIQUE and GEN-UNIQUE-2 with different unique strings 9 | - Replace GEN-SSH-PUB-KEY with valid SSH public key 10 | - Replace GEN-CLIENT-ID and GEN-CLIENT-SECRET with valid service principal client Id and client secret 11 | 12 | ## Deploy using sample template and parameters 13 | With the provided sample ARM templates and parameters, 14 | - Using [az cli](https://github.com/Azure/azure-cli) to deploy 15 | ``` 16 | az group deployment create -g --template-file azuredeploy.dcos.json --parameters azuredeploy.params.dcos.json 17 | ``` 18 | Note, `` need to be in either `ukwest` or `uksouth` regions. Other regions don't support the new version yet. 19 | 20 | ## After deployment 21 | If you check the resource groups in [azure portal](https://portal.azure.com/), you will not see any storage accounts under Microsoft Storage, except for DCOS, where you will see one storage account. 22 | 23 | ## Examples 24 | 25 | ### - Kubernetes Example 26 | ![nsg image](resources/k8s_managed_disks.png) 27 | 28 | ### - Docker CE Example 29 | ![nsg image](resources/dockerce_managed_disks.png) 30 | 31 | ### - DCOS Example 32 | #### - Azure Portal 33 | ![nsg image](resources/dcos_managed_disks_portal.png) 34 | 35 | #### - resources.azure.com 36 | ![nsg image](resources/dcos_managed_disks_resources.png) -------------------------------------------------------------------------------- /docs/LargeCluster/README.md: -------------------------------------------------------------------------------- 1 | # Microsoft Azure Container Service 2 | ## Multi agent pool clusters 3 | Starting in api-version "2017-07-01" ACS is adding support for multiple agent pools for DCOS and DockerCE(SwarmMode) clusters. Kubernetes is not ready yet but defintiely on our TODO list. Each agent pool can have different counts of vms and different vm sizes. They also can each have their own [dns prefix/port configuration](../Ports/README.md). The dns prefix for each agent pool must be unique/we do not support directly load balancing from a single loadbalancer to multiple agent pools. The common solution to this type of issue is to have a single public agent pool with an ingress controller and have the ingress controller load balance between the nodes. 4 | ## Quick Deploy 5 | 6 | 7 | 8 | 9 | ## Deploying 'az' cli 10 | ### Prerequsites 11 | This demo will use [Azure cli](https://github.com/Azure/azure-cli). 12 | 1. `az login` 13 | 2. `az account set --subscription ${SUBSCRIPTION_ID}` 14 | 15 | ### Steps to create DCOS cluster 16 | 1. `az group create -l ukwest -n acs-demo-dcos` 17 | 2. edit `azuredeploy.params.dcos.json` 18 | - Replace GEN-SSH-PUB-KEY with 19 | - Replace GEN-UNIQUE with proper unique dns prefix(s), each needs to be unique 20 | - Change any agent pool counts or vm sizes to desired values 21 | 3. `az group deployment create -g acs-demo-dcos --template-file azuredeploy.json --parameters azuredeploy.params.dcos.json` 22 | 23 | ### Steps to create DockerCE cluster 24 | 1. `az group create -l ukwest -n acs-demo-dockerce` 25 | 2. edit `azuredeploy.params.dockerce.json` 26 | - Replace GEN-SSH-PUB-KEY with 27 | - Replace GEN-UNIQUE with proper unique dns prefix(s), each needs to be unique 28 | - Change any agent pool counts or vm sizes to desired values 29 | 3. `az group deployment create -g acs-demo-dockerce --template-file azuredeploy.json --parameters azuredeploy.params.dockerce.json` 30 | -------------------------------------------------------------------------------- /docs/VNET/README.md: -------------------------------------------------------------------------------- 1 | # Custom VNET 2 | 3 | ## Overview 4 | 5 | These examples show you how to build a customized Docker enabled cluster on Microsoft Azure where you can provide your own VNET. 6 | 7 | These examples use two new primitives named `vnetSubnetId` and `firstConsecutiveStaticIP`. 8 | 9 | To try: 10 | 11 | 1. first deploy a custom vnet. An example of an arm template that does this is under directory vnetarmtemplate. 12 | 2. next configure the example templates and deploy according to the examples: 13 | 3. For Kubernetes, you will need to apply the following workaround when deploying a cluster in a custom VNET with 14 | Kubernetes 1.6.0: 15 | 1. After a cluster has been created in step 6 get id of the route table resource from Microsoft.Network provider in your resource group. 16 | The route table resource id is of the format: 17 | `/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUPNAME/providers/Microsoft.Network/routeTables/ROUTETABLENAME` 18 | 2. Update properties of all subnets in the newly created VNET that are used by Kubernetes cluster to refer to the route table resource by appending the following to subnet properties: 19 | ```shell 20 | "routeTable": { 21 | "id": "/subscriptions//resourceGroups//providers/Microsoft.Network/routeTables/" 22 | } 23 | ``` 24 | 25 | E.g.: 26 | ```shell 27 | "subnets": [ 28 | { 29 | "name": "subnetname", 30 | "id": "/subscriptions//resourceGroups//providers/Microsoft.Network/virtualNetworks//subnets/", 31 | "properties": { 32 | "provisioningState": "Succeeded", 33 | "addressPrefix": "10.240.0.0/16", 34 | "routeTable": { 35 | "id": "/subscriptions//resourceGroups//providers/Microsoft.Network/routeTables/" 36 | } 37 | .... 38 | } 39 | .... 40 | } 41 | ] 42 | ``` -------------------------------------------------------------------------------- /kubernetes-version-support.md: -------------------------------------------------------------------------------- 1 | ## TERMINOLOGY 2 | 3 | Release – Format x.y (Major.Minor) Example 1.6, 1.7,1.8 4 | 5 | Version – Format x.y.z (Major.Minor.Patch) Example 1.6.8, 1.7.2, 1.8.0 6 | 7 | ## ACS RP V1 8 | 9 | Because ACS RP v1 will be phased out soon, adding newer kubernetes releases/versions to RP v1 will be done only with a compelling business need. 10 | 11 | The current Release and Version in RPv1 today is v1.6.6 12 | 13 | ACS RP v1 is available in the following regions 14 | 15 | 1) australiasoutheast 16 | 17 | 2) northeurope  18 | 19 | 3) brazilsouth     20 | 21 | 4) australiaeast     22 | 23 | 5) japaneast     24 | 25 | 6) northcentralus    26 | 27 | 7) westus   28 | 29 | 8) eastasia   30 | 31 | 9) eastus2     32 | 33 | 10) southcentralus    34 | 35 | 11) southeastasia     36 | 37 | 12) eastus           38 | 39 | 13) westeurope   40 | 41 | 14) Centralus 42 | 43 | 15) japanwest        44 | 45 | ## ACS ENGINE 46 | 47 | ACS-Engine has moved from supporting versions to supporting releases. For example, previously ACS-Engine customers could choose the 1.5.3 or the 1.6.2 version of Kubernetes in the ACS template. Today, ACS engine allows the user to specify only a release (for example, Release 1.6 or Release 1.7), and then ACS applies a patch that updates that release's version to the most recent stable version. 48 | 49 | The current **default** Release and Version is 1.7.5. 50 | 51 | Current supported releases are: 52 | 1. 1.5 53 | 2. 1.6 54 | 3. 1.7 (default) 55 | 56 | 57 | ## ACS RP V2 58 | 59 | ACS RP v2 automatically chooses the default release in ACS engine. Apart from that, the following deployment methods have slightly varying options and features: 60 | 61 | - Portal. Support only one release (which is the default in ACS Engine) (available today in regions where ACS RPv2 is deployed) 62 | - CLI. Support all releases supported in ACS Engine through a --–version or –release flag (NOT available today) 63 | - Template/REST API. Support all releases supported in ACS Engine as an input parameter (available today in regions where ACS RPv2 is deployed) 64 | 65 | ACS RP v2 is avilable in the folloiwng regions- 66 | 67 | 1) UK West 68 | 69 | 2) UK South 70 | 71 | 3) West Central US 72 | 73 | 4) West US 2 74 | 75 | 5) Canada East 76 | 77 | 6) Canada Central 78 | 79 | 7) West India 80 | 81 | 8) South India 82 | 83 | 9) Central India 84 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # Microsoft Azure Container Service 2 | 3 | ## Extended Features 4 | 5 | * [Extended Features and Examples](#extended-features-and-examples) 6 | * [Deployment via Azure CLI](#deployment-via-azure-cli) 7 | * [Useful Information](#useful-information) 8 | 9 | ### Extended Features and Examples 10 | 11 | (Note, these examples currently only work in [the UK Public Preview regions](../announcements/2017-06-28-acs-uk-public-preview).) 12 | 13 | 1. [Simple Clusters](../docs/Simple/README.md) - Deploy a standard cluster 14 | 2. [Large Clusters](../docs/LargeCluster/README.md) - Supports multiple worker pools 15 | 3. [Storage via Managed Disks](../docs/ManagedDisks/README.md) - Support for storing OS disks in Azure's new Managed Disk feature (see #3) 16 | 4. [Storage via Storage Accounts](../docs/StorageAccount/README.md) - Support for storing OS disks in Azure's classic Storage Accounts 17 | 5. [Configurable Master Size](../docs/MasterSize/README.md) - User control over Master VM SKU/size 18 | 6. [Configurable OS Disk Size](../docs/OSDiskSize/README.md) - User control over Master VM OS Disk size 19 | 7. [Configurable Network Ports](../docs/Ports/README.md) - User control over additional network ports 20 | 8. [Bring your own VNET](../docs/VNET/README.md) - User control of the network the cluster is deployed into 21 | 9. [Windows](../docs/Windows/README.md) - Support for deploying Windows clusters 22 | 23 | ### Deployment via [Azure CLI](https://github.com/Azure/azure-cli) 24 | 25 | **NOTE**: This assumes you are using Azure CLI from a bash environment. If not, you will 26 | need to minorly modify these instructions as appropriate into `cmd.exe`. 27 | 28 | You will want to edit the specified parameters file ahead of time, in order to exercise the functionality of each feature. 29 | 30 | ``` 31 | export CLUSTER_NAME="choose_a_name" 32 | export LOCATION="westuk" 33 | 34 | # edit ./azuredeploy.params.kubernetes.json as you need to 35 | # for example, try setting `orchestratorVersion` to `1.5.7` instead of `1.6.6`. 36 | 37 | az group create --name "${CLUSTER_NAME}" --location "${LOCATION}" 38 | az group deployment create \ 39 | --name "${CLUSTER_NAME}-deployment-${RANDOM}" \ 40 | --template-file "./azuredeploy.kubernetes.json" \ 41 | --parameters "@./azuredeploy.params.kubernetes.json" 42 | ``` 43 | 44 | ### Useful Information 45 | 46 | * You can discover the avialable SKUs and sizes by executing `az vm list-sizes`. 47 | -------------------------------------------------------------------------------- /docs/Simple/README.md: -------------------------------------------------------------------------------- 1 | # Simple Azure Container Service demo 2 | In this demo, we will be creating three popular orchestrators `DCOS, DockerCE, and Kubernetes` on Azure Container Service using template with `2017-07-01` api version header which is available in `UK South` and `UK West`. 3 | 4 | ## Prerequsites 5 | This demo will use [Azure cli](https://github.com/Azure/azure-cli). 6 | 1. `az login` 7 | 2. `az account set --subscription ${SUBSCRIPTION_ID}` 8 | 9 | ## Steps to create DCOS cluster 10 | 1. `az group create -l ukwest -n acs-demo-dcos` 11 | 2. edit `azuredeploy.params.dcos.json` with 12 | - `sshRSAPublicKey` (a valid SSH key) 13 | - Replace GEN-UNIQUE with proper unique dns prefix 14 | 3. `az group deployment create -g acs-demo-dcos --template-file azuredeploy.dcos.json --parameters azuredeploy.params.dcos.json` 15 | 16 | ## Steps to create DockerCE cluster 17 | 1. `az group create -l ukwest -n acs-demo-dockerce` 18 | 2. edit `azuredeploy.params.dockerce.json` with 19 | - `sshRSAPublicKey` (a valid SSH key) 20 | - Replace GEN-UNIQUE with proper unique dns prefix 21 | 3. `az group deployment create -g acs-demo-dockerce --template-file azuredeploy.json --parameters azuredeploy.params.dockerce.json` 22 | 23 | ## Steps to create Kubernetes cluster 24 | 1. `az group create -l ukwest -n acs-demo-k8s` 25 | 2. To create Kubernetes cluster, we need a valid service principal 26 | 3. `az ad sp create-for-rbac --scopes /subscriptions/${SUBSCRIPTION_ID}` 27 | 4. edit `azuredeploy.params.kubernetes.json` with 28 | - `sshRSAPublicKey` (a valid SSH key) 29 | - `servicePrincipalClientId` (taken from the appId generated in step 2) 30 | - `servicePrincipalClientSecret` (taken from the password generated in step 2) 31 | - Replace GEN-UNIQUE with proper unique dns prefix 32 | 5. `az group deployment create -g acs-demo-k8s --template-file azuredeploy.json --parameters azuredeploy.params.kubernetes.json` 33 | 34 | ## Quick Deploy 35 | ### DCOS 36 | 37 | 38 | 39 | 40 | ### DockerCE & Kubernetes 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /announcements/2017-08-22_scenario_usage.md: -------------------------------------------------------------------------------- 1 | 2 | ### The ACS New RP V2 enables a bunch of new features including: 3 | 1) Exisiting VNET Support 4 | 2) Choice of master size 5 | 3) Multiple agent pools 6 | 4) Choice of managed disks vs storage account and their respective sizes for Masters and Agents 7 | 8 | The below use cases will be documented on ACOM when the RP V2 is Generally Available in a month or so. 9 | Please try them out and provide feedback on the issues section of this repo. 10 | 11 | Preview features only available in the following regions: 12 | UK West 13 | UK South 14 | West Central US 15 | West US 2 16 | Canada East 17 | Canada Central 18 | West India 19 | South India 20 | Central India 21 | 22 | ### Install Azure CLI v 2.0.14 23 | ### https://github.com/Azure/azure-cli 24 | 25 | #### Login 26 | ` az login ` 27 | 28 | #### Create a resource group 29 | ` az group create -n -l ukwest ` 30 | 31 | #### Multiple agent pools with default node size (Standard_D2_V2)* 32 | *Default – 1 agent pool and 3 nodes* 33 | 34 | ` az acs create -n -g -t Kubernetes ` 35 | 36 | *2 agent pools each with default number of nodes (3)* 37 | 38 | ` az acs create -n -g -t kubernetes -a "[{'name':'agentpool1'},{'name':'agentpool2'}]" ` 39 | 40 | *Multiple agent pools with custom node size* 41 | 42 | ` az acs create -n -g -t kubernetes -a "[{'name':'agentpool1'},{'name':'agentpool2','vmSize':'Standard_D2','count':5}]" ` 43 | 44 | agentpool1 with default node size Standard D2V2 and default no of nodes 3 45 | agentpool2 with VM size Standard_A0 and node count 5 46 | 47 | #### Custom VNET and Ports 48 | 49 | *Create a custom VNET* 50 | 51 | ` az network vnet create -g vnetrg -n vnet007 ` 52 | 53 | *Use the VNET id (see above) to create a cluster* 54 | 55 | ` az acs create -n vnetcs -g vnetrg -t kubernetes --agent-vnet-subnet-id "/subscriptions//resourceGroups/vnetrg/providers/Microsoft.Network/virtualNetworks/vnet007" ` 56 | 57 | *Use the VNET id and specifiy a custom port* 58 | 59 | ` az acs create -n portvnetcs -g vnetrg -t kubernetes --agent-vnet-subnet-id "/subscriptions//resourceGroups/vnetrg/providers/Microsoft.Network/virtualNetworks/vnet007" --agent-ports 4005 ` 60 | 61 | ##### When using custom VNETS, the kubernetes route tables and a subnet in the Custom VNET specified are not associated. Please follow documentation [here](../docs/VNET/README.md) to associate them 62 | 63 | #### Storage accounts and Managed Disks 64 | By default, the ACS RP v2 creates managed disks for masters and storage accounts for agents, both of which can be changed to use managed disks or storage accounts. 65 | 66 | *Use managed disks for masters and agents* 67 | 68 | ` az acs create -n storagecs -g storagerg -t kubernetes --master-storage-profile ManagedDisks --agent-storage-profile ManagedDisks ` 69 | 70 | Default master os disk size and agent os disk size are 30GB each 71 | Master etcd disk size is 128GB 72 | 73 | *Use managed disks for masters and agents and specifiy each size* 74 | 75 | ` az acs create -n storagecs -g storagerg -t kubernetes --master-storage-profile ManagedDisks --master-osdisk-size 30 --agent-storage-profile ManagedDisks --agent-osdisk-size 120 ` 76 | 77 | #### Delete a cluster 78 | Deleting an ACS cluster deletes the resources it created in a separate resource group it created but leaves the user created resource group untouched* 79 | 80 | ` az acs delete -n -g ` 81 | 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /docs/StorageAccount/README.md: -------------------------------------------------------------------------------- 1 | # Azure Container Service - Storage Account 2 | 3 | ACS API version `2017-07-01` includes support for the `StorageAccount` Azure resource. The provided sample templates will exemplify how to opt your cluster into this storage paradigm. Supported orchestrators: 4 | 5 | - Kubernetes 6 | - DC/OS 7 | - Docker CE 8 | 9 | ## How to engage StorageAccount features 10 | 11 | DC/OS, Docker CE, and Kubernetes have managed disks for *masters* enabled by default; and DC/OS and Docker CE have managed disks for *agents* enabled by default. Below demonstrates how to override these defaults and enable `.vhd` blobs in Azure Storage accounts. 12 | 13 | In your cluster schema, include in your master and agent pool definitions the `storageProfile` property, giving it a value of `StorageAccount`. E.g.: 14 | 15 | ``` 16 | "masterProfile": { 17 | , 18 | "storageProfile": "StorageAccount", 19 | 20 | }, 21 | "agentPoolProfiles": [ 22 | { 23 | , 24 | "storageProfile": "StorageAccount", 25 | 26 | } 27 | ] 28 | ``` 29 | 30 | The above has been applied in the sample deployment templates `azuredeploy.json` (prepared for example Kubernetes and Docker CE deployments) and `azuredeploy.dcos.json` (prepared for an example DC/OS deployment). 31 | 32 | ## Deployment via [Azure Portal](https://portal.azure.com) 33 | 34 | ### For Kubernetes and Docker CE 35 | 36 | 37 | 38 | ### For DC/OS 39 | 40 | 41 | 42 | ## Deployment with [Azure CLI](https://github.com/Azure/azure-cli) 43 | 44 | (This assumes you are using Azure CLI from a bash environment. If not, you will 45 | need to copy-paste these instructions as appropriate into cmd.exe) 46 | 47 | ``` 48 | export CLUSTER_NAME="choose_a_name" 49 | export LOCATION="uksouth" 50 | 51 | ``` 52 | 53 | ### For Kubernetes: 54 | 55 | Replace all instances of the value `GEN-UNIQUE` in the provided sample parameters file `azuredeploy.params.kubernetes.json` with appropriate values for your environment. Then: 56 | 57 | ```az group create --name ${CLUSTER_NAME} --location ${LOCATION} 58 | az group deployment create \ 59 | --resource-group "${CLUSTER_NAME}-deployment-${RANDOM}" \ 60 | --template-file "./azuredeploy.json" \ 61 | --parameters "./azuredeploy.params.kubernetes.json" 62 | ``` 63 | 64 | ### For DC/OS: 65 | 66 | Replace all instances of the value `GEN-UNIQUE` in the provided sample parameters file `azuredeploy.params.dcos.json` with appropriate values for your environment. Then: 67 | 68 | ```az group create --name ${CLUSTER_NAME} --location ${LOCATION} 69 | az group deployment create \ 70 | --resource-group "${CLUSTER_NAME}-deployment-${RANDOM}" \ 71 | --template-file "./azuredeploy.dcos.json" \ 72 | --parameters "./azuredeploy.params.dcos.json" 73 | ``` 74 | 75 | ### For Docker CE: 76 | 77 | Replace all instances of the value `GEN-UNIQUE` in the provided sample parameters file `azuredeploy.params.dockerce.json` with appropriate values for your environment. Then: 78 | 79 | ```az group create --name ${CLUSTER_NAME} --location ${LOCATION} 80 | az group deployment create \ 81 | --resource-group "${CLUSTER_NAME}-deployment-${RANDOM}" \ 82 | --template-file "./azuredeploy.json" \ 83 | --parameters "./azuredeploy.params.dockerce.json" 84 | ``` -------------------------------------------------------------------------------- /kubernetes-status.md: -------------------------------------------------------------------------------- 1 | # Status of Kubernetes on Azure 2 | 3 | Contents: 4 | * [Features Status](#features-status) 5 | * [Recommended Cluster Deployment Mechanism](#recommended-cluster-deployment-mechanism) 6 | * [Future Work](#future-work) 7 | 8 | ## Features Status 9 | 10 | | Feature | K8s 1.3.x | K8s 1.4.6 | K8s 1.5.1 | K8s 1.6.6 | PRs | 11 | | ------- | --------- | --------- | --------- | --------- | --- | 12 | | Native Pod Networking | | ✓ | ✓ | ✓ | [#28821](https://github.com/kubernetes/kubernetes/pull/28821) | 13 | | Automatic L4 Load Balancers | | ✓ | ✓ | ✓ | [#28821](https://github.com/kubernetes/kubernetes/pull/28821), [#36256](https://github.com/kubernetes/kubernetes/pull/36256) | 14 | | Source IP White-listing w/ L4 Load Balancers | | | ✓ | ✓ | [#36696](https://github.com/kubernetes/kubernetes/pull/36696) | 15 | | Source IP Preservation w/ L4 Load Balancers | | | ✓ | ✓ | [#36557](https://github.com/kubernetes/kubernetes/pull/36557) | 16 | | Persistent VHD Disks (AzureDisk) | | ✓ | ✓ | ✓ | [#29836](https://github.com/kubernetes/kubernetes/pull/29836) | 17 | | Dynamically Provisioned Persistent Disks | | | ✓ | ✓ | [#30091](https://github.com/kubernetes/kubernetes/pull/30091) | 18 | 19 | * Kubernetes 1.4 was released on September 26, 2016. 20 | * Kubernetes 1.5 was released on December 12, 2016. 21 | * Kubernetes 1.6 was released on March 22, 2017. 22 | 23 | ## Recommended Cluster Deployment Strategy 24 | 25 | ### [Azure Container Service](https://azure.microsoft.com/en-us/services/container-service/) 26 | * Azure Container Service supports DC/OS, Swarm and Kubernetes (in preview). 27 | * Walkthrough: [Kubernetes on Azure Container Service](https://docs.microsoft.com/azure/container-service/container-service-kubernetes-walkthrough) 28 | * More Information: [Kubernetes Blog: Bringing Kubernetes Support to Azure](http://blog.kubernetes.io/2016/11/bringing-kubernetes-support-to-azure.html). 29 | 30 | ### [ACS-Engine](https://github.com/Azure/ACS-Engine) 31 | * The **open-source** core of the Azure Container Service 32 | * Enables easy, up-front modifications of Kubernetes clusters deployed with Azure Resource Manager (ARM) Templates 33 | * Allows for deep customization beyond what is supported in the official Azure Container Service 34 | 35 | ## Future Work 36 | 37 | These are potential projects that anyone could pick up to help Kubernetes on Azure scenarios. 38 | 39 | 1. **Azure Ingress Controller** 40 | * **Status**: [Work In Progress](https://github.com/JargoonPard/contrib/commits/azureingress) 41 | * **Description**: 42 | * Build an `azure-ingress-controller` using [Azure's ApplicationGateways](https://azure.microsoft.com/services/application-gateway/) 43 | 2. **Azure Cluster-Autoscale Backend** 44 | * **Status**: Not started 45 | * **Description**: 46 | * Build an Azure backend for [`cluster-autoscale`](https://github.com/kubernetes/contrib/tree/master/cluster-autoscaler). 47 | 3. **Azure Federation Support** 48 | * **Status**: Not started 49 | * **Description**: 50 | * Implementation of [dnsprovider](https://github.com/kubernetes/kubernetes/tree/master/federation/pkg/dnsprovider). 51 | 4. **Azure Active Directory Authorization Plugin** 52 | * **Status**: Not started 53 | * **Description**: 54 | * Implementation of [an Authorization plugin](http://kubernetes.io/docs/admin/authorization/) to compliment [Azure Active Directory OIDC Authentication](https://github.com/colemickens/azure-ad-k8s-oidc-example) 55 | 5. **Azure Virtual Machine Scale Set (VMSS) Support** 56 | * **Status**: Not started 57 | * **Description**: 58 | * The [Azure cloudprovider](https://github.com/kubernetes/kubernetes/tree/master/pkg/cloudprovider/providers/azure) only supports "loose" (non-VMSS) VMs. It should also support VMSS. 59 | 5. **Miscellaneous** 60 | * Use of Managed Disks in Azure (some work is in progress on this by @khenidak) 61 | * Performance Improvements for AzureDisk attach/detach timing. (See [this issue (and referenced issues)](https://github.com/colemickens/azure-kubernetes-demo/issues/14#issuecomment-250564890) for some background.) 62 | -------------------------------------------------------------------------------- /docs/MasterSize/README.md: -------------------------------------------------------------------------------- 1 | # Microsoft Azure Container Service 2 | 3 | ## masterVMSize 4 | 5 | Azure Container Service API version `2017-07-01` includes support for VMSize under MasterProfile. masterVMSize is the allowed size of VM of master in Azure depending on the orchestrator type. In sample templates we specify the master vmSize like this: 6 | 7 | ![nsg image](resources/masterprofile.PNG) 8 | 9 | The allowed sizes are obtained from [script using az cli](https://github.com/Azure/acs-engine/blob/master/pkg/acsengine/Get-AzureConstants.py) and can refer to [Azure constant data](https://github.com/Azure/acs-engine/blob/master/pkg/acsengine/azureconst.go) 10 | 11 | ## Allowed master VM sizes 12 | ### DCOS 13 | "Standard_A10", 14 | "Standard_A11", 15 | "Standard_A2", 16 | "Standard_A3", 17 | "Standard_A4", 18 | "Standard_A5", 19 | "Standard_A6", 20 | "Standard_A7", 21 | "Standard_A8", 22 | "Standard_A9", 23 | "Standard_D11", 24 | "Standard_D11_v2", 25 | "Standard_D11_v2_Promo", 26 | "Standard_D12", 27 | "Standard_D12_v2", 28 | "Standard_D12_v2_Promo", 29 | "Standard_D13", 30 | "Standard_D13_v2", 31 | "Standard_D13_v2_Promo", 32 | "Standard_D14", 33 | "Standard_D14_v2", 34 | "Standard_D14_v2_Promo", 35 | "Standard_D15_v2", 36 | "Standard_D2", 37 | "Standard_D2_v2", 38 | "Standard_D2_v2_Promo", 39 | "Standard_D3", 40 | "Standard_D3_v2", 41 | "Standard_D3_v2_Promo", 42 | "Standard_D4", 43 | "Standard_D4_v2", 44 | "Standard_D4_v2_Promo", 45 | "Standard_D5_v2", 46 | "Standard_D5_v2_Promo", 47 | "Standard_DS13", 48 | "Standard_DS13_v2", 49 | "Standard_DS13_v2_Promo", 50 | "Standard_DS14", 51 | "Standard_DS14_v2", 52 | "Standard_DS14_v2_Promo", 53 | "Standard_DS15_v2", 54 | "Standard_DS5_v2", 55 | "Standard_DS5_v2_Promo", 56 | "Standard_F16", 57 | "Standard_F8", 58 | "Standard_G1", 59 | "Standard_G2", 60 | "Standard_G3", 61 | "Standard_G4", 62 | "Standard_G5", 63 | "Standard_GS2", 64 | "Standard_GS3", 65 | "Standard_GS4", 66 | "Standard_GS5", 67 | "Standard_H16", 68 | "Standard_H16m", 69 | "Standard_H16mr", 70 | "Standard_H16r", 71 | "Standard_H8", 72 | "Standard_H8m", 73 | "Standard_L16s", 74 | "Standard_L32s", 75 | "Standard_L4s", 76 | "Standard_L8s", 77 | "Standard_M128ms", 78 | "Standard_M128s", 79 | "Standard_M64ms", 80 | "Standard_NC12", 81 | "Standard_NC24", 82 | "Standard_NC24r", 83 | "Standard_NC6", 84 | "Standard_NV12", 85 | "Standard_NV24", 86 | "Standard_NV6" 87 | 88 | ### Swarm, Kubernetes, and DockerCE 89 | "Standard_A10", 90 | "Standard_A11", 91 | "Standard_A2", 92 | "Standard_A2_v2", 93 | "Standard_A2m_v2", 94 | "Standard_A3", 95 | "Standard_A4", 96 | "Standard_A4_v2", 97 | "Standard_A4m_v2", 98 | "Standard_A5", 99 | "Standard_A6", 100 | "Standard_A7", 101 | "Standard_A8", 102 | "Standard_A8_v2", 103 | "Standard_A8m_v2", 104 | "Standard_A9", 105 | "Standard_D11", 106 | "Standard_D11_v2", 107 | "Standard_D11_v2_Promo", 108 | "Standard_D12", 109 | "Standard_D12_v2", 110 | "Standard_D12_v2_Promo", 111 | "Standard_D13", 112 | "Standard_D13_v2", 113 | "Standard_D13_v2_Promo", 114 | "Standard_D14", 115 | "Standard_D14_v2", 116 | "Standard_D14_v2_Promo", 117 | "Standard_D15_v2", 118 | "Standard_D2", 119 | "Standard_D2_v2", 120 | "Standard_D2_v2_Promo", 121 | "Standard_D3", 122 | "Standard_D3_v2", 123 | "Standard_D3_v2_Promo", 124 | "Standard_D4", 125 | "Standard_D4_v2", 126 | "Standard_D4_v2_Promo", 127 | "Standard_D5_v2", 128 | "Standard_D5_v2_Promo", 129 | "Standard_DS11", 130 | "Standard_DS11_v2", 131 | "Standard_DS11_v2_Promo", 132 | "Standard_DS12", 133 | "Standard_DS12_v2", 134 | "Standard_DS12_v2_Promo", 135 | "Standard_DS13", 136 | "Standard_DS13_v2", 137 | "Standard_DS13_v2_Promo", 138 | "Standard_DS14", 139 | "Standard_DS14_v2", 140 | "Standard_DS14_v2_Promo", 141 | "Standard_DS15_v2", 142 | "Standard_DS2", 143 | "Standard_DS2_v2", 144 | "Standard_DS2_v2_Promo", 145 | "Standard_DS3", 146 | "Standard_DS3_v2", 147 | "Standard_DS3_v2_Promo", 148 | "Standard_DS4", 149 | "Standard_DS4_v2", 150 | "Standard_DS4_v2_Promo", 151 | "Standard_DS5_v2", 152 | "Standard_DS5_v2_Promo", 153 | "Standard_F16", 154 | "Standard_F16s", 155 | "Standard_F2", 156 | "Standard_F2s", 157 | "Standard_F4", 158 | "Standard_F4s", 159 | "Standard_F8", 160 | "Standard_F8s", 161 | "Standard_G1", 162 | "Standard_G2", 163 | "Standard_G3", 164 | "Standard_G4", 165 | "Standard_G5", 166 | "Standard_GS1", 167 | "Standard_GS2", 168 | "Standard_GS3", 169 | "Standard_GS4", 170 | "Standard_GS5", 171 | "Standard_H16", 172 | "Standard_H16m", 173 | "Standard_H16mr", 174 | "Standard_H16r", 175 | "Standard_H8", 176 | "Standard_H8m", 177 | "Standard_L16s", 178 | "Standard_L32s", 179 | "Standard_L4s", 180 | "Standard_L8s", 181 | "Standard_M128ms", 182 | "Standard_M128s", 183 | "Standard_M64ms", 184 | "Standard_NC12", 185 | "Standard_NC24", 186 | "Standard_NC24r", 187 | "Standard_NC6", 188 | "Standard_NV12", 189 | "Standard_NV24", 190 | "Standard_NV6" 191 | 192 | # Example template and parameter files for all three orchestrators 193 | ## DCOS 194 | ### [azuredeploy.dcos.json](./azuredeploy.dcos.json) 195 | ### [azuredeploy.params.dcos.json](./azuredeploy.params.dcos.json) 196 | 197 | 198 | 199 | 200 | ## Kubernetes 201 | ### [azuredeploy.kubernetes.json](./azuredeploy.kubernetes.json) 202 | ### [azuredeploy.params.kubernetes.json](./azuredeploy.params.kubernetes.json) 203 | 204 | 205 | 206 | 207 | ## DockerCE 208 | ### [azuredeploy.dockerce.json](./azuredeploy.dockerce.json) 209 | ### [azuredeploy.params.dockerce.json](./azuredeploy.params.dockerce.json) 210 | 211 | 212 | 213 | -------------------------------------------------------------------------------- /docs/MasterSize/azuredeploy.kubernetes.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Sets the Domain name prefix for the Master nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 9 | } 10 | }, 11 | "agentDnsNamePrefix": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "Sets the Domain name prefix for the Agent nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 15 | } 16 | }, 17 | "agentCount": { 18 | "type": "int", 19 | "defaultValue": 1, 20 | "metadata": { 21 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 22 | }, 23 | "minValue":1, 24 | "maxValue":100 25 | }, 26 | "agentVMSize": { 27 | "type": "string", 28 | "defaultValue": "Standard_D2_v2", 29 | "metadata": { 30 | "description": "The size of the Virtual Machine." 31 | } 32 | }, 33 | "linuxAdminUsername": { 34 | "type": "string", 35 | "defaultValue": "azureuser", 36 | "metadata": { 37 | "description": "User name for the Linux Virtual Machines." 38 | } 39 | }, 40 | "orchestratorType": { 41 | "type": "string", 42 | "defaultValue": "Kubernetes", 43 | "allowedValues": [ 44 | "Kubernetes", 45 | "DCOS", 46 | "DockerCE" 47 | ], 48 | "metadata": { 49 | "description": "The type of orchestrator used to manage the applications on the cluster." 50 | } 51 | }, 52 | "masterCount": { 53 | "type": "int", 54 | "defaultValue": 1, 55 | "allowedValues": [ 56 | 1, 57 | 3, 58 | 5 59 | ], 60 | "metadata": { 61 | "description": "The number of Kubernetes masters for the cluster." 62 | } 63 | }, 64 | "masterVMSize": { 65 | "metadata": { 66 | "description": "The size of the Virtual Machine." 67 | }, 68 | "type": "string" 69 | }, 70 | "sshRSAPublicKey": { 71 | "type": "string", 72 | "metadata": { 73 | "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" 74 | } 75 | }, 76 | "servicePrincipalClientId": { 77 | "metadata": { 78 | "description": "Client ID (used by cloudprovider)" 79 | }, 80 | "type": "securestring", 81 | "defaultValue": "n/a" 82 | }, 83 | "servicePrincipalClientSecret": { 84 | "metadata": { 85 | "description": "The Service Principal Client Secret." 86 | }, 87 | "type": "securestring", 88 | "defaultValue": "n/a" 89 | } 90 | }, 91 | "variables": { 92 | "adminUsername":"[parameters('linuxAdminUsername')]", 93 | "agentCount":"[parameters('agentCount')]", 94 | "agentsEndpointDNSNamePrefix":"[parameters('agentDnsNamePrefix')]", 95 | "agentVMSize":"[parameters('agentVMSize')]", 96 | "masterCount":"[parameters('masterCount')]", 97 | "masterVMSize":"[parameters('masterVMSize')]", 98 | "mastersEndpointDNSNamePrefix":"[parameters('masterDnsNamePrefix')]", 99 | "orchestratorType":"[parameters('orchestratorType')]", 100 | "sshRSAPublicKey":"[parameters('sshRSAPublicKey')]", 101 | "servicePrincipalClientId": "[parameters('servicePrincipalClientId')]", 102 | "servicePrincipalClientSecret": "[parameters('servicePrincipalClientSecret')]", 103 | "useServicePrincipalDictionary": { 104 | "DCOS": 0, 105 | "DockerCE": 0, 106 | "Kubernetes": 1 107 | }, 108 | "useServicePrincipal": "[variables('useServicePrincipalDictionary')[variables('orchestratorType')]]", 109 | "servicePrincipalFields": [ 110 | null, 111 | { 112 | "ClientId": "[parameters('servicePrincipalClientId')]", 113 | "Secret": "[parameters('servicePrincipalClientSecret')]" 114 | } 115 | ] 116 | }, 117 | "resources": [ 118 | { 119 | "apiVersion": "2017-07-01", 120 | "type": "Microsoft.ContainerService/containerServices", 121 | "location": "[resourceGroup().location]", 122 | "name":"[concat('containerservice-',resourceGroup().name)]", 123 | "properties": { 124 | "orchestratorProfile": { 125 | "orchestratorType": "[variables('orchestratorType')]" 126 | }, 127 | "masterProfile": { 128 | "count": "[variables('masterCount')]", 129 | "dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]", 130 | "vmSize": "[variables('masterVMSize')]" 131 | }, 132 | "agentPoolProfiles": [ 133 | { 134 | "name": "agentpools", 135 | "count": "[variables('agentCount')]", 136 | "vmSize": "[variables('agentVMSize')]" 137 | } 138 | ] , 139 | "linuxProfile": { 140 | "adminUsername": "[variables('adminUsername')]", 141 | "ssh": { 142 | "publicKeys": [ 143 | { 144 | "keyData": "[variables('sshRSAPublicKey')]" 145 | } 146 | ] 147 | } 148 | }, 149 | "servicePrincipalProfile": "[variables('servicePrincipalFields')[variables('useServicePrincipal')]]" 150 | } 151 | } 152 | ], 153 | "outputs": { 154 | "masterFQDN": { 155 | "type": "string", 156 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn]" 157 | }, 158 | "sshMaster0": { 159 | "type": "string", 160 | "value": "[concat('ssh ', variables('adminUsername'), '@', reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn, ' -A -p 2200')]" 161 | }, 162 | "agentFQDN": { 163 | "type": "string", 164 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).agentPoolProfiles[0].fqdn]" 165 | } 166 | } 167 | } 168 | -------------------------------------------------------------------------------- /docs/ManagedDisks/azuredeploy.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Sets the Domain name prefix for the Master nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 9 | } 10 | }, 11 | "agentDnsNamePrefix": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "Sets the Domain name prefix for the Agent nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 15 | } 16 | }, 17 | "agentCount": { 18 | "type": "int", 19 | "defaultValue": 1, 20 | "metadata": { 21 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 22 | }, 23 | "minValue":1, 24 | "maxValue":100 25 | }, 26 | "agentVMSize": { 27 | "type": "string", 28 | "defaultValue": "Standard_D2_v2", 29 | "metadata": { 30 | "description": "The size of the Virtual Machine." 31 | } 32 | }, 33 | "linuxAdminUsername": { 34 | "type": "string", 35 | "defaultValue": "azureuser", 36 | "metadata": { 37 | "description": "User name for the Linux Virtual Machines." 38 | } 39 | }, 40 | "orchestratorType": { 41 | "type": "string", 42 | "defaultValue": "Kubernetes", 43 | "allowedValues": [ 44 | "Kubernetes", 45 | "DCOS", 46 | "DockerCE" 47 | ], 48 | "metadata": { 49 | "description": "The type of orchestrator used to manage the applications on the cluster." 50 | } 51 | }, 52 | "masterCount": { 53 | "type": "int", 54 | "defaultValue": 1, 55 | "allowedValues": [ 56 | 1, 57 | 3, 58 | 5 59 | ], 60 | "metadata": { 61 | "description": "The number of Kubernetes masters for the cluster." 62 | } 63 | }, 64 | "masterVMSize": { 65 | "metadata": { 66 | "description": "The size of the Virtual Machine." 67 | }, 68 | "type": "string" 69 | }, 70 | "sshRSAPublicKey": { 71 | "type": "string", 72 | "metadata": { 73 | "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" 74 | } 75 | }, 76 | "servicePrincipalClientId": { 77 | "metadata": { 78 | "description": "Client ID (used by cloudprovider)" 79 | }, 80 | "type": "securestring", 81 | "defaultValue": "n/a" 82 | }, 83 | "servicePrincipalClientSecret": { 84 | "metadata": { 85 | "description": "The Service Principal Client Secret." 86 | }, 87 | "type": "securestring", 88 | "defaultValue": "n/a" 89 | } 90 | }, 91 | "variables": { 92 | "adminUsername":"[parameters('linuxAdminUsername')]", 93 | "agentCount":"[parameters('agentCount')]", 94 | "agentsEndpointDNSNamePrefix":"[parameters('agentDnsNamePrefix')]", 95 | "agentVMSize":"[parameters('agentVMSize')]", 96 | "masterCount":"[parameters('masterCount')]", 97 | "masterVMSize":"[parameters('masterVMSize')]", 98 | "mastersEndpointDNSNamePrefix":"[parameters('masterDnsNamePrefix')]", 99 | "orchestratorType":"[parameters('orchestratorType')]", 100 | "sshRSAPublicKey":"[parameters('sshRSAPublicKey')]", 101 | "servicePrincipalClientId": "[parameters('servicePrincipalClientId')]", 102 | "servicePrincipalClientSecret": "[parameters('servicePrincipalClientSecret')]", 103 | "useServicePrincipalDictionary": { 104 | "DCOS": 0, 105 | "DockerCE": 0, 106 | "Kubernetes": 1 107 | }, 108 | "useServicePrincipal": "[variables('useServicePrincipalDictionary')[variables('orchestratorType')]]", 109 | "servicePrincipalFields": [ 110 | null, 111 | { 112 | "ClientId": "[parameters('servicePrincipalClientId')]", 113 | "Secret": "[parameters('servicePrincipalClientSecret')]" 114 | } 115 | ] 116 | }, 117 | "resources": [ 118 | { 119 | "apiVersion": "2017-07-01", 120 | "type": "Microsoft.ContainerService/containerServices", 121 | "location": "[resourceGroup().location]", 122 | "name":"[concat('containerservice-',resourceGroup().name)]", 123 | "properties": { 124 | "orchestratorProfile": { 125 | "orchestratorType": "[variables('orchestratorType')]" 126 | }, 127 | "masterProfile": { 128 | "count": "[variables('masterCount')]", 129 | "dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]", 130 | "vmSize": "[variables('masterVMSize')]" 131 | }, 132 | "agentPoolProfiles": [ 133 | { 134 | "name": "agentpools1", 135 | "count": "[variables('agentCount')]", 136 | "vmSize": "[variables('agentVMSize')]", 137 | "storageProfile": "ManagedDisks" 138 | } 139 | ] , 140 | "linuxProfile": { 141 | "adminUsername": "[variables('adminUsername')]", 142 | "ssh": { 143 | "publicKeys": [ 144 | { 145 | "keyData": "[variables('sshRSAPublicKey')]" 146 | } 147 | ] 148 | } 149 | }, 150 | "servicePrincipalProfile": "[variables('servicePrincipalFields')[variables('useServicePrincipal')]]" 151 | } 152 | } 153 | ], 154 | "outputs": { 155 | "masterFQDN": { 156 | "type": "string", 157 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn]" 158 | }, 159 | "sshMaster0": { 160 | "type": "string", 161 | "value": "[concat('ssh ', variables('adminUsername'), '@', reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn, ' -A -p 2200')]" 162 | }, 163 | "agentFQDN": { 164 | "type": "string", 165 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).agentPoolProfiles[0].fqdn]" 166 | } 167 | } 168 | } -------------------------------------------------------------------------------- /docs/Simple/azuredeploy.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Sets the Domain name prefix for the Master nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 9 | } 10 | }, 11 | "agentDnsNamePrefix": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "Sets the Domain name prefix for the Agent nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 15 | } 16 | }, 17 | "agentCount": { 18 | "type": "int", 19 | "defaultValue": 1, 20 | "metadata": { 21 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 22 | }, 23 | "minValue":1, 24 | "maxValue":100 25 | }, 26 | "agentVMSize": { 27 | "type": "string", 28 | "defaultValue": "Standard_D2_v2", 29 | "metadata": { 30 | "description": "The size of the Virtual Machine." 31 | } 32 | }, 33 | "linuxAdminUsername": { 34 | "type": "string", 35 | "defaultValue": "azureuser", 36 | "metadata": { 37 | "description": "User name for the Linux Virtual Machines." 38 | } 39 | }, 40 | "orchestratorType": { 41 | "type": "string", 42 | "defaultValue": "Kubernetes", 43 | "allowedValues": [ 44 | "Kubernetes", 45 | "DCOS", 46 | "DockerCE" 47 | ], 48 | "metadata": { 49 | "description": "The type of orchestrator used to manage the applications on the cluster." 50 | } 51 | }, 52 | "masterCount": { 53 | "type": "int", 54 | "defaultValue": 1, 55 | "allowedValues": [ 56 | 1, 57 | 3, 58 | 5 59 | ], 60 | "metadata": { 61 | "description": "The number of Kubernetes masters for the cluster." 62 | } 63 | }, 64 | "masterVMSize": { 65 | "metadata": { 66 | "description": "The size of the Virtual Machine." 67 | }, 68 | "type": "string" 69 | }, 70 | "sshRSAPublicKey": { 71 | "type": "string", 72 | "metadata": { 73 | "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" 74 | } 75 | }, 76 | "servicePrincipalClientId": { 77 | "metadata": { 78 | "description": "Client ID (used by cloudprovider)" 79 | }, 80 | "type": "securestring", 81 | "defaultValue": "n/a" 82 | }, 83 | "servicePrincipalClientSecret": { 84 | "metadata": { 85 | "description": "The Service Principal Client Secret." 86 | }, 87 | "type": "securestring", 88 | "defaultValue": "n/a" 89 | } 90 | }, 91 | "variables": { 92 | "adminUsername":"[parameters('linuxAdminUsername')]", 93 | "agentCount":"[parameters('agentCount')]", 94 | "agentsEndpointDNSNamePrefix":"[parameters('agentDnsNamePrefix')]", 95 | "agentVMSize":"[parameters('agentVMSize')]", 96 | "masterCount":"[parameters('masterCount')]", 97 | "masterVMSize":"[parameters('masterVMSize')]", 98 | "mastersEndpointDNSNamePrefix":"[parameters('masterDnsNamePrefix')]", 99 | "orchestratorType":"[parameters('orchestratorType')]", 100 | "sshRSAPublicKey":"[parameters('sshRSAPublicKey')]", 101 | "servicePrincipalClientId": "[parameters('servicePrincipalClientId')]", 102 | "servicePrincipalClientSecret": "[parameters('servicePrincipalClientSecret')]", 103 | "useServicePrincipalDictionary": { 104 | "DCOS": 0, 105 | "DockerCE": 0, 106 | "Kubernetes": 1 107 | }, 108 | "useServicePrincipal": "[variables('useServicePrincipalDictionary')[variables('orchestratorType')]]", 109 | "servicePrincipalFields": [ 110 | null, 111 | { 112 | "ClientId": "[parameters('servicePrincipalClientId')]", 113 | "Secret": "[parameters('servicePrincipalClientSecret')]" 114 | } 115 | ] 116 | }, 117 | "resources": [ 118 | { 119 | "apiVersion": "2017-07-01", 120 | "type": "Microsoft.ContainerService/containerServices", 121 | "location": "[resourceGroup().location]", 122 | "name":"[concat('containerservice-',resourceGroup().name)]", 123 | "properties": { 124 | "orchestratorProfile": { 125 | "orchestratorType": "[variables('orchestratorType')]" 126 | }, 127 | "masterProfile": { 128 | "count": "[variables('masterCount')]", 129 | "dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]", 130 | "vmSize": "[variables('masterVMSize')]" 131 | }, 132 | "agentPoolProfiles": [ 133 | { 134 | "name": "agentpools", 135 | "count": "[variables('agentCount')]", 136 | "vmSize": "[variables('agentVMSize')]", 137 | "dnsPrefix": "[variables('agentsEndpointDNSNamePrefix')]" 138 | } 139 | ] , 140 | "linuxProfile": { 141 | "adminUsername": "[variables('adminUsername')]", 142 | "ssh": { 143 | "publicKeys": [ 144 | { 145 | "keyData": "[variables('sshRSAPublicKey')]" 146 | } 147 | ] 148 | } 149 | }, 150 | "servicePrincipalProfile": "[variables('servicePrincipalFields')[variables('useServicePrincipal')]]" 151 | } 152 | } 153 | ], 154 | "outputs": { 155 | "masterFQDN": { 156 | "type": "string", 157 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn]" 158 | }, 159 | "sshMaster0": { 160 | "type": "string", 161 | "value": "[concat('ssh ', variables('adminUsername'), '@', reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn, ' -A -p 2200')]" 162 | }, 163 | "agentFQDN": { 164 | "type": "string", 165 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).agentPoolProfiles[0].fqdn]" 166 | } 167 | } 168 | } -------------------------------------------------------------------------------- /docs/StorageAccount/azuredeploy.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Sets the Domain name prefix for the Master nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 9 | } 10 | }, 11 | "agentDnsNamePrefix": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "Sets the Domain name prefix for the Agent nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 15 | } 16 | }, 17 | "agentCount": { 18 | "type": "int", 19 | "defaultValue": 1, 20 | "metadata": { 21 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 22 | }, 23 | "minValue":1, 24 | "maxValue":100 25 | }, 26 | "agentVMSize": { 27 | "type": "string", 28 | "defaultValue": "Standard_D2_v2", 29 | "metadata": { 30 | "description": "The size of the Virtual Machine." 31 | } 32 | }, 33 | "linuxAdminUsername": { 34 | "type": "string", 35 | "defaultValue": "azureuser", 36 | "metadata": { 37 | "description": "User name for the Linux Virtual Machines." 38 | } 39 | }, 40 | "orchestratorType": { 41 | "type": "string", 42 | "defaultValue": "Kubernetes", 43 | "allowedValues": [ 44 | "Kubernetes", 45 | "DCOS", 46 | "DockerCE" 47 | ], 48 | "metadata": { 49 | "description": "The type of orchestrator used to manage the applications on the cluster." 50 | } 51 | }, 52 | "masterCount": { 53 | "type": "int", 54 | "defaultValue": 1, 55 | "allowedValues": [ 56 | 1, 57 | 3, 58 | 5 59 | ], 60 | "metadata": { 61 | "description": "The number of Kubernetes masters for the cluster." 62 | } 63 | }, 64 | "masterVMSize": { 65 | "metadata": { 66 | "description": "The size of the Virtual Machine." 67 | }, 68 | "type": "string" 69 | }, 70 | "sshRSAPublicKey": { 71 | "type": "string", 72 | "metadata": { 73 | "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" 74 | } 75 | }, 76 | "servicePrincipalClientId": { 77 | "metadata": { 78 | "description": "Client ID (used by cloudprovider)" 79 | }, 80 | "type": "securestring", 81 | "defaultValue": "n/a" 82 | }, 83 | "servicePrincipalClientSecret": { 84 | "metadata": { 85 | "description": "The Service Principal Client Secret." 86 | }, 87 | "type": "securestring", 88 | "defaultValue": "n/a" 89 | } 90 | }, 91 | "variables": { 92 | "adminUsername":"[parameters('linuxAdminUsername')]", 93 | "agentCount":"[parameters('agentCount')]", 94 | "agentsEndpointDNSNamePrefix":"[parameters('agentDnsNamePrefix')]", 95 | "agentVMSize":"[parameters('agentVMSize')]", 96 | "masterCount":"[parameters('masterCount')]", 97 | "masterVMSize":"[parameters('masterVMSize')]", 98 | "mastersEndpointDNSNamePrefix":"[parameters('masterDnsNamePrefix')]", 99 | "orchestratorType":"[parameters('orchestratorType')]", 100 | "sshRSAPublicKey":"[parameters('sshRSAPublicKey')]", 101 | "servicePrincipalClientId": "[parameters('servicePrincipalClientId')]", 102 | "servicePrincipalClientSecret": "[parameters('servicePrincipalClientSecret')]", 103 | "useServicePrincipalDictionary": { 104 | "DCOS": 0, 105 | "DockerCE": 0, 106 | "Kubernetes": 1 107 | }, 108 | "useServicePrincipal": "[variables('useServicePrincipalDictionary')[variables('orchestratorType')]]", 109 | "servicePrincipalFields": [ 110 | null, 111 | { 112 | "ClientId": "[parameters('servicePrincipalClientId')]", 113 | "Secret": "[parameters('servicePrincipalClientSecret')]" 114 | } 115 | ] 116 | }, 117 | "resources": [ 118 | { 119 | "apiVersion": "2017-07-01", 120 | "type": "Microsoft.ContainerService/containerServices", 121 | "location": "[resourceGroup().location]", 122 | "name":"[concat('containerservice-',resourceGroup().name)]", 123 | "properties": { 124 | "orchestratorProfile": { 125 | "orchestratorType": "[variables('orchestratorType')]" 126 | }, 127 | "masterProfile": { 128 | "count": "[variables('masterCount')]", 129 | "dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]", 130 | "vmSize": "[variables('masterVMSize')]" 131 | }, 132 | "agentPoolProfiles": [ 133 | { 134 | "name": "agentpools", 135 | "count": "[variables('agentCount')]", 136 | "vmSize": "[variables('agentVMSize')]", 137 | "dnsPrefix": "[variables('agentsEndpointDNSNamePrefix')]", 138 | "storageProfile": "StorageAccount" 139 | } 140 | ] , 141 | "linuxProfile": { 142 | "adminUsername": "[variables('adminUsername')]", 143 | "ssh": { 144 | "publicKeys": [ 145 | { 146 | "keyData": "[variables('sshRSAPublicKey')]" 147 | } 148 | ] 149 | } 150 | }, 151 | "servicePrincipalProfile": "[variables('servicePrincipalFields')[variables('useServicePrincipal')]]" 152 | } 153 | } 154 | ], 155 | "outputs": { 156 | "masterFQDN": { 157 | "type": "string", 158 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn]" 159 | }, 160 | "sshMaster0": { 161 | "type": "string", 162 | "value": "[concat('ssh ', variables('adminUsername'), '@', reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn, ' -A -p 2200')]" 163 | }, 164 | "agentFQDN": { 165 | "type": "string", 166 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).agentPoolProfiles[0].fqdn]" 167 | } 168 | } 169 | } -------------------------------------------------------------------------------- /docs/OSDiskSize/azuredeploy.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Sets the Domain name prefix for the Master nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 9 | } 10 | }, 11 | "agentDnsNamePrefix": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "Sets the Domain name prefix for the Agent nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 15 | } 16 | }, 17 | "agentCount": { 18 | "type": "int", 19 | "defaultValue": 1, 20 | "metadata": { 21 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 22 | }, 23 | "minValue":1, 24 | "maxValue":100 25 | }, 26 | "agentVMSize": { 27 | "type": "string", 28 | "defaultValue": "Standard_D2_v2", 29 | "metadata": { 30 | "description": "The size of the Virtual Machine." 31 | } 32 | }, 33 | "linuxAdminUsername": { 34 | "type": "string", 35 | "defaultValue": "azureuser", 36 | "metadata": { 37 | "description": "User name for the Linux Virtual Machines." 38 | } 39 | }, 40 | "orchestratorType": { 41 | "type": "string", 42 | "defaultValue": "Kubernetes", 43 | "allowedValues": [ 44 | "Kubernetes", 45 | "DCOS", 46 | "DockerCE" 47 | ], 48 | "metadata": { 49 | "description": "The type of orchestrator used to manage the applications on the cluster." 50 | } 51 | }, 52 | "masterCount": { 53 | "type": "int", 54 | "defaultValue": 1, 55 | "allowedValues": [ 56 | 1, 57 | 3, 58 | 5 59 | ], 60 | "metadata": { 61 | "description": "The number of Kubernetes masters for the cluster." 62 | } 63 | }, 64 | "masterVMSize": { 65 | "metadata": { 66 | "description": "The size of the Virtual Machine." 67 | }, 68 | "type": "string" 69 | }, 70 | "sshRSAPublicKey": { 71 | "type": "string", 72 | "metadata": { 73 | "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" 74 | } 75 | }, 76 | "servicePrincipalClientId": { 77 | "metadata": { 78 | "description": "Client ID (used by cloudprovider)" 79 | }, 80 | "type": "securestring", 81 | "defaultValue": "n/a" 82 | }, 83 | "servicePrincipalClientSecret": { 84 | "metadata": { 85 | "description": "The Service Principal Client Secret." 86 | }, 87 | "type": "securestring", 88 | "defaultValue": "n/a" 89 | } 90 | }, 91 | "variables": { 92 | "adminUsername":"[parameters('linuxAdminUsername')]", 93 | "agentCount":"[parameters('agentCount')]", 94 | "agentsEndpointDNSNamePrefix":"[parameters('agentDnsNamePrefix')]", 95 | "agentVMSize":"[parameters('agentVMSize')]", 96 | "masterCount":"[parameters('masterCount')]", 97 | "masterVMSize":"[parameters('masterVMSize')]", 98 | "mastersEndpointDNSNamePrefix":"[parameters('masterDnsNamePrefix')]", 99 | "orchestratorType":"[parameters('orchestratorType')]", 100 | "sshRSAPublicKey":"[parameters('sshRSAPublicKey')]", 101 | "servicePrincipalClientId": "[parameters('servicePrincipalClientId')]", 102 | "servicePrincipalClientSecret": "[parameters('servicePrincipalClientSecret')]", 103 | "useServicePrincipalDictionary": { 104 | "DCOS": 0, 105 | "DockerCE": 0, 106 | "Kubernetes": 1 107 | }, 108 | "useServicePrincipal": "[variables('useServicePrincipalDictionary')[variables('orchestratorType')]]", 109 | "servicePrincipalFields": [ 110 | null, 111 | { 112 | "ClientId": "[parameters('servicePrincipalClientId')]", 113 | "Secret": "[parameters('servicePrincipalClientSecret')]" 114 | } 115 | ] 116 | }, 117 | "resources": [ 118 | { 119 | "apiVersion": "2017-07-01", 120 | "type": "Microsoft.ContainerService/containerServices", 121 | "location": "[resourceGroup().location]", 122 | "name":"[concat('containerservice-',resourceGroup().name)]", 123 | "properties": { 124 | "orchestratorProfile": { 125 | "orchestratorType": "[variables('orchestratorType')]" 126 | }, 127 | "masterProfile": { 128 | "count": "[variables('masterCount')]", 129 | "dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]", 130 | "vmSize": "[variables('masterVMSize')]", 131 | "OSDiskSizeGB": 300 132 | }, 133 | "agentPoolProfiles": [ 134 | { 135 | "name": "agentpools", 136 | "count": "[variables('agentCount')]", 137 | "vmSize": "[variables('agentVMSize')]", 138 | "dnsPrefix": "[variables('agentsEndpointDNSNamePrefix')]", 139 | "OSDiskSizeGB": 300 140 | } 141 | ] , 142 | "linuxProfile": { 143 | "adminUsername": "[variables('adminUsername')]", 144 | "ssh": { 145 | "publicKeys": [ 146 | { 147 | "keyData": "[variables('sshRSAPublicKey')]" 148 | } 149 | ] 150 | } 151 | }, 152 | "servicePrincipalProfile": "[variables('servicePrincipalFields')[variables('useServicePrincipal')]]" 153 | } 154 | } 155 | ], 156 | "outputs": { 157 | "masterFQDN": { 158 | "type": "string", 159 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn]" 160 | }, 161 | "sshMaster0": { 162 | "type": "string", 163 | "value": "[concat('ssh ', variables('adminUsername'), '@', reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn, ' -A -p 2200')]" 164 | }, 165 | "agentFQDN": { 166 | "type": "string", 167 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).agentPoolProfiles[0].fqdn]" 168 | } 169 | } 170 | } -------------------------------------------------------------------------------- /docs/ManagedDisks/azuredeploy.dockerce.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Sets the Domain name prefix for the Master nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 9 | } 10 | }, 11 | "agentDnsNamePrefix": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "Sets the Domain name prefix for the Agent nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 15 | } 16 | }, 17 | "agentCount": { 18 | "type": "int", 19 | "defaultValue": 1, 20 | "metadata": { 21 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 22 | }, 23 | "minValue":1, 24 | "maxValue":100 25 | }, 26 | "agentVMSize": { 27 | "type": "string", 28 | "defaultValue": "Standard_D2_v2", 29 | "metadata": { 30 | "description": "The size of the Virtual Machine." 31 | } 32 | }, 33 | "linuxAdminUsername": { 34 | "type": "string", 35 | "defaultValue": "azureuser", 36 | "metadata": { 37 | "description": "User name for the Linux Virtual Machines." 38 | } 39 | }, 40 | "orchestratorType": { 41 | "type": "string", 42 | "defaultValue": "Kubernetes", 43 | "allowedValues": [ 44 | "Kubernetes", 45 | "DCOS", 46 | "DockerCE" 47 | ], 48 | "metadata": { 49 | "description": "The type of orchestrator used to manage the applications on the cluster." 50 | } 51 | }, 52 | "masterCount": { 53 | "type": "int", 54 | "defaultValue": 1, 55 | "allowedValues": [ 56 | 1, 57 | 3, 58 | 5 59 | ], 60 | "metadata": { 61 | "description": "The number of Kubernetes masters for the cluster." 62 | } 63 | }, 64 | "masterVMSize": { 65 | "metadata": { 66 | "description": "The size of the Virtual Machine." 67 | }, 68 | "type": "string" 69 | }, 70 | "sshRSAPublicKey": { 71 | "type": "string", 72 | "metadata": { 73 | "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" 74 | } 75 | }, 76 | "servicePrincipalClientId": { 77 | "metadata": { 78 | "description": "Client ID (used by cloudprovider)" 79 | }, 80 | "type": "securestring", 81 | "defaultValue": "n/a" 82 | }, 83 | "servicePrincipalClientSecret": { 84 | "metadata": { 85 | "description": "The Service Principal Client Secret." 86 | }, 87 | "type": "securestring", 88 | "defaultValue": "n/a" 89 | } 90 | }, 91 | "variables": { 92 | "adminUsername":"[parameters('linuxAdminUsername')]", 93 | "agentCount":"[parameters('agentCount')]", 94 | "agentsEndpointDNSNamePrefix":"[parameters('agentDnsNamePrefix')]", 95 | "agentVMSize":"[parameters('agentVMSize')]", 96 | "masterCount":"[parameters('masterCount')]", 97 | "masterVMSize":"[parameters('masterVMSize')]", 98 | "mastersEndpointDNSNamePrefix":"[parameters('masterDnsNamePrefix')]", 99 | "orchestratorType":"[parameters('orchestratorType')]", 100 | "sshRSAPublicKey":"[parameters('sshRSAPublicKey')]", 101 | "servicePrincipalClientId": "[parameters('servicePrincipalClientId')]", 102 | "servicePrincipalClientSecret": "[parameters('servicePrincipalClientSecret')]", 103 | "useServicePrincipalDictionary": { 104 | "DCOS": 0, 105 | "DockerCE": 0, 106 | "Kubernetes": 1 107 | }, 108 | "useServicePrincipal": "[variables('useServicePrincipalDictionary')[variables('orchestratorType')]]", 109 | "servicePrincipalFields": [ 110 | null, 111 | { 112 | "ClientId": "[parameters('servicePrincipalClientId')]", 113 | "Secret": "[parameters('servicePrincipalClientSecret')]" 114 | } 115 | ] 116 | }, 117 | "resources": [ 118 | { 119 | "apiVersion": "2017-07-01", 120 | "type": "Microsoft.ContainerService/containerServices", 121 | "location": "[resourceGroup().location]", 122 | "name":"[concat('containerservice-',resourceGroup().name)]", 123 | "properties": { 124 | "orchestratorProfile": { 125 | "orchestratorType": "[variables('orchestratorType')]" 126 | }, 127 | "masterProfile": { 128 | "count": "[variables('masterCount')]", 129 | "dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]", 130 | "vmSize": "[variables('masterVMSize')]" 131 | }, 132 | "agentPoolProfiles": [ 133 | { 134 | "name": "agentpools", 135 | "count": "[variables('agentCount')]", 136 | "vmSize": "[variables('agentVMSize')]", 137 | "dnsPrefix": "[variables('agentsEndpointDNSNamePrefix')]", 138 | "ports": [ 139 | 443, 140 | 8080 141 | ] 142 | } 143 | ] , 144 | "linuxProfile": { 145 | "adminUsername": "[variables('adminUsername')]", 146 | "ssh": { 147 | "publicKeys": [ 148 | { 149 | "keyData": "[variables('sshRSAPublicKey')]" 150 | } 151 | ] 152 | } 153 | }, 154 | "servicePrincipalProfile": "[variables('servicePrincipalFields')[variables('useServicePrincipal')]]" 155 | } 156 | } 157 | ], 158 | "outputs": { 159 | "masterFQDN": { 160 | "type": "string", 161 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn]" 162 | }, 163 | "sshMaster0": { 164 | "type": "string", 165 | "value": "[concat('ssh ', variables('adminUsername'), '@', reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn, ' -A -p 2200')]" 166 | }, 167 | "agentFQDN": { 168 | "type": "string", 169 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).agentPoolProfiles[0].fqdn]" 170 | } 171 | } 172 | } -------------------------------------------------------------------------------- /docs/MasterSize/azuredeploy.dockerce.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Sets the Domain name prefix for the Master nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 9 | } 10 | }, 11 | "agentDnsNamePrefix": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "Sets the Domain name prefix for the Agent nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 15 | } 16 | }, 17 | "agentCount": { 18 | "type": "int", 19 | "defaultValue": 1, 20 | "metadata": { 21 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 22 | }, 23 | "minValue":1, 24 | "maxValue":100 25 | }, 26 | "agentVMSize": { 27 | "type": "string", 28 | "defaultValue": "Standard_D2_v2", 29 | "metadata": { 30 | "description": "The size of the Virtual Machine." 31 | } 32 | }, 33 | "linuxAdminUsername": { 34 | "type": "string", 35 | "defaultValue": "azureuser", 36 | "metadata": { 37 | "description": "User name for the Linux Virtual Machines." 38 | } 39 | }, 40 | "orchestratorType": { 41 | "type": "string", 42 | "defaultValue": "Kubernetes", 43 | "allowedValues": [ 44 | "Kubernetes", 45 | "DCOS", 46 | "DockerCE" 47 | ], 48 | "metadata": { 49 | "description": "The type of orchestrator used to manage the applications on the cluster." 50 | } 51 | }, 52 | "masterCount": { 53 | "type": "int", 54 | "defaultValue": 1, 55 | "allowedValues": [ 56 | 1, 57 | 3, 58 | 5 59 | ], 60 | "metadata": { 61 | "description": "The number of Kubernetes masters for the cluster." 62 | } 63 | }, 64 | "masterVMSize": { 65 | "metadata": { 66 | "description": "The size of the Virtual Machine." 67 | }, 68 | "type": "string" 69 | }, 70 | "sshRSAPublicKey": { 71 | "type": "string", 72 | "metadata": { 73 | "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" 74 | } 75 | }, 76 | "servicePrincipalClientId": { 77 | "metadata": { 78 | "description": "Client ID (used by cloudprovider)" 79 | }, 80 | "type": "securestring", 81 | "defaultValue": "n/a" 82 | }, 83 | "servicePrincipalClientSecret": { 84 | "metadata": { 85 | "description": "The Service Principal Client Secret." 86 | }, 87 | "type": "securestring", 88 | "defaultValue": "n/a" 89 | } 90 | }, 91 | "variables": { 92 | "adminUsername":"[parameters('linuxAdminUsername')]", 93 | "agentCount":"[parameters('agentCount')]", 94 | "agentsEndpointDNSNamePrefix":"[parameters('agentDnsNamePrefix')]", 95 | "agentVMSize":"[parameters('agentVMSize')]", 96 | "masterCount":"[parameters('masterCount')]", 97 | "masterVMSize":"[parameters('masterVMSize')]", 98 | "mastersEndpointDNSNamePrefix":"[parameters('masterDnsNamePrefix')]", 99 | "orchestratorType":"[parameters('orchestratorType')]", 100 | "sshRSAPublicKey":"[parameters('sshRSAPublicKey')]", 101 | "servicePrincipalClientId": "[parameters('servicePrincipalClientId')]", 102 | "servicePrincipalClientSecret": "[parameters('servicePrincipalClientSecret')]", 103 | "useServicePrincipalDictionary": { 104 | "DCOS": 0, 105 | "DockerCE": 0, 106 | "Kubernetes": 1 107 | }, 108 | "useServicePrincipal": "[variables('useServicePrincipalDictionary')[variables('orchestratorType')]]", 109 | "servicePrincipalFields": [ 110 | null, 111 | { 112 | "ClientId": "[parameters('servicePrincipalClientId')]", 113 | "Secret": "[parameters('servicePrincipalClientSecret')]" 114 | } 115 | ] 116 | }, 117 | "resources": [ 118 | { 119 | "apiVersion": "2017-07-01", 120 | "type": "Microsoft.ContainerService/containerServices", 121 | "location": "[resourceGroup().location]", 122 | "name":"[concat('containerservice-',resourceGroup().name)]", 123 | "properties": { 124 | "orchestratorProfile": { 125 | "orchestratorType": "[variables('orchestratorType')]" 126 | }, 127 | "masterProfile": { 128 | "count": "[variables('masterCount')]", 129 | "dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]", 130 | "vmSize": "[variables('masterVMSize')]" 131 | }, 132 | "agentPoolProfiles": [ 133 | { 134 | "name": "agentpools", 135 | "count": "[variables('agentCount')]", 136 | "vmSize": "[variables('agentVMSize')]", 137 | "dnsPrefix": "[variables('agentsEndpointDNSNamePrefix')]", 138 | "ports": [ 139 | 443, 140 | 8080 141 | ] 142 | } 143 | ] , 144 | "linuxProfile": { 145 | "adminUsername": "[variables('adminUsername')]", 146 | "ssh": { 147 | "publicKeys": [ 148 | { 149 | "keyData": "[variables('sshRSAPublicKey')]" 150 | } 151 | ] 152 | } 153 | }, 154 | "servicePrincipalProfile": "[variables('servicePrincipalFields')[variables('useServicePrincipal')]]" 155 | } 156 | } 157 | ], 158 | "outputs": { 159 | "masterFQDN": { 160 | "type": "string", 161 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn]" 162 | }, 163 | "sshMaster0": { 164 | "type": "string", 165 | "value": "[concat('ssh ', variables('adminUsername'), '@', reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn, ' -A -p 2200')]" 166 | }, 167 | "agentFQDN": { 168 | "type": "string", 169 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).agentPoolProfiles[0].fqdn]" 170 | } 171 | } 172 | } 173 | -------------------------------------------------------------------------------- /docs/Ports/azuredeploy.dockerce.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Sets the Domain name prefix for the Master nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 9 | } 10 | }, 11 | "agentDnsNamePrefix": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "Sets the Domain name prefix for the Agent nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 15 | } 16 | }, 17 | "agentCount": { 18 | "type": "int", 19 | "defaultValue": 1, 20 | "metadata": { 21 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 22 | }, 23 | "minValue":1, 24 | "maxValue":100 25 | }, 26 | "agentVMSize": { 27 | "type": "string", 28 | "defaultValue": "Standard_D2_v2", 29 | "metadata": { 30 | "description": "The size of the Virtual Machine." 31 | } 32 | }, 33 | "linuxAdminUsername": { 34 | "type": "string", 35 | "defaultValue": "azureuser", 36 | "metadata": { 37 | "description": "User name for the Linux Virtual Machines." 38 | } 39 | }, 40 | "orchestratorType": { 41 | "type": "string", 42 | "defaultValue": "Kubernetes", 43 | "allowedValues": [ 44 | "Kubernetes", 45 | "DCOS", 46 | "DockerCE" 47 | ], 48 | "metadata": { 49 | "description": "The type of orchestrator used to manage the applications on the cluster." 50 | } 51 | }, 52 | "masterCount": { 53 | "type": "int", 54 | "defaultValue": 1, 55 | "allowedValues": [ 56 | 1, 57 | 3, 58 | 5 59 | ], 60 | "metadata": { 61 | "description": "The number of Kubernetes masters for the cluster." 62 | } 63 | }, 64 | "masterVMSize": { 65 | "metadata": { 66 | "description": "The size of the Virtual Machine." 67 | }, 68 | "type": "string" 69 | }, 70 | "sshRSAPublicKey": { 71 | "type": "string", 72 | "metadata": { 73 | "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" 74 | } 75 | }, 76 | "servicePrincipalClientId": { 77 | "metadata": { 78 | "description": "Client ID (used by cloudprovider)" 79 | }, 80 | "type": "securestring", 81 | "defaultValue": "n/a" 82 | }, 83 | "servicePrincipalClientSecret": { 84 | "metadata": { 85 | "description": "The Service Principal Client Secret." 86 | }, 87 | "type": "securestring", 88 | "defaultValue": "n/a" 89 | } 90 | }, 91 | "variables": { 92 | "adminUsername":"[parameters('linuxAdminUsername')]", 93 | "agentCount":"[parameters('agentCount')]", 94 | "agentsEndpointDNSNamePrefix":"[parameters('agentDnsNamePrefix')]", 95 | "agentVMSize":"[parameters('agentVMSize')]", 96 | "masterCount":"[parameters('masterCount')]", 97 | "masterVMSize":"[parameters('masterVMSize')]", 98 | "mastersEndpointDNSNamePrefix":"[parameters('masterDnsNamePrefix')]", 99 | "orchestratorType":"[parameters('orchestratorType')]", 100 | "sshRSAPublicKey":"[parameters('sshRSAPublicKey')]", 101 | "servicePrincipalClientId": "[parameters('servicePrincipalClientId')]", 102 | "servicePrincipalClientSecret": "[parameters('servicePrincipalClientSecret')]", 103 | "useServicePrincipalDictionary": { 104 | "DCOS": 0, 105 | "DockerCE": 0, 106 | "Kubernetes": 1 107 | }, 108 | "useServicePrincipal": "[variables('useServicePrincipalDictionary')[variables('orchestratorType')]]", 109 | "servicePrincipalFields": [ 110 | null, 111 | { 112 | "ClientId": "[parameters('servicePrincipalClientId')]", 113 | "Secret": "[parameters('servicePrincipalClientSecret')]" 114 | } 115 | ] 116 | }, 117 | "resources": [ 118 | { 119 | "apiVersion": "2017-07-01", 120 | "type": "Microsoft.ContainerService/containerServices", 121 | "location": "[resourceGroup().location]", 122 | "name":"[concat('containerservice-',resourceGroup().name)]", 123 | "properties": { 124 | "orchestratorProfile": { 125 | "orchestratorType": "[variables('orchestratorType')]" 126 | }, 127 | "masterProfile": { 128 | "count": "[variables('masterCount')]", 129 | "dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]", 130 | "vmSize": "[variables('masterVMSize')]" 131 | }, 132 | "agentPoolProfiles": [ 133 | { 134 | "name": "agentpools", 135 | "count": "[variables('agentCount')]", 136 | "vmSize": "[variables('agentVMSize')]", 137 | "dnsPrefix": "[variables('agentsEndpointDNSNamePrefix')]", 138 | "ports": [ 139 | 443, 140 | 8080, 141 | 8081, 142 | 8082, 143 | 8083, 144 | 8084 145 | ] 146 | } 147 | ] , 148 | "linuxProfile": { 149 | "adminUsername": "[variables('adminUsername')]", 150 | "ssh": { 151 | "publicKeys": [ 152 | { 153 | "keyData": "[variables('sshRSAPublicKey')]" 154 | } 155 | ] 156 | } 157 | }, 158 | "servicePrincipalProfile": "[variables('servicePrincipalFields')[variables('useServicePrincipal')]]" 159 | } 160 | } 161 | ], 162 | "outputs": { 163 | "masterFQDN": { 164 | "type": "string", 165 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn]" 166 | }, 167 | "sshMaster0": { 168 | "type": "string", 169 | "value": "[concat('ssh ', variables('adminUsername'), '@', reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn, ' -A -p 2200')]" 170 | }, 171 | "agentFQDN": { 172 | "type": "string", 173 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).agentPoolProfiles[0].fqdn]" 174 | } 175 | } 176 | } -------------------------------------------------------------------------------- /docs/Simple/azuredeploy.dcos.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Sets the Domain name prefix for the Master nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 9 | } 10 | }, 11 | "agentDnsNamePrefix": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "Sets the Domain name prefix for the Agent nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 15 | } 16 | }, 17 | "agentCount": { 18 | "type": "int", 19 | "defaultValue": 1, 20 | "metadata": { 21 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 22 | }, 23 | "minValue":1, 24 | "maxValue":100 25 | }, 26 | "agentVMSize": { 27 | "type": "string", 28 | "defaultValue": "Standard_D2_v2", 29 | "metadata": { 30 | "description": "The size of the Virtual Machine." 31 | } 32 | }, 33 | "linuxAdminUsername": { 34 | "type": "string", 35 | "defaultValue": "azureuser", 36 | "metadata": { 37 | "description": "User name for the Linux Virtual Machines." 38 | } 39 | }, 40 | "orchestratorType": { 41 | "type": "string", 42 | "defaultValue": "Kubernetes", 43 | "allowedValues": [ 44 | "Kubernetes", 45 | "DCOS", 46 | "DockerCE" 47 | ], 48 | "metadata": { 49 | "description": "The type of orchestrator used to manage the applications on the cluster." 50 | } 51 | }, 52 | "masterCount": { 53 | "type": "int", 54 | "defaultValue": 1, 55 | "allowedValues": [ 56 | 1, 57 | 3, 58 | 5 59 | ], 60 | "metadata": { 61 | "description": "The number of Kubernetes masters for the cluster." 62 | } 63 | }, 64 | "masterVMSize": { 65 | "metadata": { 66 | "description": "The size of the Virtual Machine." 67 | }, 68 | "type": "string" 69 | }, 70 | "sshRSAPublicKey": { 71 | "type": "string", 72 | "metadata": { 73 | "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" 74 | } 75 | }, 76 | "servicePrincipalClientId": { 77 | "metadata": { 78 | "description": "Client ID (used by cloudprovider)" 79 | }, 80 | "type": "securestring", 81 | "defaultValue": "n/a" 82 | }, 83 | "servicePrincipalClientSecret": { 84 | "metadata": { 85 | "description": "The Service Principal Client Secret." 86 | }, 87 | "type": "securestring", 88 | "defaultValue": "n/a" 89 | } 90 | }, 91 | "variables": { 92 | "adminUsername":"[parameters('linuxAdminUsername')]", 93 | "agentCount":"[parameters('agentCount')]", 94 | "agentsEndpointDNSNamePrefix":"[parameters('agentDnsNamePrefix')]", 95 | "agentVMSize":"[parameters('agentVMSize')]", 96 | "masterCount":"[parameters('masterCount')]", 97 | "masterVMSize":"[parameters('masterVMSize')]", 98 | "mastersEndpointDNSNamePrefix":"[parameters('masterDnsNamePrefix')]", 99 | "orchestratorType":"[parameters('orchestratorType')]", 100 | "sshRSAPublicKey":"[parameters('sshRSAPublicKey')]", 101 | "servicePrincipalClientId": "[parameters('servicePrincipalClientId')]", 102 | "servicePrincipalClientSecret": "[parameters('servicePrincipalClientSecret')]", 103 | "useServicePrincipalDictionary": { 104 | "DCOS": 0, 105 | "DockerCE": 0, 106 | "Kubernetes": 1 107 | }, 108 | "useServicePrincipal": "[variables('useServicePrincipalDictionary')[variables('orchestratorType')]]", 109 | "servicePrincipalFields": [ 110 | null, 111 | { 112 | "ClientId": "[parameters('servicePrincipalClientId')]", 113 | "Secret": "[parameters('servicePrincipalClientSecret')]" 114 | } 115 | ] 116 | }, 117 | "resources": [ 118 | { 119 | "apiVersion": "2017-07-01", 120 | "type": "Microsoft.ContainerService/containerServices", 121 | "location": "[resourceGroup().location]", 122 | "name":"[concat('containerservice-',resourceGroup().name)]", 123 | "properties": { 124 | "orchestratorProfile": { 125 | "orchestratorType": "[variables('orchestratorType')]" 126 | }, 127 | "masterProfile": { 128 | "count": "[variables('masterCount')]", 129 | "dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]", 130 | "vmSize": "[variables('masterVMSize')]" 131 | }, 132 | "agentPoolProfiles": [ 133 | { 134 | "name": "agentpublic", 135 | "count": 1, 136 | "vmSize": "[variables('agentVMSize')]", 137 | "dnsPrefix": "[variables('agentsEndpointDNSNamePrefix')]", 138 | "ports": [ 139 | 443, 140 | 8080 141 | ] 142 | }, 143 | { 144 | "name": "agentprivate", 145 | "count": "[variables('agentCount')]", 146 | "vmSize": "[variables('agentVMSize')]" 147 | } 148 | ] , 149 | "linuxProfile": { 150 | "adminUsername": "[variables('adminUsername')]", 151 | "ssh": { 152 | "publicKeys": [ 153 | { 154 | "keyData": "[variables('sshRSAPublicKey')]" 155 | } 156 | ] 157 | } 158 | }, 159 | "servicePrincipalProfile": "[variables('servicePrincipalFields')[variables('useServicePrincipal')]]" 160 | } 161 | } 162 | ], 163 | "outputs": { 164 | "masterFQDN": { 165 | "type": "string", 166 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn]" 167 | }, 168 | "sshMaster0": { 169 | "type": "string", 170 | "value": "[concat('ssh ', variables('adminUsername'), '@', reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn, ' -A -p 2200')]" 171 | }, 172 | "agentFQDN": { 173 | "type": "string", 174 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).agentPoolProfiles[0].fqdn]" 175 | } 176 | } 177 | } -------------------------------------------------------------------------------- /docs/ManagedDisks/azuredeploy.dcos.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Sets the Domain name prefix for the Master nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 9 | } 10 | }, 11 | "agentDnsNamePrefix": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "Sets the Domain name prefix for the Agent nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 15 | } 16 | }, 17 | "agentCount": { 18 | "type": "int", 19 | "defaultValue": 1, 20 | "metadata": { 21 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 22 | }, 23 | "minValue":1, 24 | "maxValue":100 25 | }, 26 | "agentVMSize": { 27 | "type": "string", 28 | "defaultValue": "Standard_D2_v2", 29 | "metadata": { 30 | "description": "The size of the Virtual Machine." 31 | } 32 | }, 33 | "linuxAdminUsername": { 34 | "type": "string", 35 | "defaultValue": "azureuser", 36 | "metadata": { 37 | "description": "User name for the Linux Virtual Machines." 38 | } 39 | }, 40 | "orchestratorType": { 41 | "type": "string", 42 | "defaultValue": "Kubernetes", 43 | "allowedValues": [ 44 | "Kubernetes", 45 | "DCOS", 46 | "DockerCE" 47 | ], 48 | "metadata": { 49 | "description": "The type of orchestrator used to manage the applications on the cluster." 50 | } 51 | }, 52 | "masterCount": { 53 | "type": "int", 54 | "defaultValue": 1, 55 | "allowedValues": [ 56 | 1, 57 | 3, 58 | 5 59 | ], 60 | "metadata": { 61 | "description": "The number of Kubernetes masters for the cluster." 62 | } 63 | }, 64 | "masterVMSize": { 65 | "metadata": { 66 | "description": "The size of the Virtual Machine." 67 | }, 68 | "type": "string" 69 | }, 70 | "sshRSAPublicKey": { 71 | "type": "string", 72 | "metadata": { 73 | "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" 74 | } 75 | }, 76 | "servicePrincipalClientId": { 77 | "metadata": { 78 | "description": "Client ID (used by cloudprovider)" 79 | }, 80 | "type": "securestring", 81 | "defaultValue": "n/a" 82 | }, 83 | "servicePrincipalClientSecret": { 84 | "metadata": { 85 | "description": "The Service Principal Client Secret." 86 | }, 87 | "type": "securestring", 88 | "defaultValue": "n/a" 89 | } 90 | }, 91 | "variables": { 92 | "adminUsername":"[parameters('linuxAdminUsername')]", 93 | "agentCount":"[parameters('agentCount')]", 94 | "agentsEndpointDNSNamePrefix":"[parameters('agentDnsNamePrefix')]", 95 | "agentVMSize":"[parameters('agentVMSize')]", 96 | "masterCount":"[parameters('masterCount')]", 97 | "masterVMSize":"[parameters('masterVMSize')]", 98 | "mastersEndpointDNSNamePrefix":"[parameters('masterDnsNamePrefix')]", 99 | "orchestratorType":"[parameters('orchestratorType')]", 100 | "sshRSAPublicKey":"[parameters('sshRSAPublicKey')]", 101 | "servicePrincipalClientId": "[parameters('servicePrincipalClientId')]", 102 | "servicePrincipalClientSecret": "[parameters('servicePrincipalClientSecret')]", 103 | "useServicePrincipalDictionary": { 104 | "DCOS": 0, 105 | "DockerCE": 0, 106 | "Kubernetes": 1 107 | }, 108 | "useServicePrincipal": "[variables('useServicePrincipalDictionary')[variables('orchestratorType')]]", 109 | "servicePrincipalFields": [ 110 | null, 111 | { 112 | "ClientId": "[parameters('servicePrincipalClientId')]", 113 | "Secret": "[parameters('servicePrincipalClientSecret')]" 114 | } 115 | ] 116 | }, 117 | "resources": [ 118 | { 119 | "apiVersion": "2017-07-01", 120 | "type": "Microsoft.ContainerService/containerServices", 121 | "location": "[resourceGroup().location]", 122 | "name":"[concat('containerservice-',resourceGroup().name)]", 123 | "properties": { 124 | "orchestratorProfile": { 125 | "orchestratorType": "[variables('orchestratorType')]" 126 | }, 127 | "masterProfile": { 128 | "count": "[variables('masterCount')]", 129 | "dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]", 130 | "vmSize": "[variables('masterVMSize')]" 131 | }, 132 | "agentPoolProfiles": [ 133 | { 134 | "name": "agentpublic", 135 | "count": 1, 136 | "vmSize": "[variables('agentVMSize')]", 137 | "dnsPrefix": "[variables('agentsEndpointDNSNamePrefix')]", 138 | "ports": [ 139 | 443, 140 | 8080 141 | ] 142 | }, 143 | { 144 | "name": "agentprivate", 145 | "count": "[variables('agentCount')]", 146 | "vmSize": "[variables('agentVMSize')]" 147 | } 148 | ] , 149 | "linuxProfile": { 150 | "adminUsername": "[variables('adminUsername')]", 151 | "ssh": { 152 | "publicKeys": [ 153 | { 154 | "keyData": "[variables('sshRSAPublicKey')]" 155 | } 156 | ] 157 | } 158 | }, 159 | "servicePrincipalProfile": "[variables('servicePrincipalFields')[variables('useServicePrincipal')]]" 160 | } 161 | } 162 | ], 163 | "outputs": { 164 | "masterFQDN": { 165 | "type": "string", 166 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn]" 167 | }, 168 | "sshMaster0": { 169 | "type": "string", 170 | "value": "[concat('ssh ', variables('adminUsername'), '@', reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn, ' -A -p 2200')]" 171 | }, 172 | "agentFQDN": { 173 | "type": "string", 174 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).agentPoolProfiles[0].fqdn]" 175 | } 176 | } 177 | } -------------------------------------------------------------------------------- /docs/MasterSize/azuredeploy.dcos.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Sets the Domain name prefix for the Master nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 9 | } 10 | }, 11 | "agentDnsNamePrefix": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "Sets the Domain name prefix for the Agent nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 15 | } 16 | }, 17 | "agentCount": { 18 | "type": "int", 19 | "defaultValue": 1, 20 | "metadata": { 21 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 22 | }, 23 | "minValue":1, 24 | "maxValue":100 25 | }, 26 | "agentVMSize": { 27 | "type": "string", 28 | "defaultValue": "Standard_D2_v2", 29 | "metadata": { 30 | "description": "The size of the Virtual Machine." 31 | } 32 | }, 33 | "linuxAdminUsername": { 34 | "type": "string", 35 | "defaultValue": "azureuser", 36 | "metadata": { 37 | "description": "User name for the Linux Virtual Machines." 38 | } 39 | }, 40 | "orchestratorType": { 41 | "type": "string", 42 | "defaultValue": "Kubernetes", 43 | "allowedValues": [ 44 | "Kubernetes", 45 | "DCOS", 46 | "DockerCE" 47 | ], 48 | "metadata": { 49 | "description": "The type of orchestrator used to manage the applications on the cluster." 50 | } 51 | }, 52 | "masterCount": { 53 | "type": "int", 54 | "defaultValue": 1, 55 | "allowedValues": [ 56 | 1, 57 | 3, 58 | 5 59 | ], 60 | "metadata": { 61 | "description": "The number of Kubernetes masters for the cluster." 62 | } 63 | }, 64 | "masterVMSize": { 65 | "metadata": { 66 | "description": "The size of the Virtual Machine." 67 | }, 68 | "type": "string" 69 | }, 70 | "sshRSAPublicKey": { 71 | "type": "string", 72 | "metadata": { 73 | "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" 74 | } 75 | }, 76 | "servicePrincipalClientId": { 77 | "metadata": { 78 | "description": "Client ID (used by cloudprovider)" 79 | }, 80 | "type": "securestring", 81 | "defaultValue": "n/a" 82 | }, 83 | "servicePrincipalClientSecret": { 84 | "metadata": { 85 | "description": "The Service Principal Client Secret." 86 | }, 87 | "type": "securestring", 88 | "defaultValue": "n/a" 89 | } 90 | }, 91 | "variables": { 92 | "adminUsername":"[parameters('linuxAdminUsername')]", 93 | "agentCount":"[parameters('agentCount')]", 94 | "agentsEndpointDNSNamePrefix":"[parameters('agentDnsNamePrefix')]", 95 | "agentVMSize":"[parameters('agentVMSize')]", 96 | "masterCount":"[parameters('masterCount')]", 97 | "masterVMSize":"[parameters('masterVMSize')]", 98 | "mastersEndpointDNSNamePrefix":"[parameters('masterDnsNamePrefix')]", 99 | "orchestratorType":"[parameters('orchestratorType')]", 100 | "sshRSAPublicKey":"[parameters('sshRSAPublicKey')]", 101 | "servicePrincipalClientId": "[parameters('servicePrincipalClientId')]", 102 | "servicePrincipalClientSecret": "[parameters('servicePrincipalClientSecret')]", 103 | "useServicePrincipalDictionary": { 104 | "DCOS": 0, 105 | "DockerCE": 0, 106 | "Kubernetes": 1 107 | }, 108 | "useServicePrincipal": "[variables('useServicePrincipalDictionary')[variables('orchestratorType')]]", 109 | "servicePrincipalFields": [ 110 | null, 111 | { 112 | "ClientId": "[parameters('servicePrincipalClientId')]", 113 | "Secret": "[parameters('servicePrincipalClientSecret')]" 114 | } 115 | ] 116 | }, 117 | "resources": [ 118 | { 119 | "apiVersion": "2017-07-01", 120 | "type": "Microsoft.ContainerService/containerServices", 121 | "location": "[resourceGroup().location]", 122 | "name":"[concat('containerservice-',resourceGroup().name)]", 123 | "properties": { 124 | "orchestratorProfile": { 125 | "orchestratorType": "[variables('orchestratorType')]" 126 | }, 127 | "masterProfile": { 128 | "count": "[variables('masterCount')]", 129 | "dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]", 130 | "vmSize": "[variables('masterVMSize')]" 131 | }, 132 | "agentPoolProfiles": [ 133 | { 134 | "name": "agentpublic", 135 | "count": 1, 136 | "vmSize": "[variables('agentVMSize')]", 137 | "dnsPrefix": "[variables('agentsEndpointDNSNamePrefix')]", 138 | "ports": [ 139 | 443, 140 | 8080 141 | ] 142 | }, 143 | { 144 | "name": "agentprivate", 145 | "count": "[variables('agentCount')]", 146 | "vmSize": "[variables('agentVMSize')]" 147 | } 148 | ] , 149 | "linuxProfile": { 150 | "adminUsername": "[variables('adminUsername')]", 151 | "ssh": { 152 | "publicKeys": [ 153 | { 154 | "keyData": "[variables('sshRSAPublicKey')]" 155 | } 156 | ] 157 | } 158 | }, 159 | "servicePrincipalProfile": "[variables('servicePrincipalFields')[variables('useServicePrincipal')]]" 160 | } 161 | } 162 | ], 163 | "outputs": { 164 | "masterFQDN": { 165 | "type": "string", 166 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn]" 167 | }, 168 | "sshMaster0": { 169 | "type": "string", 170 | "value": "[concat('ssh ', variables('adminUsername'), '@', reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn, ' -A -p 2200')]" 171 | }, 172 | "agentFQDN": { 173 | "type": "string", 174 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).agentPoolProfiles[0].fqdn]" 175 | } 176 | } 177 | } 178 | -------------------------------------------------------------------------------- /docs/Ports/azuredeploy.dcos.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Sets the Domain name prefix for the Master nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 9 | } 10 | }, 11 | "agentDnsNamePrefix": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "Sets the Domain name prefix for the Agent nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 15 | } 16 | }, 17 | "agentCount": { 18 | "type": "int", 19 | "defaultValue": 1, 20 | "metadata": { 21 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 22 | }, 23 | "minValue":1, 24 | "maxValue":100 25 | }, 26 | "agentVMSize": { 27 | "type": "string", 28 | "defaultValue": "Standard_D2_v2", 29 | "metadata": { 30 | "description": "The size of the Virtual Machine." 31 | } 32 | }, 33 | "linuxAdminUsername": { 34 | "type": "string", 35 | "defaultValue": "azureuser", 36 | "metadata": { 37 | "description": "User name for the Linux Virtual Machines." 38 | } 39 | }, 40 | "orchestratorType": { 41 | "type": "string", 42 | "defaultValue": "Kubernetes", 43 | "allowedValues": [ 44 | "Kubernetes", 45 | "DCOS", 46 | "DockerCE" 47 | ], 48 | "metadata": { 49 | "description": "The type of orchestrator used to manage the applications on the cluster." 50 | } 51 | }, 52 | "masterCount": { 53 | "type": "int", 54 | "defaultValue": 1, 55 | "allowedValues": [ 56 | 1, 57 | 3, 58 | 5 59 | ], 60 | "metadata": { 61 | "description": "The number of Kubernetes masters for the cluster." 62 | } 63 | }, 64 | "masterVMSize": { 65 | "metadata": { 66 | "description": "The size of the Virtual Machine." 67 | }, 68 | "type": "string" 69 | }, 70 | "sshRSAPublicKey": { 71 | "type": "string", 72 | "metadata": { 73 | "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" 74 | } 75 | }, 76 | "servicePrincipalClientId": { 77 | "metadata": { 78 | "description": "Client ID (used by cloudprovider)" 79 | }, 80 | "type": "securestring", 81 | "defaultValue": "n/a" 82 | }, 83 | "servicePrincipalClientSecret": { 84 | "metadata": { 85 | "description": "The Service Principal Client Secret." 86 | }, 87 | "type": "securestring", 88 | "defaultValue": "n/a" 89 | } 90 | }, 91 | "variables": { 92 | "adminUsername":"[parameters('linuxAdminUsername')]", 93 | "agentCount":"[parameters('agentCount')]", 94 | "agentsEndpointDNSNamePrefix":"[parameters('agentDnsNamePrefix')]", 95 | "agentVMSize":"[parameters('agentVMSize')]", 96 | "masterCount":"[parameters('masterCount')]", 97 | "masterVMSize":"[parameters('masterVMSize')]", 98 | "mastersEndpointDNSNamePrefix":"[parameters('masterDnsNamePrefix')]", 99 | "orchestratorType":"[parameters('orchestratorType')]", 100 | "sshRSAPublicKey":"[parameters('sshRSAPublicKey')]", 101 | "servicePrincipalClientId": "[parameters('servicePrincipalClientId')]", 102 | "servicePrincipalClientSecret": "[parameters('servicePrincipalClientSecret')]", 103 | "useServicePrincipalDictionary": { 104 | "DCOS": 0, 105 | "DockerCE": 0, 106 | "Kubernetes": 1 107 | }, 108 | "useServicePrincipal": "[variables('useServicePrincipalDictionary')[variables('orchestratorType')]]", 109 | "servicePrincipalFields": [ 110 | null, 111 | { 112 | "ClientId": "[parameters('servicePrincipalClientId')]", 113 | "Secret": "[parameters('servicePrincipalClientSecret')]" 114 | } 115 | ] 116 | }, 117 | "resources": [ 118 | { 119 | "apiVersion": "2017-07-01", 120 | "type": "Microsoft.ContainerService/containerServices", 121 | "location": "[resourceGroup().location]", 122 | "name":"[concat('containerservice-',resourceGroup().name)]", 123 | "properties": { 124 | "orchestratorProfile": { 125 | "orchestratorType": "[variables('orchestratorType')]" 126 | }, 127 | "masterProfile": { 128 | "count": "[variables('masterCount')]", 129 | "dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]", 130 | "vmSize": "[variables('masterVMSize')]" 131 | }, 132 | "agentPoolProfiles": [ 133 | { 134 | "name": "agentpublic", 135 | "count": 1, 136 | "vmSize": "[variables('agentVMSize')]", 137 | "dnsPrefix": "[variables('agentsEndpointDNSNamePrefix')]", 138 | "ports": [ 139 | 443, 140 | 8080, 141 | 8081, 142 | 8082, 143 | 8083, 144 | 8084 145 | ] 146 | }, 147 | { 148 | "name": "agentprivate", 149 | "count": "[variables('agentCount')]", 150 | "vmSize": "[variables('agentVMSize')]" 151 | } 152 | ] , 153 | "linuxProfile": { 154 | "adminUsername": "[variables('adminUsername')]", 155 | "ssh": { 156 | "publicKeys": [ 157 | { 158 | "keyData": "[variables('sshRSAPublicKey')]" 159 | } 160 | ] 161 | } 162 | }, 163 | "servicePrincipalProfile": "[variables('servicePrincipalFields')[variables('useServicePrincipal')]]" 164 | } 165 | } 166 | ], 167 | "outputs": { 168 | "masterFQDN": { 169 | "type": "string", 170 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn]" 171 | }, 172 | "sshMaster0": { 173 | "type": "string", 174 | "value": "[concat('ssh ', variables('adminUsername'), '@', reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn, ' -A -p 2200')]" 175 | }, 176 | "agentFQDN": { 177 | "type": "string", 178 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).agentPoolProfiles[0].fqdn]" 179 | } 180 | } 181 | } -------------------------------------------------------------------------------- /docs/VNET/azuredeploy.kubernetes.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Sets the Domain name prefix for the Master nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 9 | } 10 | }, 11 | "agentDnsNamePrefix": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "Sets the Domain name prefix for the Agent nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 15 | } 16 | }, 17 | "agentCount": { 18 | "type": "int", 19 | "defaultValue": 1, 20 | "metadata": { 21 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 22 | }, 23 | "minValue":1, 24 | "maxValue":100 25 | }, 26 | "agentVMSize": { 27 | "type": "string", 28 | "defaultValue": "Standard_D2_v2", 29 | "metadata": { 30 | "description": "The size of the Virtual Machine." 31 | } 32 | }, 33 | "linuxAdminUsername": { 34 | "type": "string", 35 | "defaultValue": "azureuser", 36 | "metadata": { 37 | "description": "User name for the Linux Virtual Machines." 38 | } 39 | }, 40 | "orchestratorType": { 41 | "type": "string", 42 | "defaultValue": "Kubernetes", 43 | "allowedValues": [ 44 | "Kubernetes", 45 | "DCOS", 46 | "DockerCE" 47 | ], 48 | "metadata": { 49 | "description": "The type of orchestrator used to manage the applications on the cluster." 50 | } 51 | }, 52 | "masterCount": { 53 | "type": "int", 54 | "defaultValue": 1, 55 | "allowedValues": [ 56 | 1, 57 | 3, 58 | 5 59 | ], 60 | "metadata": { 61 | "description": "The number of Kubernetes masters for the cluster." 62 | } 63 | }, 64 | "masterVMSize": { 65 | "metadata": { 66 | "description": "The size of the Virtual Machine." 67 | }, 68 | "type": "string" 69 | }, 70 | "vnetSubnetID": { 71 | "metadata": { 72 | "description": "Sets the vnet subnet." 73 | }, 74 | "type": "string" 75 | }, 76 | "sshRSAPublicKey": { 77 | "type": "string", 78 | "metadata": { 79 | "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" 80 | } 81 | }, 82 | "servicePrincipalClientId": { 83 | "metadata": { 84 | "description": "Client ID (used by cloudprovider)" 85 | }, 86 | "type": "securestring", 87 | "defaultValue": "n/a" 88 | }, 89 | "servicePrincipalClientSecret": { 90 | "metadata": { 91 | "description": "The Service Principal Client Secret." 92 | }, 93 | "type": "securestring", 94 | "defaultValue": "n/a" 95 | } 96 | }, 97 | "variables": { 98 | "adminUsername":"[parameters('linuxAdminUsername')]", 99 | "agentCount":"[parameters('agentCount')]", 100 | "agentsEndpointDNSNamePrefix":"[parameters('agentDnsNamePrefix')]", 101 | "agentVMSize":"[parameters('agentVMSize')]", 102 | "masterCount":"[parameters('masterCount')]", 103 | "masterVMSize":"[parameters('masterVMSize')]", 104 | "mastersEndpointDNSNamePrefix":"[parameters('masterDnsNamePrefix')]", 105 | "vnetSubnetID":"[parameters('vnetSubnetID')]", 106 | "orchestratorType":"[parameters('orchestratorType')]", 107 | "sshRSAPublicKey":"[parameters('sshRSAPublicKey')]", 108 | "servicePrincipalClientId": "[parameters('servicePrincipalClientId')]", 109 | "servicePrincipalClientSecret": "[parameters('servicePrincipalClientSecret')]", 110 | "useServicePrincipalDictionary": { 111 | "DCOS": 0, 112 | "DockerCE": 0, 113 | "Kubernetes": 1 114 | }, 115 | "useServicePrincipal": "[variables('useServicePrincipalDictionary')[variables('orchestratorType')]]", 116 | "servicePrincipalFields": [ 117 | null, 118 | { 119 | "ClientId": "[parameters('servicePrincipalClientId')]", 120 | "Secret": "[parameters('servicePrincipalClientSecret')]" 121 | } 122 | ] 123 | }, 124 | "resources": [ 125 | { 126 | "apiVersion": "2017-07-01", 127 | "type": "Microsoft.ContainerService/containerServices", 128 | "location": "[resourceGroup().location]", 129 | "name":"[concat('containerservice-',resourceGroup().name)]", 130 | "properties": { 131 | "orchestratorProfile": { 132 | "orchestratorType": "[variables('orchestratorType')]" 133 | }, 134 | "masterProfile": { 135 | "count": "[variables('masterCount')]", 136 | "dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]", 137 | "vmSize": "[variables('masterVMSize')]", 138 | "vnetSubnetId": "[variables('vnetSubnetID')]", 139 | "firstConsecutiveStaticIP": "10.239.255.239" 140 | }, 141 | "agentPoolProfiles": [ 142 | { 143 | "name": "agentpools", 144 | "count": "[variables('agentCount')]", 145 | "vmSize": "[variables('agentVMSize')]", 146 | "vnetSubnetId": "[variables('vnetSubnetID')]", 147 | "dnsPrefix": "[variables('agentsEndpointDNSNamePrefix')]" 148 | } 149 | ], 150 | "linuxProfile": { 151 | "adminUsername": "[variables('adminUsername')]", 152 | "ssh": { 153 | "publicKeys": [ 154 | { 155 | "keyData": "[variables('sshRSAPublicKey')]" 156 | } 157 | ] 158 | } 159 | }, 160 | "servicePrincipalProfile": "[variables('servicePrincipalFields')[variables('useServicePrincipal')]]" 161 | } 162 | } 163 | ], 164 | "outputs": { 165 | "masterFQDN": { 166 | "type": "string", 167 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn]" 168 | }, 169 | "sshMaster0": { 170 | "type": "string", 171 | "value": "[concat('ssh ', variables('adminUsername'), '@', reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn, ' -A -p 2200')]" 172 | }, 173 | "agentFQDN": { 174 | "type": "string", 175 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).agentPoolProfiles[0].fqdn]" 176 | } 177 | } 178 | } 179 | -------------------------------------------------------------------------------- /docs/StorageAccount/azuredeploy.dcos.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Sets the Domain name prefix for the Master nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 9 | } 10 | }, 11 | "agentDnsNamePrefix": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "Sets the Domain name prefix for the Agent nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 15 | } 16 | }, 17 | "agentCount": { 18 | "type": "int", 19 | "defaultValue": 1, 20 | "metadata": { 21 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 22 | }, 23 | "minValue":1, 24 | "maxValue":100 25 | }, 26 | "agentVMSize": { 27 | "type": "string", 28 | "defaultValue": "Standard_D2_v2", 29 | "metadata": { 30 | "description": "The size of the Virtual Machine." 31 | } 32 | }, 33 | "linuxAdminUsername": { 34 | "type": "string", 35 | "defaultValue": "azureuser", 36 | "metadata": { 37 | "description": "User name for the Linux Virtual Machines." 38 | } 39 | }, 40 | "orchestratorType": { 41 | "type": "string", 42 | "defaultValue": "Kubernetes", 43 | "allowedValues": [ 44 | "Kubernetes", 45 | "DCOS", 46 | "DockerCE" 47 | ], 48 | "metadata": { 49 | "description": "The type of orchestrator used to manage the applications on the cluster." 50 | } 51 | }, 52 | "masterCount": { 53 | "type": "int", 54 | "defaultValue": 1, 55 | "allowedValues": [ 56 | 1, 57 | 3, 58 | 5 59 | ], 60 | "metadata": { 61 | "description": "The number of Kubernetes masters for the cluster." 62 | } 63 | }, 64 | "masterVMSize": { 65 | "metadata": { 66 | "description": "The size of the Virtual Machine." 67 | }, 68 | "type": "string" 69 | }, 70 | "sshRSAPublicKey": { 71 | "type": "string", 72 | "metadata": { 73 | "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" 74 | } 75 | }, 76 | "servicePrincipalClientId": { 77 | "metadata": { 78 | "description": "Client ID (used by cloudprovider)" 79 | }, 80 | "type": "securestring", 81 | "defaultValue": "n/a" 82 | }, 83 | "servicePrincipalClientSecret": { 84 | "metadata": { 85 | "description": "The Service Principal Client Secret." 86 | }, 87 | "type": "securestring", 88 | "defaultValue": "n/a" 89 | } 90 | }, 91 | "variables": { 92 | "adminUsername":"[parameters('linuxAdminUsername')]", 93 | "agentCount":"[parameters('agentCount')]", 94 | "agentsEndpointDNSNamePrefix":"[parameters('agentDnsNamePrefix')]", 95 | "agentVMSize":"[parameters('agentVMSize')]", 96 | "masterCount":"[parameters('masterCount')]", 97 | "masterVMSize":"[parameters('masterVMSize')]", 98 | "mastersEndpointDNSNamePrefix":"[parameters('masterDnsNamePrefix')]", 99 | "orchestratorType":"[parameters('orchestratorType')]", 100 | "sshRSAPublicKey":"[parameters('sshRSAPublicKey')]", 101 | "servicePrincipalClientId": "[parameters('servicePrincipalClientId')]", 102 | "servicePrincipalClientSecret": "[parameters('servicePrincipalClientSecret')]", 103 | "useServicePrincipalDictionary": { 104 | "DCOS": 0, 105 | "DockerCE": 0, 106 | "Kubernetes": 1 107 | }, 108 | "useServicePrincipal": "[variables('useServicePrincipalDictionary')[variables('orchestratorType')]]", 109 | "servicePrincipalFields": [ 110 | null, 111 | { 112 | "ClientId": "[parameters('servicePrincipalClientId')]", 113 | "Secret": "[parameters('servicePrincipalClientSecret')]" 114 | } 115 | ] 116 | }, 117 | "resources": [ 118 | { 119 | "apiVersion": "2017-07-01", 120 | "type": "Microsoft.ContainerService/containerServices", 121 | "location": "[resourceGroup().location]", 122 | "name":"[concat('containerservice-',resourceGroup().name)]", 123 | "properties": { 124 | "orchestratorProfile": { 125 | "orchestratorType": "[variables('orchestratorType')]" 126 | }, 127 | "masterProfile": { 128 | "count": "[variables('masterCount')]", 129 | "dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]", 130 | "vmSize": "[variables('masterVMSize')]", 131 | "storageProfile": "StorageAccount" 132 | }, 133 | "agentPoolProfiles": [ 134 | { 135 | "name": "agentpublic", 136 | "count": 1, 137 | "vmSize": "[variables('agentVMSize')]", 138 | "dnsPrefix": "[variables('agentsEndpointDNSNamePrefix')]", 139 | "ports": [ 140 | 443, 141 | 8080 142 | ], 143 | "storageProfile": "StorageAccount" 144 | }, 145 | { 146 | "name": "agentprivate", 147 | "count": "[variables('agentCount')]", 148 | "vmSize": "[variables('agentVMSize')]", 149 | "storageProfile": "StorageAccount" 150 | } 151 | ] , 152 | "linuxProfile": { 153 | "adminUsername": "[variables('adminUsername')]", 154 | "ssh": { 155 | "publicKeys": [ 156 | { 157 | "keyData": "[variables('sshRSAPublicKey')]" 158 | } 159 | ] 160 | } 161 | }, 162 | "servicePrincipalProfile": "[variables('servicePrincipalFields')[variables('useServicePrincipal')]]" 163 | } 164 | } 165 | ], 166 | "outputs": { 167 | "masterFQDN": { 168 | "type": "string", 169 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn]" 170 | }, 171 | "sshMaster0": { 172 | "type": "string", 173 | "value": "[concat('ssh ', variables('adminUsername'), '@', reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn, ' -A -p 2200')]" 174 | }, 175 | "agentFQDN": { 176 | "type": "string", 177 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).agentPoolProfiles[0].fqdn]" 178 | } 179 | } 180 | } -------------------------------------------------------------------------------- /docs/LargeCluster/azuredeploy.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Sets the Domain name prefix for the Master nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 9 | } 10 | }, 11 | "agentDnsNamePrefix": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "Sets the Domain name prefix for the Agent nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 15 | } 16 | }, 17 | "agentPool1Count": { 18 | "type": "int", 19 | "defaultValue": 1, 20 | "metadata": { 21 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 22 | }, 23 | "minValue":1, 24 | "maxValue":100 25 | }, 26 | "agentPool1VMSize": { 27 | "type": "string", 28 | "defaultValue": "Standard_D2_v2", 29 | "metadata": { 30 | "description": "The size of the Virtual Machine." 31 | } 32 | }, 33 | "agentPool2Count": { 34 | "type": "int", 35 | "defaultValue": 1, 36 | "metadata": { 37 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 38 | }, 39 | "minValue":1, 40 | "maxValue":100 41 | }, 42 | "agentPool2VMSize": { 43 | "type": "string", 44 | "defaultValue": "Standard_D2_v2", 45 | "metadata": { 46 | "description": "The size of the Virtual Machine." 47 | } 48 | }, 49 | "agentPool3Count": { 50 | "type": "int", 51 | "defaultValue": 1, 52 | "metadata": { 53 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 54 | }, 55 | "minValue":1, 56 | "maxValue":100 57 | }, 58 | "agentPool3VMSize": { 59 | "type": "string", 60 | "defaultValue": "Standard_D2_v2", 61 | "metadata": { 62 | "description": "The size of the Virtual Machine." 63 | } 64 | }, 65 | "linuxAdminUsername": { 66 | "type": "string", 67 | "defaultValue": "azureuser", 68 | "metadata": { 69 | "description": "User name for the Linux Virtual Machines." 70 | } 71 | }, 72 | "orchestratorType": { 73 | "type": "string", 74 | "defaultValue": "Kubernetes", 75 | "allowedValues": [ 76 | "Kubernetes", 77 | "DCOS", 78 | "DockerCE" 79 | ], 80 | "metadata": { 81 | "description": "The type of orchestrator used to manage the applications on the cluster." 82 | } 83 | }, 84 | "masterCount": { 85 | "type": "int", 86 | "defaultValue": 1, 87 | "allowedValues": [ 88 | 1, 89 | 3, 90 | 5 91 | ], 92 | "metadata": { 93 | "description": "The number of Kubernetes masters for the cluster." 94 | } 95 | }, 96 | "masterVMSize": { 97 | "metadata": { 98 | "description": "The size of the Virtual Machine." 99 | }, 100 | "type": "string" 101 | }, 102 | "sshRSAPublicKey": { 103 | "type": "string", 104 | "metadata": { 105 | "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" 106 | } 107 | } 108 | }, 109 | "variables": { 110 | "adminUsername":"[parameters('linuxAdminUsername')]", 111 | "agentPool1Count":"[parameters('agentPool1Count')]", 112 | "agentPool2Count":"[parameters('agentPool2Count')]", 113 | "agentPool3Count":"[parameters('agentPool3Count')]", 114 | "agentsEndpointDNSNamePrefix":"[parameters('agentDnsNamePrefix')]", 115 | "agentPool1VMSize":"[parameters('agentPool1VMSize')]", 116 | "agentPool2VMSize":"[parameters('agentPool2VMSize')]", 117 | "agentPool3VMSize":"[parameters('agentPool3VMSize')]", 118 | "masterCount":"[parameters('masterCount')]", 119 | "masterVMSize":"[parameters('masterVMSize')]", 120 | "mastersEndpointDNSNamePrefix":"[parameters('masterDnsNamePrefix')]", 121 | "orchestratorType":"[parameters('orchestratorType')]", 122 | "sshRSAPublicKey":"[parameters('sshRSAPublicKey')]" 123 | }, 124 | "resources": [ 125 | { 126 | "apiVersion": "2017-07-01", 127 | "type": "Microsoft.ContainerService/containerServices", 128 | "location": "[resourceGroup().location]", 129 | "name":"containerservice", 130 | "properties": { 131 | "orchestratorProfile": { 132 | "orchestratorType": "[variables('orchestratorType')]" 133 | }, 134 | "masterProfile": { 135 | "count": "[variables('masterCount')]", 136 | "dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]", 137 | "vmSize": "[variables('masterVMSize')]" 138 | }, 139 | "agentPoolProfiles": [ 140 | { 141 | "name": "agentPool1", 142 | "count": "[variables('agentPool1Count')]", 143 | "vmSize": "[variables('agentPool1VMSize')]", 144 | "dnsPrefix": "[variables('agentsEndpointDNSNamePrefix')]" 145 | }, 146 | { 147 | "name": "agentPool2", 148 | "count": "[variables('agentPool2Count')]", 149 | "vmSize": "[variables('agentPool2VMSize')]" 150 | }, 151 | { 152 | "name": "agentPool3", 153 | "count": "[variables('agentPool3Count')]", 154 | "vmSize": "[variables('agentPool3VMSize')]" 155 | } 156 | ], 157 | "linuxProfile": { 158 | "adminUsername": "[variables('adminUsername')]", 159 | "ssh": { 160 | "publicKeys": [ 161 | { 162 | "keyData": "[variables('sshRSAPublicKey')]" 163 | } 164 | ] 165 | } 166 | } 167 | } 168 | } 169 | ], 170 | "outputs": { 171 | "masterFQDN": { 172 | "type": "string", 173 | "value": "[reference('Microsoft.ContainerService/containerServices/containerservice').masterProfile.fqdn]" 174 | }, 175 | "sshMaster0": { 176 | "type": "string", 177 | "value": "[concat('ssh ', variables('adminUsername'), '@', reference('Microsoft.ContainerService/containerServices/containerservice').masterProfile.fqdn, ' -A -p 2200')]" 178 | }, 179 | "agentFQDN": { 180 | "type": "string", 181 | "value": "[reference('Microsoft.ContainerService/containerServices/containerservice').agentPoolProfiles[0].fqdn]" 182 | } 183 | } 184 | } -------------------------------------------------------------------------------- /docs/VNET/azuredeploy.dockerce.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Sets the Domain name prefix for the Master nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 9 | } 10 | }, 11 | "agentDnsNamePrefix": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "Sets the Domain name prefix for the Agent nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 15 | } 16 | }, 17 | "agentCount": { 18 | "type": "int", 19 | "defaultValue": 1, 20 | "metadata": { 21 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 22 | }, 23 | "minValue":1, 24 | "maxValue":100 25 | }, 26 | "agentVMSize": { 27 | "type": "string", 28 | "defaultValue": "Standard_D2_v2", 29 | "metadata": { 30 | "description": "The size of the Virtual Machine." 31 | } 32 | }, 33 | "agentVnetSubnetID": { 34 | "metadata": { 35 | "description": "Sets the vnet subnet of agent pool." 36 | }, 37 | "type": "string" 38 | }, 39 | "linuxAdminUsername": { 40 | "type": "string", 41 | "defaultValue": "azureuser", 42 | "metadata": { 43 | "description": "User name for the Linux Virtual Machines." 44 | } 45 | }, 46 | "orchestratorType": { 47 | "type": "string", 48 | "defaultValue": "Kubernetes", 49 | "allowedValues": [ 50 | "Kubernetes", 51 | "DCOS", 52 | "DockerCE" 53 | ], 54 | "metadata": { 55 | "description": "The type of orchestrator used to manage the applications on the cluster." 56 | } 57 | }, 58 | "masterCount": { 59 | "type": "int", 60 | "defaultValue": 1, 61 | "allowedValues": [ 62 | 1, 63 | 3, 64 | 5 65 | ], 66 | "metadata": { 67 | "description": "The number of Kubernetes masters for the cluster." 68 | } 69 | }, 70 | "masterVMSize": { 71 | "metadata": { 72 | "description": "The size of the Virtual Machine." 73 | }, 74 | "type": "string" 75 | }, 76 | "masterVnetSubnetID": { 77 | "metadata": { 78 | "description": "Sets the vnet subnet of the master." 79 | }, 80 | "type": "string" 81 | }, 82 | "sshRSAPublicKey": { 83 | "type": "string", 84 | "metadata": { 85 | "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" 86 | } 87 | }, 88 | "servicePrincipalClientId": { 89 | "metadata": { 90 | "description": "Client ID (used by cloudprovider)" 91 | }, 92 | "type": "securestring", 93 | "defaultValue": "n/a" 94 | }, 95 | "servicePrincipalClientSecret": { 96 | "metadata": { 97 | "description": "The Service Principal Client Secret." 98 | }, 99 | "type": "securestring", 100 | "defaultValue": "n/a" 101 | } 102 | }, 103 | "variables": { 104 | "adminUsername":"[parameters('linuxAdminUsername')]", 105 | "agentCount":"[parameters('agentCount')]", 106 | "agentsEndpointDNSNamePrefix":"[parameters('agentDnsNamePrefix')]", 107 | "agentVMSize":"[parameters('agentVMSize')]", 108 | "agentVnetSubnetID":"[parameters('agentVnetSubnetID')]", 109 | "masterCount":"[parameters('masterCount')]", 110 | "masterVMSize":"[parameters('masterVMSize')]", 111 | "masterVnetSubnetID":"[parameters('masterVnetSubnetID')]", 112 | "mastersEndpointDNSNamePrefix":"[parameters('masterDnsNamePrefix')]", 113 | "orchestratorType":"[parameters('orchestratorType')]", 114 | "sshRSAPublicKey":"[parameters('sshRSAPublicKey')]", 115 | "servicePrincipalClientId": "[parameters('servicePrincipalClientId')]", 116 | "servicePrincipalClientSecret": "[parameters('servicePrincipalClientSecret')]", 117 | "useServicePrincipalDictionary": { 118 | "DCOS": 0, 119 | "DockerCE": 0, 120 | "Kubernetes": 1 121 | }, 122 | "useServicePrincipal": "[variables('useServicePrincipalDictionary')[variables('orchestratorType')]]", 123 | "servicePrincipalFields": [ 124 | null, 125 | { 126 | "ClientId": "[parameters('servicePrincipalClientId')]", 127 | "Secret": "[parameters('servicePrincipalClientSecret')]" 128 | } 129 | ] 130 | }, 131 | "resources": [ 132 | { 133 | "apiVersion": "2017-07-01", 134 | "type": "Microsoft.ContainerService/containerServices", 135 | "location": "[resourceGroup().location]", 136 | "name":"[concat('containerservice-',resourceGroup().name)]", 137 | "properties": { 138 | "orchestratorProfile": { 139 | "orchestratorType": "[variables('orchestratorType')]" 140 | }, 141 | "masterProfile": { 142 | "count": "[variables('masterCount')]", 143 | "dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]", 144 | "vmSize": "[variables('masterVMSize')]", 145 | "vnetSubnetId": "[variables('masterVnetSubnetID')]", 146 | "firstConsecutiveStaticIP": "10.100.0.5" 147 | }, 148 | "agentPoolProfiles": [ 149 | { 150 | "name": "agentpools", 151 | "count": "[variables('agentCount')]", 152 | "vmSize": "[variables('agentVMSize')]", 153 | "vnetSubnetId": "[variables('agentVnetSubnetID')]", 154 | "dnsPrefix": "[variables('agentsEndpointDNSNamePrefix')]" 155 | } 156 | ], 157 | "linuxProfile": { 158 | "adminUsername": "[variables('adminUsername')]", 159 | "ssh": { 160 | "publicKeys": [ 161 | { 162 | "keyData": "[variables('sshRSAPublicKey')]" 163 | } 164 | ] 165 | } 166 | }, 167 | "servicePrincipalProfile": "[variables('servicePrincipalFields')[variables('useServicePrincipal')]]" 168 | } 169 | } 170 | ], 171 | "outputs": { 172 | "masterFQDN": { 173 | "type": "string", 174 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn]" 175 | }, 176 | "sshMaster0": { 177 | "type": "string", 178 | "value": "[concat('ssh ', variables('adminUsername'), '@', reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn, ' -A -p 2200')]" 179 | }, 180 | "agentFQDN": { 181 | "type": "string", 182 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).agentPoolProfiles[0].fqdn]" 183 | } 184 | } 185 | } 186 | -------------------------------------------------------------------------------- /docs/VNET/azuredeploy.dcos.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Sets the Domain name prefix for the Master nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 9 | } 10 | }, 11 | "agentDnsNamePrefix": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "Sets the Domain name prefix for the Agent nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 15 | } 16 | }, 17 | "agentCount": { 18 | "type": "int", 19 | "defaultValue": 1, 20 | "metadata": { 21 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 22 | }, 23 | "minValue":1, 24 | "maxValue":100 25 | }, 26 | "agentVMSize": { 27 | "type": "string", 28 | "defaultValue": "Standard_D2_v2", 29 | "metadata": { 30 | "description": "The size of the Virtual Machine." 31 | } 32 | }, 33 | "agentVnetSubnetID": { 34 | "metadata": { 35 | "description": "Sets the vnet subnet of agent pool." 36 | }, 37 | "type": "string" 38 | }, 39 | "linuxAdminUsername": { 40 | "type": "string", 41 | "defaultValue": "azureuser", 42 | "metadata": { 43 | "description": "User name for the Linux Virtual Machines." 44 | } 45 | }, 46 | "orchestratorType": { 47 | "type": "string", 48 | "defaultValue": "Kubernetes", 49 | "allowedValues": [ 50 | "Kubernetes", 51 | "DCOS", 52 | "DockerCE" 53 | ], 54 | "metadata": { 55 | "description": "The type of orchestrator used to manage the applications on the cluster." 56 | } 57 | }, 58 | "masterCount": { 59 | "type": "int", 60 | "defaultValue": 1, 61 | "allowedValues": [ 62 | 1, 63 | 3, 64 | 5 65 | ], 66 | "metadata": { 67 | "description": "The number of Kubernetes masters for the cluster." 68 | } 69 | }, 70 | "masterVMSize": { 71 | "metadata": { 72 | "description": "The size of the Virtual Machine." 73 | }, 74 | "type": "string" 75 | }, 76 | "masterVnetSubnetID": { 77 | "metadata": { 78 | "description": "Sets the vnet subnet of the master." 79 | }, 80 | "type": "string" 81 | }, 82 | "sshRSAPublicKey": { 83 | "type": "string", 84 | "metadata": { 85 | "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" 86 | } 87 | }, 88 | "servicePrincipalClientId": { 89 | "metadata": { 90 | "description": "Client ID (used by cloudprovider)" 91 | }, 92 | "type": "securestring", 93 | "defaultValue": "n/a" 94 | }, 95 | "servicePrincipalClientSecret": { 96 | "metadata": { 97 | "description": "The Service Principal Client Secret." 98 | }, 99 | "type": "securestring", 100 | "defaultValue": "n/a" 101 | } 102 | }, 103 | "variables": { 104 | "adminUsername":"[parameters('linuxAdminUsername')]", 105 | "agentCount":"[parameters('agentCount')]", 106 | "agentsEndpointDNSNamePrefix":"[parameters('agentDnsNamePrefix')]", 107 | "agentVMSize":"[parameters('agentVMSize')]", 108 | "agentVnetSubnetID":"[parameters('agentVnetSubnetID')]", 109 | "masterCount":"[parameters('masterCount')]", 110 | "masterVMSize":"[parameters('masterVMSize')]", 111 | "masterVnetSubnetID":"[parameters('masterVnetSubnetID')]", 112 | "mastersEndpointDNSNamePrefix":"[parameters('masterDnsNamePrefix')]", 113 | "orchestratorType":"[parameters('orchestratorType')]", 114 | "sshRSAPublicKey":"[parameters('sshRSAPublicKey')]", 115 | "servicePrincipalClientId": "[parameters('servicePrincipalClientId')]", 116 | "servicePrincipalClientSecret": "[parameters('servicePrincipalClientSecret')]", 117 | "useServicePrincipalDictionary": { 118 | "DCOS": 0, 119 | "DockerCE": 0, 120 | "Kubernetes": 1 121 | }, 122 | "useServicePrincipal": "[variables('useServicePrincipalDictionary')[variables('orchestratorType')]]", 123 | "servicePrincipalFields": [ 124 | null, 125 | { 126 | "ClientId": "[parameters('servicePrincipalClientId')]", 127 | "Secret": "[parameters('servicePrincipalClientSecret')]" 128 | } 129 | ] 130 | }, 131 | "resources": [ 132 | { 133 | "apiVersion": "2017-07-01", 134 | "type": "Microsoft.ContainerService/containerServices", 135 | "location": "[resourceGroup().location]", 136 | "name":"[concat('containerservice-',resourceGroup().name)]", 137 | "properties": { 138 | "orchestratorProfile": { 139 | "orchestratorType": "[variables('orchestratorType')]" 140 | }, 141 | "masterProfile": { 142 | "count": "[variables('masterCount')]", 143 | "dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]", 144 | "vmSize": "[variables('masterVMSize')]", 145 | "vnetSubnetId": "[variables('masterVnetSubnetID')]", 146 | "firstConsecutiveStaticIP": "10.100.0.5" 147 | }, 148 | "agentPoolProfiles": [ 149 | { 150 | "name": "agentpublic", 151 | "count": 1, 152 | "vmSize": "[variables('agentVMSize')]", 153 | "vnetSubnetId": "[variables('agentVnetSubnetID')]", 154 | "dnsPrefix": "[variables('agentsEndpointDNSNamePrefix')]", 155 | "ports": [ 156 | 443, 157 | 8080 158 | ] 159 | }, 160 | { 161 | "name": "agentprivate", 162 | "count": "[variables('agentCount')]", 163 | "vmSize": "[variables('agentVMSize')]", 164 | "vnetSubnetId": "[variables('agentVnetSubnetID')]" 165 | } 166 | ] , 167 | "linuxProfile": { 168 | "adminUsername": "[variables('adminUsername')]", 169 | "ssh": { 170 | "publicKeys": [ 171 | { 172 | "keyData": "[variables('sshRSAPublicKey')]" 173 | } 174 | ] 175 | } 176 | }, 177 | "servicePrincipalProfile": "[variables('servicePrincipalFields')[variables('useServicePrincipal')]]" 178 | } 179 | } 180 | ], 181 | "outputs": { 182 | "masterFQDN": { 183 | "type": "string", 184 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn]" 185 | }, 186 | "sshMaster0": { 187 | "type": "string", 188 | "value": "[concat('ssh ', variables('adminUsername'), '@', reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn, ' -A -p 2200')]" 189 | }, 190 | "agentFQDN": { 191 | "type": "string", 192 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).agentPoolProfiles[0].fqdn]" 193 | } 194 | } 195 | } 196 | -------------------------------------------------------------------------------- /docs/Windows/azuredeploy.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "masterDnsNamePrefix": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Sets the Domain name prefix for the Master nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 9 | } 10 | }, 11 | "agentDnsNamePrefix": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "Sets the Domain name prefix for the Agent nodes in a cluster. The concatenation of the domain name and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." 15 | } 16 | }, 17 | "agentCount": { 18 | "type": "int", 19 | "defaultValue": 1, 20 | "metadata": { 21 | "description": "The number of agents for the cluster. This value can be from 1 to 100 (note, for Kubernetes clusters you will also get 1 or 2 public agents in addition to these seleted masters)" 22 | }, 23 | "minValue":1, 24 | "maxValue":100 25 | }, 26 | "agentVMSize": { 27 | "type": "string", 28 | "defaultValue": "Standard_D2_v2", 29 | "metadata": { 30 | "description": "The size of the Virtual Machine." 31 | } 32 | }, 33 | "linuxAdminUsername": { 34 | "type": "string", 35 | "defaultValue": "azureuser", 36 | "metadata": { 37 | "description": "User name for the Linux Virtual Machines." 38 | } 39 | }, 40 | "windowsAgentAdminUsername": { 41 | "type": "string", 42 | "defaultValue": "azureuser", 43 | "metadata": { 44 | "description": "User name for the Windows Agent Node Virtual Machines." 45 | } 46 | }, 47 | "windowsAgentAdminPassword": { 48 | "type": "string", 49 | "metadata": { 50 | "description": "Password for the Windows Agent Node Virtual Machines" 51 | }, 52 | "defaultValue": "n/a" 53 | }, 54 | "orchestratorType": { 55 | "type": "string", 56 | "defaultValue": "Kubernetes", 57 | "allowedValues": [ 58 | "Kubernetes", 59 | "DCOS", 60 | "DockerCE" 61 | ], 62 | "metadata": { 63 | "description": "The type of orchestrator used to manage the applications on the cluster." 64 | } 65 | }, 66 | "masterCount": { 67 | "type": "int", 68 | "defaultValue": 1, 69 | "allowedValues": [ 70 | 1, 71 | 3, 72 | 5 73 | ], 74 | "metadata": { 75 | "description": "The number of Kubernetes masters for the cluster." 76 | } 77 | }, 78 | "masterVMSize": { 79 | "metadata": { 80 | "description": "The size of the Virtual Machine." 81 | }, 82 | "type": "string" 83 | }, 84 | "sshRSAPublicKey": { 85 | "type": "string", 86 | "metadata": { 87 | "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" 88 | } 89 | }, 90 | "servicePrincipalClientId": { 91 | "metadata": { 92 | "description": "Client ID (used by cloudprovider)" 93 | }, 94 | "type": "securestring", 95 | "defaultValue": "n/a" 96 | }, 97 | "servicePrincipalClientSecret": { 98 | "metadata": { 99 | "description": "The Service Principal Client Secret." 100 | }, 101 | "type": "securestring", 102 | "defaultValue": "n/a" 103 | }, 104 | "osType": { 105 | "type": "string", 106 | "defaultValue": "Linux", 107 | "allowedValues": [ 108 | "Linux", 109 | "Windows" 110 | ], 111 | "metadata": { 112 | "description": "The type of operating system." 113 | } 114 | } 115 | }, 116 | "variables": { 117 | "adminUsername":"[parameters('linuxAdminUsername')]", 118 | "agentCount":"[parameters('agentCount')]", 119 | "agentsEndpointDNSNamePrefix":"[parameters('agentDnsNamePrefix')]", 120 | "agentVMSize":"[parameters('agentVMSize')]", 121 | "masterCount":"[parameters('masterCount')]", 122 | "masterVMSize":"[parameters('masterVMSize')]", 123 | "mastersEndpointDNSNamePrefix":"[parameters('masterDnsNamePrefix')]", 124 | "orchestratorType":"[parameters('orchestratorType')]", 125 | "sshRSAPublicKey":"[parameters('sshRSAPublicKey')]", 126 | "servicePrincipalClientId": "[parameters('servicePrincipalClientId')]", 127 | "servicePrincipalClientSecret": "[parameters('servicePrincipalClientSecret')]", 128 | "useServicePrincipalDictionary": { 129 | "DCOS": 0, 130 | "DockerCE": 0, 131 | "Kubernetes": 1 132 | }, 133 | "useServicePrincipal": "[variables('useServicePrincipalDictionary')[variables('orchestratorType')]]", 134 | "servicePrincipalFields": [ 135 | null, 136 | { 137 | "ClientId": "[parameters('servicePrincipalClientId')]", 138 | "Secret": "[parameters('servicePrincipalClientSecret')]" 139 | } 140 | ], 141 | "osType": "[parameters('osType')]", 142 | "osProfileDictionary": { 143 | "Linux": 0, 144 | "Windows": 1 145 | }, 146 | "useWindowsOnKubernetes": "[add(variables('useServicePrincipalDictionary')[variables('orchestratorType')], variables('osProfileDictionary')[variables('osType')])]", 147 | "windowsProfileFields": [ 148 | null, 149 | null, 150 | { 151 | "adminUsername": "[parameters('windowsAgentAdminUsername')]", 152 | "adminPassword": "[parameters('windowsAgentAdminPassword')]" 153 | } 154 | ] 155 | }, 156 | "resources": [ 157 | { 158 | "apiVersion": "2017-07-01", 159 | "type": "Microsoft.ContainerService/containerServices", 160 | "location": "[resourceGroup().location]", 161 | "name":"[concat('containerservice-',resourceGroup().name)]", 162 | "properties": { 163 | "orchestratorProfile": { 164 | "orchestratorType": "[variables('orchestratorType')]" 165 | }, 166 | "masterProfile": { 167 | "count": "[variables('masterCount')]", 168 | "dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]", 169 | "vmSize": "[variables('masterVMSize')]" 170 | }, 171 | "agentPoolProfiles": [ 172 | { 173 | "name": "agentwin", 174 | "count": "[variables('agentCount')]", 175 | "vmSize": "[variables('agentVMSize')]", 176 | "osType": "[variables('osType')]" 177 | } 178 | ], 179 | "linuxProfile": { 180 | "adminUsername": "[variables('adminUsername')]", 181 | "ssh": { 182 | "publicKeys": [ 183 | { 184 | "keyData": "[variables('sshRSAPublicKey')]" 185 | } 186 | ] 187 | } 188 | }, 189 | "windowsProfile": "[variables('windowsProfileFields')[variables('useWindowsOnKubernetes')]]", 190 | "servicePrincipalProfile": "[variables('servicePrincipalFields')[variables('useServicePrincipal')]]" 191 | } 192 | } 193 | ], 194 | "outputs": { 195 | "masterFQDN": { 196 | "type": "string", 197 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn]" 198 | }, 199 | "sshMaster0": { 200 | "type": "string", 201 | "value": "[concat('ssh ', variables('adminUsername'), '@', reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).masterProfile.fqdn, ' -A -p 2200')]" 202 | }, 203 | "agentFQDN": { 204 | "type": "string", 205 | "value": "[reference(concat('Microsoft.ContainerService/containerServices/', 'containerservice-', resourceGroup().name)).agentPoolProfiles[0].fqdn]" 206 | } 207 | } 208 | } -------------------------------------------------------------------------------- /docs/Windows/README.md: -------------------------------------------------------------------------------- 1 | # Microsoft Azure Container Service - Builds Docker Enabled Clusters 2 | 3 | ## Overview 4 | 5 | These Azure Resource Manager(ARM) templates allow you to deploy a Docker Enabled Cluster with Windows on Azure Container Service using Kubernetes as the orchestrator. 6 | 7 | 8 | 9 | 10 | 11 | ## User Guides 12 | 13 | Here are the steps to deploy a simple Kubernetes cluster with Windows: 14 | 15 | 1. [generate your ssh key](https://github.com/Azure/acs-engine/blob/master/docs/ssh.md#ssh-key-generation) 16 | 2. [generate your service principal](https://github.com/Azure/acs-engine/blob/master/docs/serviceprincipal.md) 17 | 3. edit the [parameter file](azuredeploy.params.kubernetes.json) and fill in your ssh key, service principal, dns name, agent count and master count 18 | 4. [deploy the output azuredeploy.json and azuredeploy.parameters.json](https://github.com/Azure/acs-engine/blob/master/README.md#deployment-usage) 19 | 20 | 21 | ## Walkthrough 22 | 23 | Once your Kubernetes cluster has been created you will have a resource group containing: 24 | 25 | 1. 1 master accessible by SSH on port 22 or kubectl on port 443 26 | 27 | 2. a set of windows nodes. The windows nodes can be accessed through an RDP SSH tunnel via the master node. To do this, follow these [instructions](https://github.com/Azure/acs-engine/blob/master/docs/ssh.md#create-port-80-tunnel-to-the-master), replacing port 80 with 3389. Since your windows machine is already using port 3389, it is recommended to use 3390 to Windows Node 0, 10.240.245.5, 3391 to Windows Node 1, 10.240.245.6, and so on as shown in the following image: 28 | 29 | ![Image of Windows RDP tunnels](https://github.com/Azure/acs-engine/blob/master/docs/images/rdptunnels.png) 30 | 31 | The following image shows the architecture of a container service cluster with 1 master, and 2 agents: 32 | 33 | ![Image of Kubernetes cluster on azure with Windows](https://github.com/Azure/acs-engine/blob/master/docs/images/kubernetes-windows.png) 34 | 35 | In the image above, you can see the following parts: 36 | 37 | 1. **Master Components** - The master runs the Kubernetes scheduler, api server, and controller manager. Port 443 is exposed for remote management with the kubectl cli. 38 | 2. **Windows Nodes** - the Kubernetes windows nodes run in an availability set. 39 | 3. **Common Components** - All VMs run a kubelet, Docker, and a Proxy. 40 | 4. **Networking** - All VMs are assigned an ip address in the 10.240.0.0/16 network. Each VM is assigned a /24 subnet for their pod CIDR enabling IP per pod. The proxy running on each VM implements the service network 10.0.0.0/16. 41 | 42 | All VMs are in the same private VNET and are fully accessible to each other. 43 | 44 | ## Create your First Kubernetes Service 45 | 46 | After completing this walkthrough you will know how to: 47 | * access Kubernetes cluster via SSH, 48 | * deploy a simple Windows Docker application and expose to the world, 49 | * and deploy a hybrid Windows / Linux Docker application. 50 | 51 | 1. After successfully deploying the template write down the master FQDN (Fully Qualified Domain Name). 52 | 1. If using Powershell or CLI, the output parameter is in the OutputsString section named 'masterFQDN' 53 | 2. If using Portal, to get the output you need to: 54 | 1. navigate to "resource group" 55 | 2. click on the resource group you just created 56 | 3. then click on "Succeeded" under *last deployment* 57 | 4. then click on the "Microsoft.Template" 58 | 5. now you can copy the output FQDNs and sample SSH commands 59 | 60 | ![Image of kubernetes Azure portal deployment output](https://github.com/Azure/acs-engine/blob/master/docs/images/portal-kubernetes-outputs.png) 61 | 62 | 2. SSH to the master FQDN obtained in step 1. 63 | 64 | 3. Explore your nodes and running pods: 65 | 1. to see a list of your nodes type `kubectl get nodes`. If you want full detail of the nodes, add `-o yaml` to become `kubectl get nodes -o yaml`. 66 | 2. to see a list of running pods type `kubectl get pods --all-namespaces`. By default DNS, heapster, and the dashboard pods will be assigned to the Linux nodes. 67 | 68 | 4. Start your first Docker image by editing a file named `simpleweb.yaml` filling in the contents below, and then apply by typing `kubectl apply -f simpleweb.yaml`. This will start a windows simple web application and expose to the world. 69 | 70 | ```yaml 71 | apiVersion: v1 72 | kind: Service 73 | metadata: 74 | name: win-webserver 75 | labels: 76 | app: win-webserver 77 | spec: 78 | ports: 79 | # the port that this service should serve on 80 | - port: 80 81 | targetPort: 80 82 | selector: 83 | app: win-webserver 84 | type: LoadBalancer 85 | --- 86 | apiVersion: extensions/v1beta1 87 | kind: Deployment 88 | metadata: 89 | labels: 90 | app: win-webserver 91 | name: win-webserver 92 | spec: 93 | replicas: 1 94 | template: 95 | metadata: 96 | labels: 97 | app: win-webserver 98 | name: win-webserver 99 | spec: 100 | containers: 101 | - name: windowswebserver 102 | image: microsoft/windowsservercore 103 | command: 104 | - powershell.exe 105 | - -command 106 | - "<#code used from https://gist.github.com/wagnerandrade/5424431#> ; $$listener = New-Object System.Net.HttpListener ; $$listener.Prefixes.Add('http://*:80/') ; $$listener.Start() ; $$callerCounts = @{} ; Write-Host('Listening at http://*:80/') ; while ($$listener.IsListening) { ;$$context = $$listener.GetContext() ;$$requestUrl = $$context.Request.Url ;$$clientIP = $$context.Request.RemoteEndPoint.Address ;$$response = $$context.Response ;Write-Host '' ;Write-Host('> {0}' -f $$requestUrl) ; ;$$count = 1 ;$$k=$$callerCounts.Get_Item($$clientIP) ;if ($$k -ne $$null) { $$count += $$k } ;$$callerCounts.Set_Item($$clientIP, $$count) ;$$header='

Windows Container Web Server

' ;$$callerCountsString='' ;$$callerCounts.Keys | % { $$callerCountsString+='

IP {0} callerCount {1} ' -f $$_,$$callerCounts.Item($$_) } ;$$footer='' ;$$content='{0}{1}{2}' -f $$header,$$callerCountsString,$$footer ;Write-Output $$content ;$$buffer = [System.Text.Encoding]::UTF8.GetBytes($$content) ;$$response.ContentLength64 = $$buffer.Length ;$$response.OutputStream.Write($$buffer, 0, $$buffer.Length) ;$$response.Close() ;$$responseStatus = $$response.StatusCode ;Write-Host('< {0}' -f $$responseStatus) } ; " 107 | nodeSelector: 108 | beta.kubernetes.io/os: windows 109 | ``` 110 | 111 | 5. Type `watch kubectl get pods` to watch the deployment of the service that takes about 30 seconds. Once running, type `kubectl get svc` and curl the 10.x address to see the output, eg. `curl 10.244.1.4` 112 | 113 | 6. Type `watch kubectl get svc` to watch the addition of the external IP address that will take about 2-5 minutes. Once there, you can take the external IP and view in your web browser. 114 | 115 | ## Troubleshooting 116 | 117 | If your cluster is not reachable, you can run the following command to check for common failures. 118 | 119 | ### Misconfigured Service Principal 120 | 121 | If your Service Principal is misconfigured, none of the Kubernetes components will come up in a healthy manner. 122 | You can check to see if this the problem: 123 | 124 | ```shell 125 | ssh -i ~/.ssh/id_rsa USER@MASTERFQDN sudo journalctl -u kubelet | grep --text autorest 126 | ``` 127 | 128 | If you see output that looks like the following, then you have **not** configured the Service Principal correctly. 129 | You may need to check to ensure the credentials were provided accurately, and that the configured Service Principal has 130 | read and **write** permissions to the target Subscription. 131 | 132 | `Nov 10 16:35:22 k8s-master-43D6F832-0 docker[3177]: E1110 16:35:22.840688 3201 kubelet_node_status.go:69] Unable to construct api.Node object for kubelet: failed to get external ID from cloud provider: autorest#WithErrorUnlessStatusCode: POST https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/token?api-version=1.0 failed with 400 Bad Request: StatusCode=400` 133 | 134 | ## Learning More 135 | 136 | Here are recommended links to learn more about Kubernetes: 137 | 138 | 1. [Kubernetes Bootcamp](https://kubernetesbootcamp.github.io/kubernetes-bootcamp/index.html) - shows you how to deploy, scale, update, and debug containerized applications. 139 | 2. [Kubernetes Userguide](http://kubernetes.io/docs/user-guide/) - provides information on running programs in an existing Kubernetes cluster. 140 | 3. [Kubernetes Examples](https://github.com/kubernetes/kubernetes/tree/master/examples) - provides a number of examples on how to run real applications with Kubernetes. --------------------------------------------------------------------------------