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