Skip to content

Commit c3ed0dc

Browse files
committed
Welcome to Stack Simplify
1 parent 4d60e24 commit c3ed0dc

File tree

8 files changed

+140
-13
lines changed

8 files changed

+140
-13
lines changed

24-Azure-AKS-Terraform/24-03-Create-AKS-Cluster/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ kubectl get nodes
293293
## Step-13: Access Terraform created AKS Cluster
294294
```
295295
# Azure AKS Get Credentials with --admin
296-
az aks get-credentials --resource-group terraform-aks --name terraform-aks-prod --overwrite-existing
296+
az aks get-credentials --resource-group terraform-aks-dev --name terraform-aks-dev-cluster --overwrite-existing
297297
298298
# List Kubernetes Nodes
299299
kubectl get nodes

24-Azure-AKS-Terraform/24-03-Create-AKS-Cluster/terraform-manifests-aks/01-main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ terraform {
3131
resource_group_name = "terraform-storage-rg"
3232
storage_account_name = "terraformstatexlrwdrzs"
3333
container_name = "tfstatefiles"
34-
key = "terraform.tfstate"
34+
key = "dev.terraform.tfstate"
3535
}
3636
}
3737

24-Azure-AKS-Terraform/24-03-Create-AKS-Cluster/terraform-manifests-aks/04-aks-versions-datasource.tf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@ data "azurerm_kubernetes_service_versions" "current" {
55
include_preview = false
66
}
77

8+
9+
Original file line numberDiff line numberDiff line change
@@ -1 +1,7 @@
11
# Create Log Analytics Workspace
2+
resource "azurerm_log_analytics_workspace" "insights" {
3+
name = "logs-${random_pet.aksrandom.id}"
4+
location = azurerm_resource_group.aks_rg.location
5+
resource_group_name = azurerm_resource_group.aks_rg.name
6+
retention_in_days = 30
7+
}
Original file line numberDiff line numberDiff line change
@@ -1 +1,8 @@
11
# Create Azure AD Group in Active Directory for AKS Admins
2+
resource "azuread_group" "aks_administrators" {
3+
name = "${azurerm_resource_group.aks_rg.name}-cluster-administrators"
4+
description = "Azure AKS Kubernetes administrators for the ${azurerm_resource_group.aks_rg.name}-cluster."
5+
}
6+
7+
8+
Lines changed: 105 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,105 @@
1-
# Provision AKS Cluster
1+
# Provision AKS Cluster
2+
/*
3+
1. Add Basic Cluster Settings
4+
- Get Latest Kubernetes Version from datasource (kubernetes_version)
5+
- Add Node Resource Group (node_resource_group)
6+
2. Add Default Node Pool Settings
7+
- orchestrator_version (latest kubernetes version using datasource)
8+
- availability_zones
9+
- enable_auto_scaling
10+
- max_count, min_count
11+
- os_disk_size_gb
12+
- type
13+
- node_labels
14+
- tags
15+
3. Enable MSI
16+
4. Add On Profiles
17+
- Azure Policy
18+
- Azure Monitor (Reference Log Analytics Workspace id)
19+
5. RBAC & Azure AD Integration
20+
6. Admin Profiles
21+
- Windows Admin Profile
22+
- Linux Profile
23+
7. Network Profile
24+
8. Cluster Tags
25+
*/
26+
27+
resource "azurerm_kubernetes_cluster" "aks_cluster" {
28+
name = "${azurerm_resource_group.aks_rg.name}-cluster"
29+
location = azurerm_resource_group.aks_rg.location
30+
resource_group_name = azurerm_resource_group.aks_rg.name
31+
dns_prefix = "${azurerm_resource_group.aks_rg.name}-cluster"
32+
kubernetes_version = data.azurerm_kubernetes_service_versions.current.latest_version
33+
node_resource_group = "${azurerm_resource_group.aks_rg.name}-nrg"
34+
35+
default_node_pool {
36+
name = "systempool"
37+
vm_size = "Standard_DS2_v2"
38+
orchestrator_version = data.azurerm_kubernetes_service_versions.current.latest_version
39+
availability_zones = [1, 2, 3]
40+
enable_auto_scaling = true
41+
max_count = 3
42+
min_count = 1
43+
os_disk_size_gb = 30
44+
type = "VirtualMachineScaleSets"
45+
node_labels = {
46+
"nodepool-type" = "system"
47+
"environment" = "dev"
48+
"nodepoolos" = "linux"
49+
"app" = "system-apps"
50+
}
51+
tags = {
52+
"nodepool-type" = "system"
53+
"environment" = "dev"
54+
"nodepoolos" = "linux"
55+
"app" = "system-apps"
56+
}
57+
}
58+
59+
# Identity (System Assigned or Service Principal)
60+
identity {
61+
type = "SystemAssigned"
62+
}
63+
64+
# Add On Profiles
65+
addon_profile {
66+
azure_policy {enabled = true}
67+
oms_agent {
68+
enabled = true
69+
log_analytics_workspace_id = azurerm_log_analytics_workspace.insights.id
70+
}
71+
}
72+
73+
# RBAC and Azure AD Integration Block
74+
role_based_access_control {
75+
enabled = true
76+
azure_active_directory {
77+
managed = true
78+
admin_group_object_ids = [azuread_group.aks_administrators.id]
79+
}
80+
}
81+
82+
# Windows Profile
83+
windows_profile {
84+
admin_username = var.windows_admin_username
85+
admin_password = var.windows_admin_password
86+
}
87+
88+
# Linux Profile
89+
linux_profile {
90+
admin_username = "ubuntu"
91+
ssh_key {
92+
key_data = file(var.ssh_public_key)
93+
}
94+
}
95+
96+
# Network Profile
97+
network_profile {
98+
network_plugin = "azure"
99+
load_balancer_sku = "Standard"
100+
}
101+
102+
tags = {
103+
Environment = "dev"
104+
}
105+
}

24-Azure-AKS-Terraform/24-03-Create-AKS-Cluster/terraform-manifests-aks/08-outputs.tf

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,24 @@ output "resource_group_name" {
1616
value = azurerm_resource_group.aks_rg.name
1717
}
1818

19+
# Azure AKS Versions Datasource
20+
output "versions" {
21+
value = data.azurerm_kubernetes_service_versions.current.versions
22+
}
23+
24+
output "latest_version" {
25+
value = data.azurerm_kubernetes_service_versions.current.latest_version
26+
}
27+
28+
# Azure AD Group Object Id
29+
output "azure_ad_group_id" {
30+
value = azuread_group.aks_administrators.id
31+
}
32+
output "azure_ad_group_objectid" {
33+
value = azuread_group.aks_administrators.object_id
34+
}
35+
36+
1937
# Azure AKS Outputs
2038

2139
output "aks_cluster_id" {
@@ -29,13 +47,3 @@ output "aks_cluster_name" {
2947
output "aks_cluster_kubernetes_version" {
3048
value = azurerm_kubernetes_cluster.aks_cluster.kubernetes_version
3149
}
32-
33-
34-
# Azure AKS Versions Datasource
35-
output "versions" {
36-
value = data.azurerm_kubernetes_service_versions.current.versions
37-
}
38-
39-
output "latest_version" {
40-
value = data.azurerm_kubernetes_service_versions.current.latest_version
41-
}

0 commit comments

Comments
 (0)