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  }