Skip to content

Commit 555cfc6

Browse files
committed
Add network contributor role (for load balancers)
1 parent 46ddd71 commit 555cfc6

File tree

7 files changed

+50
-53
lines changed

7 files changed

+50
-53
lines changed

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -209,12 +209,12 @@ Resources created by this bundle that can be connected to other bundles.
209209

210210
- **`kubernetes_cluster`** *(object)*: Kubernetes cluster authentication and cloud-specific configuration. Cannot contain additional properties.
211211
- **`data`** *(object)*
212-
- **`authentication`** *(object)*
213-
- **`cluster`** *(object)*
214-
- **`certificate-authority-data`** *(string)*
215-
- **`server`** *(string)*
216-
- **`user`** *(object)*
217-
- **`token`** *(string)*
212+
- **`authentication`** *(object)*: Authentication details required to access the Kubernetes cluster.
213+
- **`cluster`** *(object)*: Information about the Kubernetes cluster you wish to connect to.
214+
- **`certificate-authority-data`** *(string)*: Base64-encoded certificate authority data used to verify the Kubernetes API server's certificate.
215+
- **`server`** *(string)*: The URL or endpoint of the Kubernetes API server.
216+
- **`user`** *(object)*: User credentials for authenticating with the Kubernetes cluster.
217+
- **`token`** *(string)*: Bearer token used for authenticating the user with the Kubernetes API server.
218218
- **`infrastructure`** *(object)*: Cloud specific Kubernetes configuration data.
219219
- **One of**
220220
- AWS EKS infrastructure config*object*: . Cannot contain additional properties.

