agones.dev/agones@v1.53.0/install/terraform/modules/aks/aks.tf (about) 1 # Copyright 2019 Google LLC All Rights Reserved. 2 # 3 # Licensed under the Apache License, Version 2.0 (the "License"); 4 # you may not use this file except in compliance with the License. 5 # You may obtain a copy of the License at 6 # 7 # http://www.apache.org/licenses/LICENSE-2.0 8 # 9 # Unless required by applicable law or agreed to in writing, software 10 # distributed under the License is distributed on an "AS IS" BASIS, 11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 # See the License for the specific language governing permissions and 13 # limitations under the License. 14 15 16 terraform { 17 required_version = ">= 1.0.0" 18 required_providers { 19 azurerm = { 20 source = "hashicorp/azurerm" 21 version = "~> 2.66" 22 } 23 } 24 } 25 26 provider "azurerm" { 27 features {} 28 } 29 30 resource "azurerm_resource_group" "agones" { 31 location = var.resource_group_location 32 name = var.resource_group_name 33 } 34 35 resource "azurerm_kubernetes_cluster" "agones" { 36 name = var.cluster_name 37 location = azurerm_resource_group.agones.location 38 resource_group_name = azurerm_resource_group.agones.name 39 # don't change dns_prefix as node pool Network Security Group name uses a hash of dns_prefix on on its name 40 dns_prefix = "agones" 41 42 kubernetes_version = var.kubernetes_version 43 44 default_node_pool { 45 name = "default" 46 node_count = var.node_count 47 vm_size = var.machine_type 48 os_disk_size_gb = var.disk_size 49 enable_auto_scaling = false 50 enable_node_public_ip = var.enable_node_public_ip 51 } 52 53 service_principal { 54 client_id = var.client_id 55 client_secret = var.client_secret 56 } 57 tags = { 58 Environment = "Production" 59 } 60 } 61 62 resource "azurerm_kubernetes_cluster_node_pool" "system" { 63 name = "system" 64 kubernetes_cluster_id = azurerm_kubernetes_cluster.agones.id 65 vm_size = var.machine_type 66 node_count = 1 67 os_disk_size_gb = var.disk_size 68 enable_auto_scaling = false 69 node_taints = [ 70 "agones.dev/agones-system=true:NoExecute" 71 ] 72 node_labels = { 73 "agones.dev/agones-system" : "true" 74 } 75 } 76 77 resource "azurerm_kubernetes_cluster_node_pool" "metrics" { 78 name = "metrics" 79 kubernetes_cluster_id = azurerm_kubernetes_cluster.agones.id 80 vm_size = var.machine_type 81 node_count = 1 82 os_disk_size_gb = var.disk_size 83 enable_auto_scaling = false 84 node_taints = [ 85 "agones.dev/agones-metrics=true:NoExecute" 86 ] 87 node_labels = { 88 "agones.dev/agones-metrics" : "true" 89 } 90 } 91 92 resource "azurerm_network_security_rule" "gameserver" { 93 name = "gameserver" 94 priority = 100 95 direction = "Inbound" 96 access = "Allow" 97 protocol = "Udp" 98 source_port_range = "*" 99 destination_port_range = "7000-8000" 100 source_address_prefix = "*" 101 destination_address_prefix = "*" 102 resource_group_name = azurerm_kubernetes_cluster.agones.node_resource_group 103 # We don't use azurerm_resources datasource to get the security group as it's not reliable: random empty resource array 104 # 55978144 are the first 8 characters of the fnv64a hash's UInt32 of master node's dns prefix ("agones") 105 network_security_group_name = "aks-agentpool-55978144-nsg" 106 107 depends_on = [ 108 azurerm_kubernetes_cluster.agones, 109 azurerm_kubernetes_cluster_node_pool.metrics, 110 azurerm_kubernetes_cluster_node_pool.system 111 ] 112 113 # Ignore resource_group_name changes because of random case returned by AKS Api (MC_* or mc_*) 114 lifecycle { 115 ignore_changes = [ 116 resource_group_name 117 ] 118 } 119 }