diff --git a/scaletest/terraform/infra/gcp_cluster.tf b/scaletest/terraform/infra/gcp_cluster.tf index 577894790d7ff..c37132c38071b 100644 --- a/scaletest/terraform/infra/gcp_cluster.tf +++ b/scaletest/terraform/infra/gcp_cluster.tf @@ -41,16 +41,25 @@ resource "google_container_cluster" "primary" { workload_identity_config { workload_pool = "${data.google_project.project.project_id}.svc.id.goog" } + + + lifecycle { + ignore_changes = [ + maintenance_policy, + release_channel, + remove_default_node_pool + ] + } } resource "google_container_node_pool" "coder" { - name = "${var.name}-coder" - location = var.zone - project = var.project_id - cluster = google_container_cluster.primary.name - node_count = var.state == "stopped" ? 0 : var.nodepool_size_coder - management { - auto_upgrade = false + name = "${var.name}-coder" + location = var.zone + project = var.project_id + cluster = google_container_cluster.primary.name + autoscaling { + min_node_count = 1 + max_node_count = var.nodepool_size_coder } node_config { oauth_scopes = [ @@ -74,14 +83,20 @@ resource "google_container_node_pool" "coder" { disable-legacy-endpoints = "true" } } + lifecycle { + ignore_changes = [management[0].auto_repair, management[0].auto_upgrade, timeouts] + } } resource "google_container_node_pool" "workspaces" { - name = "${var.name}-workspaces" - location = var.zone - project = var.project_id - cluster = google_container_cluster.primary.name - node_count = var.state == "stopped" ? 0 : var.nodepool_size_workspaces + name = "${var.name}-workspaces" + location = var.zone + project = var.project_id + cluster = google_container_cluster.primary.name + autoscaling { + min_node_count = 0 + total_max_node_count = var.nodepool_size_workspaces + } management { auto_upgrade = false } @@ -107,6 +122,9 @@ resource "google_container_node_pool" "workspaces" { disable-legacy-endpoints = "true" } } + lifecycle { + ignore_changes = [management[0].auto_repair, management[0].auto_upgrade, timeouts] + } } resource "google_container_node_pool" "misc" { @@ -140,6 +158,9 @@ resource "google_container_node_pool" "misc" { disable-legacy-endpoints = "true" } } + lifecycle { + ignore_changes = [management[0].auto_repair, management[0].auto_upgrade, timeouts] + } } resource "null_resource" "cluster_kubeconfig" { diff --git a/scaletest/terraform/infra/gcp_db.tf b/scaletest/terraform/infra/gcp_db.tf index 1a02324ce071f..4d13b262c615f 100644 --- a/scaletest/terraform/infra/gcp_db.tf +++ b/scaletest/terraform/infra/gcp_db.tf @@ -32,6 +32,10 @@ resource "google_sql_database_instance" "db" { record_client_address = false } } + + lifecycle { + ignore_changes = [deletion_protection, timeouts] + } } resource "google_sql_database" "coder" { @@ -40,6 +44,9 @@ resource "google_sql_database" "coder" { name = "${var.name}-coder" # required for postgres, otherwise db fails to delete deletion_policy = "ABANDON" + lifecycle { + ignore_changes = [deletion_policy] + } } resource "random_password" "coder-postgres-password" { @@ -58,6 +65,9 @@ resource "google_sql_user" "coder" { password = random_password.coder-postgres-password.result # required for postgres, otherwise user fails to delete deletion_policy = "ABANDON" + lifecycle { + ignore_changes = [deletion_policy, password] + } } resource "google_sql_user" "prometheus" { @@ -68,6 +78,9 @@ resource "google_sql_user" "prometheus" { password = random_password.prometheus-postgres-password.result # required for postgres, otherwise user fails to delete deletion_policy = "ABANDON" + lifecycle { + ignore_changes = [deletion_policy, password] + } } locals { diff --git a/scaletest/terraform/infra/gcp_vpc.tf b/scaletest/terraform/infra/gcp_vpc.tf index eb965354c3917..b125c60cfd25a 100644 --- a/scaletest/terraform/infra/gcp_vpc.tf +++ b/scaletest/terraform/infra/gcp_vpc.tf @@ -12,7 +12,7 @@ resource "google_compute_subnetwork" "subnet" { project = var.project_id region = var.region network = google_compute_network.vpc.name - ip_cidr_range = "10.200.0.0/24" + ip_cidr_range = var.subnet_cidr } resource "google_compute_global_address" "sql_peering" { diff --git a/scaletest/terraform/infra/vars.tf b/scaletest/terraform/infra/vars.tf index e26e5fa54f7df..d9f5040918ba5 100644 --- a/scaletest/terraform/infra/vars.tf +++ b/scaletest/terraform/infra/vars.tf @@ -25,6 +25,11 @@ variable "zone" { default = "us-east1-c" } +variable "subnet_cidr" { + description = "CIDR range for the subnet." + default = "10.200.0.0/24" +} + variable "k8s_version" { description = "Kubernetes version to provision." default = "1.24" diff --git a/scaletest/terraform/k8s/coder.tf b/scaletest/terraform/k8s/coder.tf index f6b9ae7d16a09..3c3670a8c20a9 100644 --- a/scaletest/terraform/k8s/coder.tf +++ b/scaletest/terraform/k8s/coder.tf @@ -1,42 +1,80 @@ data "google_client_config" "default" {} locals { - coder_helm_repo = "https://helm.coder.com/v2" - coder_helm_chart = "coder" - coder_release_name = var.name - coder_namespace = "coder-${var.name}" - coder_admin_email = "admin@coder.com" - coder_admin_user = "coder" - coder_access_url = "http://${var.coder_address}" + coder_url = var.coder_access_url == "" ? "http://${var.coder_address}" : var.coder_access_url + coder_admin_email = "admin@coder.com" + coder_admin_user = "coder" + coder_helm_repo = "https://helm.coder.com/v2" + coder_helm_chart = "coder" + coder_namespace = "coder-${var.name}" + coder_release_name = var.name + provisionerd_helm_chart = "coder-provisioner" + provisionerd_release_name = "${var.name}-provisionerd" } -resource "null_resource" "coder_namespace" { - triggers = { - namespace = local.coder_namespace - kubeconfig_path = var.kubernetes_kubeconfig_path - } - provisioner "local-exec" { - when = create - command = <