CI/CD using Jenkins on Azure Container Service (AKS)

Last updated: 1/25/2018

Containers make it very easy for you to continuously build and deploy your applications. By orchestrating deployment of those containers using Kubernetes in Azure Container Service, you can achieve replicable, manageable clusters of containers. By setting up a continuous build to produce your container images and orchestration, you can increase the speed and reliability of your deployment.

This Azure Resource Manager template was created by a member of the community and not by Microsoft. Each Resource Manager template is licensed to you under a license agreement by its owner, not Microsoft. Microsoft is not responsible for Resource Manager templates provided and licensed by community members and does not screen for security, compatibility, or performance. Community Resource Manager templates are not supported under any Microsoft support program or service, and are made available AS IS without warranty of any kind.

Parameters

Parameter Name Description
spClientId Service Principal Client ID used by Jenkins and Azure Container Service (AKS).
spClientSecret Service Principal Client Secret used by Jenkins and Azure Container Service(AKS).
linuxAdminUsername User name for the Linux Virtual Machines (Jenkins and Kubernetes).
linuxAdminPassword Password for the Jenkins and Grafana Virtual Machines.
linuxSSHPublicKey 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'
cosmosDbName Name of the CosmosDB.
acrName Name of the Azure Container Registery. The name may contain alpha numeric characters only and must be between 5 and 50 characters.
jenkinsDnsPrefix Unique DNS Name for the Public IP used to access the Jenkins Virtual Machine.
grafanaDnsPrefix Unique DNS Name for the Public IP used to access the Grafana Virtual Machine.
kubernetesDnsPrefix Optional DNS prefix to use with hosted Kubernetes API server FQDN.
kubernetesClusterName The name of the Managed Cluster resource.
kubernetesAgentCount The number of nodes for the cluster.
kubernetesAgentVMSize The size of the Virtual Machine.
kubernetesVersion The version of Kubernetes.
gitRepository URL to a public git repository that includes a Dockerfile.
_artifactsLocation The base URI where artifacts required by this template are located. When the template is deployed using the accompanying scripts, a private location in the subscription will be used and this value will be automatically generated.
_artifactsLocationSasToken The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated.
location Location for all resources.

Use the template

PowerShell

New-AzResourceGroup -Name <resource-group-name> -Location <resource-group-location> #use this command when you need to create a new resource group for your deployment
New-AzResourceGroupDeployment -ResourceGroupName <resource-group-name> -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/jenkins-cicd-container/azuredeploy.json
Install and configure Azure PowerShell

Command line

az group create --name <resource-group-name> --location <resource-group-location> #use this command when you need to create a new resource group for your deployment
az group deployment create --resource-group <my-resource-group> --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/jenkins-cicd-container/azuredeploy.json
Install and Configure the Azure Cross-Platform Command-Line Interface

More templates by Tyler Lu