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 }