{"id":20768173,"url":"https://github.com/softwaremill/terraform-aks-bootstrap","last_synced_at":"2026-03-19T17:27:19.480Z","repository":{"id":79667259,"uuid":"495349874","full_name":"softwaremill/terraform-aks-bootstrap","owner":"softwaremill","description":null,"archived":false,"fork":false,"pushed_at":"2023-01-12T12:05:18.000Z","size":19,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":23,"default_branch":"main","last_synced_at":"2025-06-10T12:46:08.325Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/softwaremill.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-23T09:52:56.000Z","updated_at":"2023-05-13T17:55:09.000Z","dependencies_parsed_at":"2023-05-14T10:45:42.431Z","dependency_job_id":null,"html_url":"https://github.com/softwaremill/terraform-aks-bootstrap","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/softwaremill/terraform-aks-bootstrap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softwaremill%2Fterraform-aks-bootstrap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softwaremill%2Fterraform-aks-bootstrap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softwaremill%2Fterraform-aks-bootstrap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softwaremill%2Fterraform-aks-bootstrap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/softwaremill","download_url":"https://codeload.github.com/softwaremill/terraform-aks-bootstrap/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softwaremill%2Fterraform-aks-bootstrap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28950279,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T18:30:42.805Z","status":"ssl_error","status_checked_at":"2026-01-31T18:30:19.593Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-17T11:36:14.410Z","updated_at":"2026-01-31T19:02:06.011Z","avatar_url":"https://github.com/softwaremill.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Terraform AKS module\n\nThis module creates AKS cluster with network dependency. \n\n## Usage\n\nThe easiest way to use this repository is to create module like in example below:\n\n```hcl\nmodule \"aks\" {\n  source                         = \"../../\"\n  cluster_name                   = \"test-aks\"\n  prefix                         = \"test\"\n  resource_group_name            = \"test-group\"\n  address_space                  = \"10.0.0.0/16\"\n  subnet_prefixes                = [\"10.0.0.0/20\", \"10.0.16.0/20\", \"10.0.32.0/20\"]\n  subnet_names                   = [\"subnet1\", \"subnet2\", \"subnet3\"]\n  net_profile_service_cidr       = \"10.3.0.0/20\"\n  net_profile_docker_bridge_cidr = \"170.10.0.1/16\"\n  net_profile_dns_service_ip     = \"10.3.0.10\"\n  cluster_sku_tier               = \"Paid\"\n  registry_sku_tier              = \"Basic\"\n  agents_size                    = \"standard_d4s_v3\"\n  agents_count                   = 3\n  agents_max_count               = 4\n  agents_min_count               = 3\n  enable_auto_scaling            = false\n  kubernetes_version             = \"1.22.2\"\n  orchestrator_version           = \"1.22.2\"\n  use_cluster_admins_group       = true\n  use_for_each                   = true\n}\n```\n\nBecause of bug in API azure active directlry group for administrators have to be created manually \nPlease see below declaration and create it manually:\n\n```hcl\nresource \"azuread_group\" \"aks_cluster_admins\" {\n  display_name     = \"AKS-cluster-admins\"\n  owners           = [data.azuread_client_config.current.object_id]\n  security_enabled = true\n}\n```\n\nWe are using this resource with data object:\n\n```hcl\ndata \"azuread_group\" \"aks_cluster_admins\" {\n  count = var.use_cluster_admins_group ? 1 : 0\n  display_name = var.admins_group_name\n}\n```\n\u003c!-- BEGIN_TF_DOCS --\u003e\n## Requirements\n\nNo requirements.\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_azuread\"\u003e\u003c/a\u003e [azuread](#provider\\_azuread) | 2.31.0 |\n| \u003ca name=\"provider_azurerm\"\u003e\u003c/a\u003e [azurerm](#provider\\_azurerm) | 3.38.0 |\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_aks\"\u003e\u003c/a\u003e [aks](#module\\_aks) | Azure/aks/azurerm | 6.5.0 |\n| \u003ca name=\"module_network\"\u003e\u003c/a\u003e [network](#module\\_network) | Azure/network/azurerm | ~\u003e 5.0 |\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [azurerm_container_registry.acr](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/container_registry) | resource |\n| [azurerm_kubernetes_cluster_node_pool.node_pools](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/kubernetes_cluster_node_pool) | resource |\n| [azurerm_resource_group.cluster](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group) | resource |\n| [azurerm_role_assignment.aks_to_acr](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/role_assignment) | resource |\n| [azuread_client_config.current](https://registry.terraform.io/providers/hashicorp/azuread/latest/docs/data-sources/client_config) | data source |\n| [azuread_group.aks_cluster_admins](https://registry.terraform.io/providers/hashicorp/azuread/latest/docs/data-sources/group) | data source |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_address_space\"\u003e\u003c/a\u003e [address\\_space](#input\\_address\\_space) | The list of the address spaces that is used by the virtual network. | `string` | n/a | yes |\n| \u003ca name=\"input_admins_group_name\"\u003e\u003c/a\u003e [admins\\_group\\_name](#input\\_admins\\_group\\_name) | Group name for AKS admins | `string` | `\"AKS-cluster-admins\"` | no |\n| \u003ca name=\"input_agents_count\"\u003e\u003c/a\u003e [agents\\_count](#input\\_agents\\_count) | The number of Agents that should exist in the Agent Pool. Please set `agents_count` `null` while `enable_auto_scaling` is `true` to avoid possible `agents_count` changes. | `number` | n/a | yes |\n| \u003ca name=\"input_agents_labels\"\u003e\u003c/a\u003e [agents\\_labels](#input\\_agents\\_labels) | (Optional) A map of Kubernetes labels which should be applied to nodes in the Default Node Pool. Changing this forces a new resource to be created. | `map(string)` | \u003cpre\u003e{\u003cbr\u003e  \"nodepool\": \"defaultnodepool\"\u003cbr\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_agents_max_count\"\u003e\u003c/a\u003e [agents\\_max\\_count](#input\\_agents\\_max\\_count) | Maximum number of nodes in a pool | `number` | n/a | yes |\n| \u003ca name=\"input_agents_max_pods\"\u003e\u003c/a\u003e [agents\\_max\\_pods](#input\\_agents\\_max\\_pods) | The maximum number of pods that can run on each agent. Changing this forces a new resource to be created. | `number` | `100` | no |\n| \u003ca name=\"input_agents_min_count\"\u003e\u003c/a\u003e [agents\\_min\\_count](#input\\_agents\\_min\\_count) | Minimum number of nodes in a pool | `number` | n/a | yes |\n| \u003ca name=\"input_agents_size\"\u003e\u003c/a\u003e [agents\\_size](#input\\_agents\\_size) | The default virtual machine size for the Kubernetes agents | `string` | `\"Standard_D2s_v3\"` | no |\n| \u003ca name=\"input_agents_tags\"\u003e\u003c/a\u003e [agents\\_tags](#input\\_agents\\_tags) | (Optional) A mapping of tags to assign to the Node Pool. | `map(string)` | \u003cpre\u003e{\u003cbr\u003e  \"Agent\": \"defaultnodepoolagent\"\u003cbr\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_cluster_name\"\u003e\u003c/a\u003e [cluster\\_name](#input\\_cluster\\_name) | Cluster name | `string` | n/a | yes |\n| \u003ca name=\"input_cluster_sku_tier\"\u003e\u003c/a\u003e [cluster\\_sku\\_tier](#input\\_cluster\\_sku\\_tier) | Description: The SKU Tier that should be used for this Kubernetes Cluster. Possible values are Free and Paid | `string` | `\"Paid\"` | no |\n| \u003ca name=\"input_cluster_tags\"\u003e\u003c/a\u003e [cluster\\_tags](#input\\_cluster\\_tags) | (Optional) A mapping of tags to assign to the cluster resources. | `map(string)` | `{}` | no |\n| \u003ca name=\"input_enable_auto_scaling\"\u003e\u003c/a\u003e [enable\\_auto\\_scaling](#input\\_enable\\_auto\\_scaling) | Enable node pool autoscaling | `bool` | `false` | no |\n| \u003ca name=\"input_enable_host_encryption\"\u003e\u003c/a\u003e [enable\\_host\\_encryption](#input\\_enable\\_host\\_encryption) | Enable Host Encryption for default node pool. Encryption at host feature must be enabled on the subscription: https://docs.microsoft.com/azure/virtual-machines/linux/disks-enable-host-based-encryption-cli | `bool` | `false` | no |\n| \u003ca name=\"input_kubernetes_version\"\u003e\u003c/a\u003e [kubernetes\\_version](#input\\_kubernetes\\_version) | Specify which Kubernetes release to use. | `string` | `\"1.24.3\"` | no |\n| \u003ca name=\"input_net_profile_dns_service_ip\"\u003e\u003c/a\u003e [net\\_profile\\_dns\\_service\\_ip](#input\\_net\\_profile\\_dns\\_service\\_ip) | IP address within the Kubernetes service address range that will be used by cluster service discovery (kube-dns). Changing this forces a new resource to be created. | `string` | n/a | yes |\n| \u003ca name=\"input_net_profile_docker_bridge_cidr\"\u003e\u003c/a\u003e [net\\_profile\\_docker\\_bridge\\_cidr](#input\\_net\\_profile\\_docker\\_bridge\\_cidr) | IP address (in CIDR notation) used as the Docker bridge IP address on nodes. Changing this forces a new resource to be created. | `string` | n/a | yes |\n| \u003ca name=\"input_net_profile_service_cidr\"\u003e\u003c/a\u003e [net\\_profile\\_service\\_cidr](#input\\_net\\_profile\\_service\\_cidr) | The Network Range used by the Kubernetes service. Changing this forces a new resource to be created. | `string` | n/a | yes |\n| \u003ca name=\"input_network_tags\"\u003e\u003c/a\u003e [network\\_tags](#input\\_network\\_tags) | (Optional) A mapping of tags to assign to the network. | `map(string)` | `{}` | no |\n| \u003ca name=\"input_node_pools\"\u003e\u003c/a\u003e [node\\_pools](#input\\_node\\_pools) | Manages Node Pools within a Kubernetes Cluster | \u003cpre\u003emap(object({\u003cbr\u003e    vm_size             = string\u003cbr\u003e    enable_auto_scaling = bool\u003cbr\u003e    node_count          = optional(number)\u003cbr\u003e    min_count           = optional(number)\u003cbr\u003e    max_count           = optional(number)\u003cbr\u003e    node_labels         = optional(map(string))\u003cbr\u003e    node_tags           = optional(map(string))\u003cbr\u003e  }))\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_orchestrator_version\"\u003e\u003c/a\u003e [orchestrator\\_version](#input\\_orchestrator\\_version) | Specify which Kubernetes release to use for the orchestration layer. | `string` | `\"1.24.3\"` | no |\n| \u003ca name=\"input_os_disk_size_gb\"\u003e\u003c/a\u003e [os\\_disk\\_size\\_gb](#input\\_os\\_disk\\_size\\_gb) | Disk size of nodes in GBs. | `number` | `50` | no |\n| \u003ca name=\"input_prefix\"\u003e\u003c/a\u003e [prefix](#input\\_prefix) | The prefix for the resources created in the specified Azure Resource Group | `string` | n/a | yes |\n| \u003ca name=\"input_private_cluster_enabled\"\u003e\u003c/a\u003e [private\\_cluster\\_enabled](#input\\_private\\_cluster\\_enabled) | Create private cluster | `bool` | `false` | no |\n| \u003ca name=\"input_registry_name\"\u003e\u003c/a\u003e [registry\\_name](#input\\_registry\\_name) | Override default name for azure container registry | `string` | `null` | no |\n| \u003ca name=\"input_registry_sku_tier\"\u003e\u003c/a\u003e [registry\\_sku\\_tier](#input\\_registry\\_sku\\_tier) | Basic | `string` | n/a | yes |\n| \u003ca name=\"input_resource_group_name\"\u003e\u003c/a\u003e [resource\\_group\\_name](#input\\_resource\\_group\\_name) | Resource group name | `string` | n/a | yes |\n| \u003ca name=\"input_resource_group_tags\"\u003e\u003c/a\u003e [resource\\_group\\_tags](#input\\_resource\\_group\\_tags) | (Optional) A mapping of tags to assign to the resource group. | `map(string)` | `{}` | no |\n| \u003ca name=\"input_subnet_names\"\u003e\u003c/a\u003e [subnet\\_names](#input\\_subnet\\_names) | A list of public subnets inside the vNet. | `list(string)` | n/a | yes |\n| \u003ca name=\"input_subnet_prefixes\"\u003e\u003c/a\u003e [subnet\\_prefixes](#input\\_subnet\\_prefixes) | The address prefix to use for the subnet. | `list(string)` | n/a | yes |\n| \u003ca name=\"input_use_cluster_admins_group\"\u003e\u003c/a\u003e [use\\_cluster\\_admins\\_group](#input\\_use\\_cluster\\_admins\\_group) | Enable if group AKS-cluster-admins is created | `bool` | n/a | yes |\n| \u003ca name=\"input_use_for_each\"\u003e\u003c/a\u003e [use\\_for\\_each](#input\\_use\\_for\\_each) | Use for\\_each instead of count to create multiple resource instances. | `bool` | n/a | yes |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_admin_client_certificate\"\u003e\u003c/a\u003e [admin\\_client\\_certificate](#output\\_admin\\_client\\_certificate) | The `client_certificate` in the `azurerm_kubernetes_cluster`'s `kube_admin_config` block.  Base64 encoded public certificate used by clients to authenticate to the Kubernetes cluster. |\n| \u003ca name=\"output_admin_client_key\"\u003e\u003c/a\u003e [admin\\_client\\_key](#output\\_admin\\_client\\_key) | The `client_key` in the `azurerm_kubernetes_cluster`'s `kube_admin_config` block. Base64 encoded private key used by clients to authenticate to the Kubernetes cluster. |\n| \u003ca name=\"output_admin_cluster_ca_certificate\"\u003e\u003c/a\u003e [admin\\_cluster\\_ca\\_certificate](#output\\_admin\\_cluster\\_ca\\_certificate) | The `cluster_ca_certificate` in the `azurerm_kubernetes_cluster`'s `kube_admin_config` block. Base64 encoded public CA certificate used as the root of trust for the Kubernetes cluster. |\n| \u003ca name=\"output_admin_host\"\u003e\u003c/a\u003e [admin\\_host](#output\\_admin\\_host) | The `host` in the `azurerm_kubernetes_cluster`'s `kube_admin_config` block. The Kubernetes cluster server host. |\n| \u003ca name=\"output_admin_password\"\u003e\u003c/a\u003e [admin\\_password](#output\\_admin\\_password) | The `password` in the `azurerm_kubernetes_cluster`'s `kube_admin_config` block. A password or token used to authenticate to the Kubernetes cluster. |\n| \u003ca name=\"output_admin_username\"\u003e\u003c/a\u003e [admin\\_username](#output\\_admin\\_username) | The `username` in the `azurerm_kubernetes_cluster`'s `kube_admin_config` block. A username used to authenticate to the Kubernetes cluster. |\n| \u003ca name=\"output_client_certificate\"\u003e\u003c/a\u003e [client\\_certificate](#output\\_client\\_certificate) | The `client_certificate` in the `azurerm_kubernetes_cluster`'s `kube_config` block. Base64 encoded public certificate used by clients to authenticate to the Kubernetes cluster. |\n| \u003ca name=\"output_client_key\"\u003e\u003c/a\u003e [client\\_key](#output\\_client\\_key) | The `client_key` in the `azurerm_kubernetes_cluster`'s `kube_config` block. Base64 encoded private key used by clients to authenticate to the Kubernetes cluster. |\n| \u003ca name=\"output_cluster_ca_certificate\"\u003e\u003c/a\u003e [cluster\\_ca\\_certificate](#output\\_cluster\\_ca\\_certificate) | The `cluster_ca_certificate` in the `azurerm_kubernetes_cluster`'s `kube_config` block. Base64 encoded public CA certificate used as the root of trust for the Kubernetes cluster. |\n| \u003ca name=\"output_cluster_id\"\u003e\u003c/a\u003e [cluster\\_id](#output\\_cluster\\_id) | The azurerm\\_kubernetes\\_cluster's id. |\n| \u003ca name=\"output_cluster_name\"\u003e\u003c/a\u003e [cluster\\_name](#output\\_cluster\\_name) | The aurerm\\_kubernetes-cluster's name. |\n| \u003ca name=\"output_container_registry_name\"\u003e\u003c/a\u003e [container\\_registry\\_name](#output\\_container\\_registry\\_name) | n/a |\n| \u003ca name=\"output_host\"\u003e\u003c/a\u003e [host](#output\\_host) | The host in the azurerm\\_kubernetes\\_cluster's kube\\_config block. The Kubernetes cluster server host. |\n| \u003ca name=\"output_password\"\u003e\u003c/a\u003e [password](#output\\_password) | The `password` in the `azurerm_kubernetes_cluster`'s `kube_config` block. A password or token used to authenticate to the Kubernetes cluster. |\n| \u003ca name=\"output_registry_name\"\u003e\u003c/a\u003e [registry\\_name](#output\\_registry\\_name) | n/a |\n| \u003ca name=\"output_resource_group_name\"\u003e\u003c/a\u003e [resource\\_group\\_name](#output\\_resource\\_group\\_name) | n/a |\n| \u003ca name=\"output_username\"\u003e\u003c/a\u003e [username](#output\\_username) | The `username` in the `azurerm_kubernetes_cluster`'s `kube_config` block. A username used to authenticate to the Kubernetes cluster. |\n\u003c!-- END_TF_DOCS --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftwaremill%2Fterraform-aks-bootstrap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoftwaremill%2Fterraform-aks-bootstrap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftwaremill%2Fterraform-aks-bootstrap/lists"}