186 lines
3.7 KiB
Plaintext
186 lines
3.7 KiB
Plaintext
terraform {
|
|
required_version = "> 0.8.0"
|
|
}
|
|
|
|
|
|
provider "kubernetes" {
|
|
config_path = "~/.kube/config"
|
|
}
|
|
|
|
|
|
resource "kubernetes_namespace" "screeps" {
|
|
metadata {
|
|
annotations = {
|
|
name = "screeps"
|
|
}
|
|
name = "screeps"
|
|
}
|
|
}
|
|
|
|
|
|
resource "kubernetes_persistent_volume_claim" "screeps-pvc" {
|
|
metadata {
|
|
namespace = "screeps"
|
|
name = "screeps-pvc"
|
|
}
|
|
spec {
|
|
access_modes = ["ReadWriteMany"]
|
|
storage_class_name = "nfs-storage-intelligent"
|
|
resources {
|
|
requests = {
|
|
storage = "1Gi"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
resource "kubernetes_deployment_v1" "screeps" {
|
|
metadata {
|
|
namespace = "screeps"
|
|
name = "screeps"
|
|
labels = {
|
|
app = "screepsserver"
|
|
}
|
|
}
|
|
|
|
spec {
|
|
replicas = 1
|
|
|
|
selector {
|
|
match_labels = {
|
|
app = "screepsserver"
|
|
}
|
|
}
|
|
|
|
template {
|
|
metadata {
|
|
labels = {
|
|
app = "screepsserver"
|
|
}
|
|
}
|
|
|
|
spec {
|
|
container {
|
|
image = "screepers/screeps-launcher"
|
|
name = "screeps-launcher"
|
|
port {
|
|
container_port = 21025
|
|
name = "screeps-port"
|
|
}
|
|
volume_mount {
|
|
mount_path = "/screeps"
|
|
name = "screeps-volume"
|
|
}
|
|
|
|
resources {
|
|
limits = {
|
|
cpu = "2"
|
|
memory = "2Gi"
|
|
}
|
|
requests = {
|
|
cpu = "250m"
|
|
memory = "500Mi"
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
volume {
|
|
name = "screeps-volume"
|
|
persistent_volume_claim {
|
|
claim_name = "screeps-pvc"
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
resource "kubernetes_service" "screeps_service" {
|
|
metadata {
|
|
name = "screeps"
|
|
namespace = "screeps"
|
|
}
|
|
spec {
|
|
selector = {
|
|
app = "screepsserver"
|
|
}
|
|
port {
|
|
port = 21025
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
variable "kubernetes" {
|
|
type = map(object({
|
|
service = string
|
|
#testingbool= bool
|
|
pvc_name = optional(string)
|
|
namespace = optional(string)
|
|
service_port = optional(number)
|
|
LoadBalancerbool = optional(string)
|
|
enabled = optional(bool, true)
|
|
proxy_cache = optional(bool, false)
|
|
extra-value = optional(string, "")
|
|
http2_bool = optional(bool, false)
|
|
proxy_pass_https = optional(bool, false)
|
|
authentication_required = optional(bool, false)
|
|
}))
|
|
|
|
}
|
|
|
|
resource "kubernetes_namespace" "automatic" {
|
|
for_each = { for key, value in var.kubernetes : key => value if value.enabled == true }
|
|
metadata {
|
|
annotations = {
|
|
name = coalesce(each.value.namespace, each.key)
|
|
}
|
|
name = coalesce(each.value.namespace, each.key)
|
|
}
|
|
}
|
|
|
|
|
|
resource "kubernetes_persistent_volume_claim" "automatic-pvc" {
|
|
for_each = { for key, value in var.kubernetes : key => value if value.pvc_name != null }
|
|
metadata {
|
|
namespace = coalesce(each.value.namespace, each.key)
|
|
name = coalesce(each.value.namespace, each.key)
|
|
}
|
|
spec {
|
|
access_modes = ["ReadWriteMany"]
|
|
storage_class_name = "nfs-storage-intelligent"
|
|
resources {
|
|
requests = {
|
|
storage = "1Gi"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
resource "kubernetes_service" "automatic_service" {
|
|
for_each = { for key, value in var.kubernetes : key => value if value.service_port != null }
|
|
metadata {
|
|
name = coalesce(each.value.namespace, each.key)
|
|
namespace = coalesce(each.value.namespace, each.key)
|
|
}
|
|
spec {
|
|
selector = {
|
|
app = "screepsserver"
|
|
}
|
|
port {
|
|
port = each.value.service_port
|
|
}
|
|
|
|
if(each.value.LoadBalancerbool == "enabled" ? [type = "LoadBalancer"] :[]
|
|
|
|
}
|
|
|
|
}
|
|
}
|