mirror of
https://github.com/coder/coder.git
synced 2025-07-06 15:41:45 +00:00
Closes https://github.com/coder/internal/issues/149 This creates workspaces in each region and runs traffic generation against the workspaces colocated in the region.
181 lines
5.0 KiB
HCL
181 lines
5.0 KiB
HCL
locals {
|
|
create_workspace_timeout = "30m"
|
|
}
|
|
|
|
resource "kubernetes_job" "create_workspaces_primary" {
|
|
provider = kubernetes.primary
|
|
|
|
metadata {
|
|
name = "${var.name}-create-workspaces"
|
|
namespace = kubernetes_namespace.coder_primary.metadata.0.name
|
|
labels = {
|
|
"app.kubernetes.io/name" = "${var.name}-create-workspaces"
|
|
}
|
|
}
|
|
spec {
|
|
completions = 1
|
|
backoff_limit = 0
|
|
template {
|
|
metadata {}
|
|
spec {
|
|
affinity {
|
|
node_affinity {
|
|
required_during_scheduling_ignored_during_execution {
|
|
node_selector_term {
|
|
match_expressions {
|
|
key = "cloud.google.com/gke-nodepool"
|
|
operator = "In"
|
|
values = ["${google_container_node_pool.node_pool["primary_misc"].name}"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
container {
|
|
name = "cli"
|
|
image = "${var.coder_image_repo}:${var.coder_image_tag}"
|
|
command = [
|
|
"/opt/coder",
|
|
"--verbose",
|
|
"--url=${local.deployments.primary.url}",
|
|
"--token=${trimspace(data.local_file.api_key.content)}",
|
|
"exp",
|
|
"scaletest",
|
|
"create-workspaces",
|
|
"--count=${local.scenarios[var.scenario].workspaces.count_per_deployment}",
|
|
"--template=kubernetes-primary",
|
|
"--concurrency=${local.scenarios[var.scenario].provisionerd.replicas}",
|
|
"--no-cleanup"
|
|
]
|
|
}
|
|
restart_policy = "Never"
|
|
}
|
|
}
|
|
}
|
|
wait_for_completion = true
|
|
|
|
timeouts {
|
|
create = local.create_workspace_timeout
|
|
}
|
|
|
|
depends_on = [kubernetes_job.push_template_primary]
|
|
}
|
|
|
|
resource "kubernetes_job" "create_workspaces_europe" {
|
|
provider = kubernetes.europe
|
|
|
|
metadata {
|
|
name = "${var.name}-create-workspaces"
|
|
namespace = kubernetes_namespace.coder_europe.metadata.0.name
|
|
labels = {
|
|
"app.kubernetes.io/name" = "${var.name}-create-workspaces"
|
|
}
|
|
}
|
|
spec {
|
|
completions = 1
|
|
backoff_limit = 0
|
|
template {
|
|
metadata {}
|
|
spec {
|
|
affinity {
|
|
node_affinity {
|
|
required_during_scheduling_ignored_during_execution {
|
|
node_selector_term {
|
|
match_expressions {
|
|
key = "cloud.google.com/gke-nodepool"
|
|
operator = "In"
|
|
values = ["${google_container_node_pool.node_pool["europe_misc"].name}"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
container {
|
|
name = "cli"
|
|
image = "${var.coder_image_repo}:${var.coder_image_tag}"
|
|
command = [
|
|
"/opt/coder",
|
|
"--verbose",
|
|
"--url=${local.deployments.primary.url}",
|
|
"--token=${trimspace(data.local_file.api_key.content)}",
|
|
"exp",
|
|
"scaletest",
|
|
"create-workspaces",
|
|
"--count=${local.scenarios[var.scenario].workspaces.count_per_deployment}",
|
|
"--template=kubernetes-europe",
|
|
"--concurrency=${local.scenarios[var.scenario].provisionerd.replicas}",
|
|
"--no-cleanup"
|
|
]
|
|
}
|
|
restart_policy = "Never"
|
|
}
|
|
}
|
|
}
|
|
wait_for_completion = true
|
|
|
|
timeouts {
|
|
create = local.create_workspace_timeout
|
|
}
|
|
|
|
depends_on = [kubernetes_job.push_template_europe]
|
|
}
|
|
|
|
resource "kubernetes_job" "create_workspaces_asia" {
|
|
provider = kubernetes.asia
|
|
|
|
metadata {
|
|
name = "${var.name}-create-workspaces"
|
|
namespace = kubernetes_namespace.coder_asia.metadata.0.name
|
|
labels = {
|
|
"app.kubernetes.io/name" = "${var.name}-create-workspaces"
|
|
}
|
|
}
|
|
spec {
|
|
completions = 1
|
|
backoff_limit = 0
|
|
template {
|
|
metadata {}
|
|
spec {
|
|
affinity {
|
|
node_affinity {
|
|
required_during_scheduling_ignored_during_execution {
|
|
node_selector_term {
|
|
match_expressions {
|
|
key = "cloud.google.com/gke-nodepool"
|
|
operator = "In"
|
|
values = ["${google_container_node_pool.node_pool["asia_misc"].name}"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
container {
|
|
name = "cli"
|
|
image = "${var.coder_image_repo}:${var.coder_image_tag}"
|
|
command = [
|
|
"/opt/coder",
|
|
"--verbose",
|
|
"--url=${local.deployments.primary.url}",
|
|
"--token=${trimspace(data.local_file.api_key.content)}",
|
|
"exp",
|
|
"scaletest",
|
|
"create-workspaces",
|
|
"--count=${local.scenarios[var.scenario].workspaces.count_per_deployment}",
|
|
"--template=kubernetes-asia",
|
|
"--concurrency=${local.scenarios[var.scenario].provisionerd.replicas}",
|
|
"--no-cleanup"
|
|
]
|
|
}
|
|
restart_policy = "Never"
|
|
}
|
|
}
|
|
}
|
|
wait_for_completion = true
|
|
|
|
timeouts {
|
|
create = local.create_workspace_timeout
|
|
}
|
|
|
|
depends_on = [kubernetes_job.push_template_asia]
|
|
}
|