diff --git a/.terraform.lock.hcl b/.terraform.lock.hcl
new file mode 100644
index 0000000..1f534b2
--- /dev/null
+++ b/.terraform.lock.hcl
@@ -0,0 +1,102 @@
+# This file is maintained automatically by "terraform init".
+# Manual edits may be lost in future updates.
+
+provider "registry.terraform.io/azure/azapi" {
+ version = "1.11.0"
+ constraints = "~> 1.5"
+ hashes = [
+ "h1:PQmjPwDURyBD1CZDl/3Nv9oK3AXD6JUbRLITqRFdMP4=",
+ "zh:240ba0f3d87f8faf3171e1dd0ec74bffc868bde84db7fb2c89913c787b11ef07",
+ "zh:422cfbe039f6041525d55aa0641dfed014d970b516d8de058a1869736682b9d3",
+ "zh:4be67c64d73eb3c31706d575436179cc6f6b3dece00709e5721b60512031b2f2",
+ "zh:744b4f68b229c11b3df1198e4ebb4646fa44c14ac5f271337da03917d9fad433",
+ "zh:86927d43f75a8163c2c947fae8d48a63219865e50df437372ee66378826172a1",
+ "zh:a44523fad3a806b2ccee2e81ef206ddaab365eacdec213ec2cce2ddd7d4ed731",
+ "zh:b15c9edac6df2c250ff04f0edae18a9656d19c79c475ef68be5f5c2631059d7e",
+ "zh:d1365f7fe280c11cc7613b4b47798c1f96271c4bb2eed951d6a994790d0b62d4",
+ "zh:e7fea9c180f1f2be6e96152a3b4e0beada3aa585c186f1f3de6be6c74ee858fe",
+ "zh:e8278579b6a18e04a538a1163e257a9be65a3cc35e13a57ea868f179ca03ec28",
+ "zh:fc8f4eeefb44877965eae59e152d82e347261936d47d4d3c448cde5181164ae3",
+ "zh:fd76a6fb2819a1ce56454132c775b721c5028e4f24dd264f2897f345cd4b12ee",
+ ]
+}
+
+provider "registry.terraform.io/hashicorp/azuread" {
+ version = "2.47.0"
+ constraints = "2.47.0"
+ hashes = [
+ "h1:KB9BNRNStbdsfdRmVXUwXtN77qgX5VjBy2UALcqp218=",
+ "zh:1372d81eb24ef3b4b00ea350fe87219f22da51691b8e42ce91d662f6c2a8af5e",
+ "zh:1c3e89cf19118fc07d7b04257251fc9897e722c16e0a0df7b07fcd261f8c12e7",
+ "zh:1e654a74d171d6ff8f9f6f67e3ff1421d4c5e56a18607703626bf12cd23ba001",
+ "zh:35227fad617a0509c64ab5759a8b703b10d244877f1aa5416bfbcc100c96996f",
+ "zh:357f553f0d78d46a96c7b2ed06d25ee0fc60fc5be19812ccb5d969fa47d62e17",
+ "zh:58faa2940065137e3e87d02eba59ab5cd7137d7a18caf225e660d1788f274569",
+ "zh:7308eda0339620fa24f47cedd22221fc2c02cab9d5be1710c09a783aea84eb3a",
+ "zh:863eabf7f908a8263e28d8aa2ad1381affd6bb5c67755216781f674ef214100e",
+ "zh:8b95b595a7c14ed7b56194d03cdec253527e7a146c1c58961be09e6b5c50baee",
+ "zh:afbca6b4fac9a0a488bc22ff9e51a8f14e986137d25275068fd932f379a51d57",
+ "zh:c6aadec4c81a44c3ffc22c2d90ffc6706bf5a9a903a395d896477516f4be6cbb",
+ "zh:e54a59de7d4ef0f3a18f91fed0b54a2bce18257ae2ee1df8a88226e1023c5811",
+ ]
+}
+
+provider "registry.terraform.io/hashicorp/azurerm" {
+ version = "3.85.0"
+ constraints = "3.85.0"
+ hashes = [
+ "h1:UW2HuNrkVexKwNYbkI1Xr/B3ip/cCgizIjfKN+ulpPs=",
+ "zh:1ae6c0d82b5801641a17094b84f2ec1dcac699c1c4e40669a267511061414a34",
+ "zh:259e9386a43aabecb1205b0ceea2d205223637c09b66d806a89fed04f3343253",
+ "zh:4d940f9c14fece4f1d9219ac9d104202e5561bddc5024e5ac97f3f93eea20110",
+ "zh:530bca70b950e835f63c796c694106d701e5de0e2cf096fa35f08afd5c254594",
+ "zh:69e6b7f44ffbe0383b6485bb9db26781eb7869503889303e202967900a6b35ed",
+ "zh:8528e7d054254daae06eeb2bf343d566d3908a024fdfb5e515fbdbe0669c15eb",
+ "zh:98d66edfa89ed9a431ca37be384e5dfe7fa20bdc732c6e7d30f3f922ca3b29dc",
+ "zh:b8d37cedeffeb6bd37d4ec79fc2da19ed6b57d1ac08d835395dfa4fb3cfdf447",
+ "zh:bbc94e89cd6c0d59c2e5ed0bce852cac8435b6dc2e979691ee84af4c8b2c9bb8",
+ "zh:ceb4c624e8bb56bbcfe53e3c4ed4b4d27c3a5b62e5f4890b32c98b60b83c7827",
+ "zh:f08c5bf19eb25f668633964c6bfa823aa0ead785824082533c4a6cff3959e3d0",
+ "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c",
+ ]
+}
+
+provider "registry.terraform.io/hashicorp/helm" {
+ version = "2.12.1"
+ constraints = "~> 2.12.1"
+ hashes = [
+ "h1:sgYI7lwGqJqPopY3NGmhb1eQ0YbH8PIXaAZAmnJrAvw=",
+ "zh:1d623fb1662703f2feb7860e3c795d849c77640eecbc5a776784d08807b15004",
+ "zh:253a5bc62ba2c4314875139e3fbd2feaad5ef6b0fb420302a474ab49e8e51a38",
+ "zh:282358f4ad4f20d0ccaab670b8645228bfad1c03ac0d0df5889f0aea8aeac01a",
+ "zh:4fd06af3091a382b3f0d8f0a60880f59640d2b6d9d6a31f9a873c6f1bde1ec50",
+ "zh:6816976b1830f5629ae279569175e88b497abbbac30ee809948a1f923c67a80d",
+ "zh:7d82c4150cdbf48cfeec867be94c7b9bd7682474d4df0ebb7e24e148f964844f",
+ "zh:83f062049eea2513118a4c6054fb06c8600bac96196f25aed2cc21898ec86e93",
+ "zh:a79eec0cf4c08fca79e44033ec6e470f25ff23c3e2c7f9bc707ed7771c1072c0",
+ "zh:b2b2d904b2821a6e579910320605bc478bbef063579a23fbfdd6fcb5871b81f8",
+ "zh:e91177ca06a15487fc570cb81ecef6359aa399459ea2aa7c4f7367ba86f6fcad",
+ "zh:e976bcb82996fc4968f8382bbcb6673efb1f586bf92074058a232028d97825b1",
+ "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c",
+ ]
+}
+
+provider "registry.terraform.io/hashicorp/random" {
+ version = "3.6.0"
+ constraints = "~> 3.0"
+ hashes = [
+ "h1:R5Ucn26riKIEijcsiOMBR3uOAjuOMfI1x7XvH4P6B1w=",
+ "zh:03360ed3ecd31e8c5dac9c95fe0858be50f3e9a0d0c654b5e504109c2159287d",
+ "zh:1c67ac51254ba2a2bb53a25e8ae7e4d076103483f55f39b426ec55e47d1fe211",
+ "zh:24a17bba7f6d679538ff51b3a2f378cedadede97af8a1db7dad4fd8d6d50f829",
+ "zh:30ffb297ffd1633175d6545d37c2217e2cef9545a6e03946e514c59c0859b77d",
+ "zh:454ce4b3dbc73e6775f2f6605d45cee6e16c3872a2e66a2c97993d6e5cbd7055",
+ "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3",
+ "zh:91df0a9fab329aff2ff4cf26797592eb7a3a90b4a0c04d64ce186654e0cc6e17",
+ "zh:aa57384b85622a9f7bfb5d4512ca88e61f22a9cea9f30febaa4c98c68ff0dc21",
+ "zh:c4a3e329ba786ffb6f2b694e1fd41d413a7010f3a53c20b432325a94fa71e839",
+ "zh:e2699bc9116447f96c53d55f2a00570f982e6f9935038c3810603572693712d0",
+ "zh:e747c0fd5d7684e5bfad8aa0ca441903f15ae7a98a737ff6aca24ba223207e2c",
+ "zh:f1ca75f417ce490368f047b63ec09fd003711ae48487fba90b4aba2ccf71920e",
+ ]
+}
diff --git a/README.md b/README.md
index 9804e69..9cb0e32 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,92 @@ This Terraform module is designed to set up an Azure Kubernetes Service (AKS) cl
### Terraform Architecture
```mermaid
%%tfmermaid
+%%{init:{"theme":"default","themeVariables":{"lineColor":"#6f7682","textColor":"#6f7682"}}}%%
+flowchart LR
+classDef r fill:#5c4ee5,stroke:#444,color:#fff
+classDef v fill:#eeedfc,stroke:#eeedfc,color:#5c4ee5
+classDef ms fill:none,stroke:#dce0e6,stroke-width:2px
+classDef vs fill:none,stroke:#dce0e6,stroke-width:4px,stroke-dasharray:10
+classDef ps fill:none,stroke:none
+classDef cs fill:#f7f8fa,stroke:#dce0e6,stroke-width:2px
+n0["azapi_resource.ssh_public_key"]:::r
+n1["azapi_resource_action.
ssh_public_key_gen"]:::r
+subgraph "n2"["Key Vault"]
+n3["azurerm_key_vault.this"]:::r
+n4["azurerm_key_vault_secret.
admin_ssh_private_key"]:::r
+end
+class n2 cs
+subgraph "n5"["Container"]
+n6["azurerm_kubernetes_cluster.
this"]:::r
+end
+class n5 cs
+subgraph "n7"["Base"]
+n8["azurerm_resource_group.this"]:::r
+n9{{"data.
azurerm_client_config.
current"}}:::r
+end
+class n7 cs
+subgraph "na"["Authorization"]
+nb["azurerm_role_assignment.
aks_nodes_rg_roles"]:::r
+nc["azurerm_role_assignment.
aks_rg_roles"]:::r
+nd["azurerm_role_assignment.
kv_allow_current_sp"]:::r
+ne["azurerm_role_assignment.
kv_allow_platform_engineers"]:::r
+end
+class na cs
+subgraph "nf"["Network"]
+ng["azurerm_subnet.cluster"]:::r
+nh["azurerm_virtual_network.this"]:::r
+end
+class nf cs
+subgraph "ni"["Groups"]
+nj{{"data.
azuread_group.
platform_engineers"}}:::r
+end
+class ni cs
+subgraph "nk"["Compute"]
+nl{{"data.
azurerm_ssh_public_key.
admin_ssh_public_key"}}:::r
+end
+class nk cs
+nm["random_string.
azurerm_key_vault_name"]:::r
+subgraph "nn"["Input Variables"]
+no(["var.environment"]):::v
+np(["var.location"]):::v
+nq(["var.name"]):::v
+nr(["var.resource_group_name"]):::v
+end
+class nn vs
+ns(["local.common_tags"]):::v
+nt(["local.aks_nodes_rg_roles"]):::v
+nu(["local.aks_rg_roles"]):::v
+subgraph "nv"["Output Values"]
+nw(["output.kubernetes_cluster"]):::v
+nx(["output.resource_group"]):::v
+end
+class nv vs
+n8-->n0
+n0-->n1
+n8-->n3
+n9-->n3
+nm-->n3
+n1-->n4
+nd-->n4
+ng-->n6
+nl-->n6
+ns-->n8
+np--->n8
+nr--->n8
+n6-->nb
+nt-->nb
+n6-->nc
+nu-->nc
+n3-->nd
+n3-->ne
+nj-->ne
+nh-->ng
+n8-->nh
+n1-->nl
+no--->ns
+nq--->ns
+n6--->nw
+n8--->nx
```
## Features