Skip to content

kuptan/terraform-azure-aks

Repository files navigation

Terraform Azure K8S Clusters

CircleCI MIT License GitHub Release PR's Welcome

This is a terraform module to create Kubernetes clusters on top of Azure AKS

Module Infos

Check the module documentation here

The naming convention of the resources are based on the Azure Naming Convention

Usage

module "aks" {
  source  = "kube-champ/aks/azure"
  ...
}

Contributing

See contributing docs here

Requirements

No requirements.

Providers

Name Version
azuread n/a
azurerm n/a
tls n/a

Inputs

Name Description Type Default Required
additional_node_pools Additional node pools configuration
map(object({
subnet_id : string
node_count : number
vm_size : string
os_type : string
os_disk_size_gb : number
auto_scaling_enabled : bool
min_count : number
max_count : number
availability_zones : list(number)
}))
{} no
az_location The azure location on which resources are deployed string "westeurope" no
azure_ad Azure AD integration config object({ rbac_enabled : bool, admins_object_ids : list(string) })
{
"admins_object_ids": [],
"rbac_enabled": false
}
no
client_id Service principal's client ID for AKS service principal configuration string n/a yes
client_secret Service principal's client secret for AKS service principal configuration string n/a yes
cluster_network Advanced networking configuration for AKS
object({
network_plugin : string
network_policy : string
service_cidr : string
docker_bridge_cidr : string
dns_service_ip : string
load_balancer_sku : string
})
{
"dns_service_ip": "10.100.0.10",
"docker_bridge_cidr": "172.17.0.1/16",
"load_balancer_sku": "Standard",
"network_plugin": "azure",
"network_policy": "calico",
"service_cidr": "10.100.0.0/16"
}
no
cluster_version The kubernetes version string "1.18.10" no
default_node_pool The default node pool configuration
object({
name : string
node_count : number
vm_size : string
os_disk_size_gb : number
type : string
enable_auto_scaling : bool
min_count : number
max_count : number
availability_zones : list(number)
})
{
"availability_zones": [
"1"
],
"enable_auto_scaling": true,
"max_count": 4,
"min_count": 1,
"name": "d4v3",
"node_count": 2,
"os_disk_size_gb": 30,
"type": "VirtualMachineScaleSets",
"vm_size": "Standard_D4_v3"
}
no
environment The environment name (dev, staging, prod, etc...) string "dev" no
kube_dashboard_enabled A flag to enable/disable kubernetes dashboard bool false no
name The cluster name string n/a yes
private_cluster_enabled A flag to enable/disable private clusters bool false no
subnet_id The subnet id where the AKS cluster should be attached to string n/a yes
tags Additional tags map(string) {} no

Outputs

Name Description
client_certificate n/a
client_key n/a
cluster_ca_certificate n/a
fqdn n/a
host n/a
id n/a
name n/a
node_resource_group_name n/a
private_ssh_key n/a
public_ssh_key n/a
resource_group_name n/a

Requirements

No requirements.

Providers

Name Version
azuread n/a
azurerm n/a
tls n/a

Inputs

Name Description Type Default Required
additional_node_pools Additional node pools configuration
map(object({
subnet_id : string
node_count : number
vm_size : string
os_type : string
os_disk_size_gb : number
auto_scaling_enabled : bool
min_count : number
max_count : number
availability_zones : list(number)
}))
{} no
az_location The azure location on which resources are deployed string "westeurope" no
azure_ad Azure AD integration config object({ rbac_enabled : bool, admins_object_ids : list(string) })
{
"admins_object_ids": [],
"rbac_enabled": false
}
no
client_id Service principal's client ID for AKS service principal configuration string n/a yes
client_secret Service principal's client secret for AKS service principal configuration string n/a yes
cluster_network Advanced networking configuration for AKS
object({
network_plugin : string
network_policy : string
service_cidr : string
docker_bridge_cidr : string
dns_service_ip : string
load_balancer_sku : string
})
{
"dns_service_ip": "10.100.0.10",
"docker_bridge_cidr": "172.17.0.1/16",
"load_balancer_sku": "Standard",
"network_plugin": "azure",
"network_policy": "calico",
"service_cidr": "10.100.0.0/16"
}
no
cluster_version The kubernetes version string "1.18.10" no
default_node_pool The default node pool configuration
object({
name : string
node_count : number
vm_size : string
os_disk_size_gb : number
type : string
enable_auto_scaling : bool
min_count : number
max_count : number
availability_zones : list(number)
})
{
"availability_zones": [
"1"
],
"enable_auto_scaling": true,
"max_count": 4,
"min_count": 1,
"name": "d4v3",
"node_count": 2,
"os_disk_size_gb": 30,
"type": "VirtualMachineScaleSets",
"vm_size": "Standard_D4_v3"
}
no
environment The environment name (dev, staging, prod, etc...) string "dev" no
kube_dashboard_enabled A flag to enable/disable kubernetes dashboard bool false no
name The cluster name string n/a yes
private_cluster_enabled A flag to enable/disable private clusters bool false no
subnet_id The subnet id where the AKS cluster should be attached to string n/a yes
tags Additional tags map(string) {} no

Outputs

Name Description
azure_ad_admin_group n/a
client_certificate n/a
client_key n/a
cluster_ca_certificate n/a
fqdn n/a
host n/a
id n/a
name n/a
node_resource_group_name n/a
private_ssh_key n/a
public_ssh_key n/a
resource_group_name n/a