agones.dev/agones@v1.53.0/install/terraform/modules/helm3/helm.tf (about)

     1  # Copyright 2020 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  # This is a Helm 3.x module, and is the module that should be actively used.
    17  #
    18  terraform {
    19    required_version = ">= 1.0.0"
    20    required_providers {
    21      helm = {
    22        version = "~> 2.3"
    23        source  = "hashicorp/helm"
    24      }
    25    }
    26  }
    27  
    28  provider "helm" {
    29    kubernetes {
    30      host                   = var.host
    31      token                  = var.token
    32      cluster_ca_certificate = var.cluster_ca_certificate
    33    }
    34  }
    35  
    36  resource "helm_release" "agones" {
    37    name             = "agones"
    38    repository       = "https://agones.dev/chart/stable"
    39    force_update     = var.force_update
    40    chart            = var.chart
    41    timeout          = 420
    42    version          = var.agones_version
    43    namespace        = "agones-system"
    44    create_namespace = true
    45  
    46    # Use terraform of the latest >=1.0.0 version
    47    values = [
    48      length(var.values_file) == 0 ? "" : file(var.values_file),
    49    ]
    50  
    51    dynamic "set" {
    52      for_each = tolist(var.set_values)
    53      iterator = set_item
    54  
    55      content {
    56        name  = set_item.value.name
    57        type  = set_item.value.type
    58        value = set_item.value.value
    59      }
    60    }
    61  
    62    dynamic "set_list" {
    63      for_each = tolist(var.set_list_values)
    64      iterator = set_item
    65  
    66      content {
    67        name  = set_item.value.name
    68        value = set_item.value.value
    69      }
    70    }
    71  
    72    // Due to a Terraform limitation sensitive values can't be iterated over.
    73    // See https://github.com/hashicorp/terraform/issues/29744 
    74    dynamic "set_sensitive" {
    75      for_each = tolist(nonsensitive(var.set_sensitive_values))
    76      iterator = set_item
    77  
    78      content {
    79        name  = set_item.value.name
    80        type  = set_item.value.type
    81        value = sensitive(set_item.value.value)
    82      }
    83    }
    84  
    85    set {
    86      name  = "agones.crds.CleanupOnDelete"
    87      value = var.crd_cleanup
    88    }
    89  
    90    set {
    91      name  = "agones.image.registry"
    92      value = var.image_registry
    93    }
    94  
    95    set {
    96      name  = "agones.image.controller.pullPolicy"
    97      value = var.pull_policy
    98    }
    99  
   100    set {
   101      name  = "agones.image.sdk.alwaysPull"
   102      value = var.always_pull_sidecar
   103    }
   104  
   105    set {
   106      name  = "agones.image.controller.pullSecret"
   107      value = var.image_pull_secret
   108    }
   109  
   110    set {
   111      name  = "agones.ping.http.serviceType"
   112      value = var.ping_service_type
   113    }
   114  
   115    set {
   116      name  = "agones.ping.udp.expose"
   117      value = var.udp_expose
   118    }
   119  
   120    set {
   121      name  = "agones.ping.udp.serviceType"
   122      value = var.ping_service_type
   123    }
   124  
   125    set {
   126      name  = "agones.controller.logLevel"
   127      value = var.log_level
   128    }
   129  
   130    set {
   131      name  = "agones.featureGates"
   132      value = var.feature_gates
   133    }
   134  
   135    set {
   136      name  = "gameservers.namespaces"
   137      value = "{${join(",", var.gameserver_namespaces)}}"
   138    }
   139  
   140    set {
   141      name  = "gameservers.minPort"
   142      value = var.gameserver_minPort
   143    }
   144  
   145    set {
   146      name  = "gameservers.maxPort"
   147      value = var.gameserver_maxPort
   148    }
   149  
   150    set {
   151      name  = "agones.allocator.service.loadBalancerIP"
   152      value = var.load_balancer_ip
   153    }
   154  }