core-services/_providers.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ terraform {
77
}
88
azurerm = {
99
source = "hashicorp/azurerm"
10-
version = "~> 3.0"
10+
version = "~> 4.0"
1111
}
1212
azuread = {
1313
source = "hashicorp/azuread"
14-
version = "~> 2.0"
14+
version = "~> 3.0"
1515
}
1616
kubernetes = {
1717
source = "hashicorp/kubernetes"

custom-resources/_providers.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ terraform {
33
required_providers {
44
azurerm = {
55
source = "hashicorp/azurerm"
6-
version = "~> 3.0"
6+
version = "~> 4.0"
77
}
88
azuread = {
99
source = "hashicorp/azuread"
10-
version = "~> 2.0"
10+
version = "~> 3.0"
1111
}
1212
kubernetes = {
1313
source = "hashicorp/kubernetes"

massdriver.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ schema: draft-07
22
name: azure-aks-cluster
33
description: "Azure Kubernetes Service (AKS) is a fully managed container orchestration service. AKS offers serverless Kubernetes, an integrated continuous integration and continuous delivery (CI/CD) experience, and enterprise-grade security and governance."
44
source_url: github.com/massdriver-cloud/azure-aks-cluster
5-
access: public
65
type: infrastructure
76

87
NodeGroup: &node_group

src/_providers.tf

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,10 @@ terraform {
33
required_providers {
44
azurerm = {
55
source = "hashicorp/azurerm"
6-
version = "~> 3.0"
6+
version = "~> 4.0"
77
}
88
azuread = {
99
source = "hashicorp/azuread"
10-
version = "~> 2.0"
11-
}
12-
http = {
13-
source = "hashicorp/http"
1410
version = "~> 3.0"
1511
}
1612
}

src/feature.tf

Lines changed: 0 additions & 20 deletions
This file was deleted.

src/main.tf

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ resource "random_string" "temp_node_group" {
88
lower = true
99
upper = false
1010
special = false
11-
number = false
11+
numeric = false
1212
}
1313
resource "azurerm_resource_group" "main" {
1414
name = var.md_metadata.name_prefix
@@ -30,22 +30,31 @@ resource "azurerm_kubernetes_cluster" "main" {
3030
resource_group_name = azurerm_resource_group.main.name
3131
dns_prefix = "${var.md_metadata.name_prefix}-dns"
3232
node_resource_group = local.node_rg_name
33-
automatic_channel_upgrade = "stable"
33+
automatic_upgrade_channel = "stable"
3434
azure_policy_enabled = true
3535
role_based_access_control_enabled = true
3636
workload_identity_enabled = true
3737
oidc_issuer_enabled = true
3838
tags = var.md_metadata.default_tags
3939

4040
azure_active_directory_role_based_access_control {
41-
managed = true
42-
azure_rbac_enabled = true
41+
azure_rbac_enabled = true
42+
admin_group_object_ids = []
43+
}
44+
45+
dynamic "monitor_metrics" {
46+
for_each = var.cluster.enable_log_analytics ? toset(["enabled"]) : toset([])
47+
content {
48+
annotations_allowed = null
49+
labels_allowed = null
50+
}
4351
}
4452

4553
dynamic "oms_agent" {
4654
for_each = var.cluster.enable_log_analytics ? toset(["enabled"]) : toset([])
4755
content {
48-
log_analytics_workspace_id = azurerm_log_analytics_workspace.main[0].id
56+
log_analytics_workspace_id = azurerm_log_analytics_workspace.main[0].id
57+
msi_auth_for_monitoring_enabled = true
4958
}
5059
}
5160

@@ -56,8 +65,11 @@ resource "azurerm_kubernetes_cluster" "main" {
5665
max_count = var.node_groups.default_node_group.max_size
5766
vnet_subnet_id = var.vnet.data.infrastructure.default_subnet_id
5867
temporary_name_for_rotation = "${random_string.temp_node_group.result}temp"
59-
enable_auto_scaling = true
60-
tags = var.md_metadata.default_tags
68+
auto_scaling_enabled = true
69+
upgrade_settings {
70+
max_surge = "10%"
71+
}
72+
tags = var.md_metadata.default_tags
6173
}
6274

6375
identity {
@@ -68,15 +80,15 @@ resource "azurerm_kubernetes_cluster" "main" {
6880
the customer might set as their VNet CIDR. These are also the defaults for
6981
these parameters when deploying AKS in the Azure Portal. */
7082
network_profile {
71-
network_plugin = "azure"
72-
network_policy = "azure"
73-
dns_service_ip = "172.20.0.10"
74-
service_cidr = "172.20.0.0/16"
83+
network_plugin = "azure"
84+
network_policy = "azure"
85+
dns_service_ip = "172.20.0.10"
86+
service_cidr = "172.20.0.0/16"
87+
load_balancer_sku = "standard"
88+
outbound_type = "loadBalancer"
7589
}
7690

77-
depends_on = [
78-
data.http.feature
79-
]
91+
8092
}
8193

8294
resource "azurerm_kubernetes_cluster_node_pool" "main" {
@@ -85,12 +97,15 @@ resource "azurerm_kubernetes_cluster_node_pool" "main" {
8597
kubernetes_cluster_id = azurerm_kubernetes_cluster.main.id
8698
vm_size = each.value.node_size
8799
vnet_subnet_id = var.vnet.data.infrastructure.default_subnet_id
88-
enable_auto_scaling = true
100+
auto_scaling_enabled = true
89101
mode = "User"
90102
max_count = each.value.max_size
91103
min_count = each.value.min_size
92-
node_taints = var.node_groups.additional_node_groups.0.compute_type == "GPU" ? ["sku=gpu:NoSchedule"] : []
93-
tags = var.md_metadata.default_tags
104+
node_taints = each.value.compute_type == "GPU" ? ["sku=gpu:NoSchedule"] : []
105+
upgrade_settings {
106+
max_surge = "10%"
107+
}
108+
tags = var.md_metadata.default_tags
94109
}
95110

96111
data "azurerm_client_config" "main" {
@@ -101,3 +116,10 @@ resource "azurerm_role_assignment" "aks_read_acr" {
101116
role_definition_name = "AcrPull"
102117
principal_id = azurerm_kubernetes_cluster.main.kubelet_identity[0].object_id
103118
}
119+
120+
# Network Contributor role for AKS cluster identity to manage load balancers and network resources
121+
resource "azurerm_role_assignment" "aks_network_contributor" {
122+
scope = var.vnet.data.infrastructure.id
123+
role_definition_name = "Network Contributor"
124+
principal_id = azurerm_kubernetes_cluster.main.identity[0].principal_id
125+
}

0 commit comments

Comments
 (0)