Skip to content

Commit 5b74a5b

Browse files
committed
3 create worksapces
1 parent d371076 commit 5b74a5b

File tree

6 files changed

+272
-87
lines changed

6 files changed

+272
-87
lines changed
Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
locals {
2+
create_workspace_timeout = "600s"
3+
}
4+
5+
resource "kubernetes_job" "create_workspaces_primary" {
6+
provider = kubernetes.primary
7+
8+
metadata {
9+
name = "${var.name}-create-workspaces"
10+
namespace = kubernetes_namespace.coder_primary.metadata.0.name
11+
labels = {
12+
"app.kubernetes.io/name" = "${var.name}-create-workspaces"
13+
}
14+
}
15+
spec {
16+
completions = 1
17+
template {
18+
metadata {}
19+
spec {
20+
affinity {
21+
node_affinity {
22+
required_during_scheduling_ignored_during_execution {
23+
node_selector_term {
24+
match_expressions {
25+
key = "cloud.google.com/gke-nodepool"
26+
operator = "In"
27+
values = ["${google_container_node_pool.node_pool["primary_misc"].name}"]
28+
}
29+
}
30+
}
31+
}
32+
}
33+
container {
34+
name = "cli"
35+
image = "${var.coder_image_repo}:${var.coder_image_tag}"
36+
command = [
37+
"/opt/coder",
38+
"--verbose",
39+
"--url=${local.deployments.primary.url}",
40+
"--token=${trimspace(data.local_file.api_key.content)}",
41+
"exp",
42+
"scaletest",
43+
"create-workspaces",
44+
"--count=${local.scenarios[var.scenario].workspaces.count_per_deployment}",
45+
"--template=kubernetes-primary",
46+
"--concurrency=${var.workspace_create_concurrency}",
47+
"--no-cleanup"
48+
]
49+
}
50+
restart_policy = "Never"
51+
}
52+
}
53+
}
54+
wait_for_completion = true
55+
56+
timeouts {
57+
create = local.create_workspace_timeout
58+
}
59+
60+
depends_on = [kubernetes_job.push_template_primary]
61+
}
62+
63+
resource "kubernetes_job" "create_workspaces_europe" {
64+
provider = kubernetes.europe
65+
66+
metadata {
67+
name = "${var.name}-create-workspaces"
68+
namespace = kubernetes_namespace.coder_europe.metadata.0.name
69+
labels = {
70+
"app.kubernetes.io/name" = "${var.name}-create-workspaces"
71+
}
72+
}
73+
spec {
74+
completions = 1
75+
template {
76+
metadata {}
77+
spec {
78+
affinity {
79+
node_affinity {
80+
required_during_scheduling_ignored_during_execution {
81+
node_selector_term {
82+
match_expressions {
83+
key = "cloud.google.com/gke-nodepool"
84+
operator = "In"
85+
values = ["${google_container_node_pool.node_pool["europe_misc"].name}"]
86+
}
87+
}
88+
}
89+
}
90+
}
91+
container {
92+
name = "cli"
93+
image = "${var.coder_image_repo}:${var.coder_image_tag}"
94+
command = [
95+
"/opt/coder",
96+
"--verbose",
97+
"--url=${local.deployments.primary.url}",
98+
"--token=${trimspace(data.local_file.api_key.content)}",
99+
"exp",
100+
"scaletest",
101+
"create-workspaces",
102+
"--count=${local.scenarios[var.scenario].workspaces.count_per_deployment}",
103+
"--template=kubernetes-europe",
104+
"--concurrency=${var.workspace_create_concurrency}",
105+
"--no-cleanup"
106+
]
107+
}
108+
restart_policy = "Never"
109+
}
110+
}
111+
}
112+
wait_for_completion = true
113+
114+
timeouts {
115+
create = local.create_workspace_timeout
116+
}
117+
118+
depends_on = [kubernetes_job.push_template_europe]
119+
}
120+
121+
resource "kubernetes_job" "create_workspaces_asia" {
122+
provider = kubernetes.asia
123+
124+
metadata {
125+
name = "${var.name}-create-workspaces"
126+
namespace = kubernetes_namespace.coder_asia.metadata.0.name
127+
labels = {
128+
"app.kubernetes.io/name" = "${var.name}-create-workspaces"
129+
}
130+
}
131+
spec {
132+
completions = 1
133+
template {
134+
metadata {}
135+
spec {
136+
affinity {
137+
node_affinity {
138+
required_during_scheduling_ignored_during_execution {
139+
node_selector_term {
140+
match_expressions {
141+
key = "cloud.google.com/gke-nodepool"
142+
operator = "In"
143+
values = ["${google_container_node_pool.node_pool["asia_misc"].name}"]
144+
}
145+
}
146+
}
147+
}
148+
}
149+
container {
150+
name = "cli"
151+
image = "${var.coder_image_repo}:${var.coder_image_tag}"
152+
command = [
153+
"/opt/coder",
154+
"--verbose",
155+
"--url=${local.deployments.primary.url}",
156+
"--token=${trimspace(data.local_file.api_key.content)}",
157+
"exp",
158+
"scaletest",
159+
"create-workspaces",
160+
"--count=${local.scenarios[var.scenario].workspaces.count_per_deployment}",
161+
"--template=kubernetes-asia",
162+
"--concurrency=${var.workspace_create_concurrency}",
163+
"--no-cleanup"
164+
]
165+
}
166+
restart_policy = "Never"
167+
}
168+
}
169+
}
170+
wait_for_completion = true
171+
172+
timeouts {
173+
create = local.create_workspace_timeout
174+
}
175+
176+
depends_on = [kubernetes_job.push_template_asia]
177+
}

scaletest/terraform/action/k8s_coder_asia.tf

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -52,24 +52,24 @@ resource "helm_release" "coder_asia" {
5252
version = var.coder_chart_version
5353
namespace = kubernetes_namespace.coder_asia.metadata.0.name
5454
values = [templatefile("${path.module}/coder_helm_values.tftpl", {
55-
workspace_proxy = true,
56-
provisionerd = false,
57-
primary_url = local.deployments.primary.url,
58-
proxy_token = kubernetes_secret.proxy_token_asia.metadata.0.name,
59-
db_secret = null,
60-
ip_address = google_compute_address.coder["asia"].address,
55+
workspace_proxy = true,
56+
provisionerd = false,
57+
primary_url = local.deployments.primary.url,
58+
proxy_token = kubernetes_secret.proxy_token_asia.metadata.0.name,
59+
db_secret = null,
60+
ip_address = google_compute_address.coder["asia"].address,
6161
provisionerd_psk = null,
62-
access_url = local.deployments.asia.url,
63-
node_pool = google_container_node_pool.node_pool["asia_coder"].name,
64-
release_name = local.coder_release_name,
65-
experiments = var.coder_experiments,
66-
image_repo = var.coder_image_repo,
67-
image_tag = var.coder_image_tag,
68-
replicas = local.scenarios[var.scenario].coder.replicas,
69-
cpu_request = local.scenarios[var.scenario].coder.cpu_request,
70-
mem_request = local.scenarios[var.scenario].coder.mem_request,
71-
cpu_limit = local.scenarios[var.scenario].coder.cpu_limit,
72-
mem_limit = local.scenarios[var.scenario].coder.mem_limit,
62+
access_url = local.deployments.asia.url,
63+
node_pool = google_container_node_pool.node_pool["asia_coder"].name,
64+
release_name = local.coder_release_name,
65+
experiments = var.coder_experiments,
66+
image_repo = var.coder_image_repo,
67+
image_tag = var.coder_image_tag,
68+
replicas = local.scenarios[var.scenario].coder.replicas,
69+
cpu_request = local.scenarios[var.scenario].coder.cpu_request,
70+
mem_request = local.scenarios[var.scenario].coder.mem_request,
71+
cpu_limit = local.scenarios[var.scenario].coder.cpu_limit,
72+
mem_limit = local.scenarios[var.scenario].coder.mem_limit,
7373
deployment = "asia",
7474
})]
7575
}
@@ -83,12 +83,12 @@ resource "helm_release" "provisionerd_asia" {
8383
version = var.provisionerd_chart_version
8484
namespace = kubernetes_namespace.coder_asia.metadata.0.name
8585
values = [templatefile("${path.module}/coder_helm_values.tftpl", {
86-
workspace_proxy = false,
87-
provisionerd = true,
88-
primary_url = null,
89-
proxy_token = null,
90-
db_secret = null,
91-
ip_address = null,
86+
workspace_proxy = false,
87+
provisionerd = true,
88+
primary_url = null,
89+
proxy_token = null,
90+
db_secret = null,
91+
ip_address = null,
9292
provisionerd_psk = kubernetes_secret.provisionerd_psk_asia.metadata.0.name,
9393
access_url = local.deployments.primary.url,
9494
node_pool = google_container_node_pool.node_pool["asia_coder"].name,

scaletest/terraform/action/k8s_coder_europe.tf

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -52,24 +52,24 @@ resource "helm_release" "coder_europe" {
5252
version = var.coder_chart_version
5353
namespace = kubernetes_namespace.coder_europe.metadata.0.name
5454
values = [templatefile("${path.module}/coder_helm_values.tftpl", {
55-
workspace_proxy = true,
56-
provisionerd = false,
57-
primary_url = local.deployments.primary.url,
58-
proxy_token = kubernetes_secret.proxy_token_europe.metadata.0.name,
59-
db_secret = null,
60-
ip_address = google_compute_address.coder["europe"].address,
55+
workspace_proxy = true,
56+
provisionerd = false,
57+
primary_url = local.deployments.primary.url,
58+
proxy_token = kubernetes_secret.proxy_token_europe.metadata.0.name,
59+
db_secret = null,
60+
ip_address = google_compute_address.coder["europe"].address,
6161
provisionerd_psk = null,
62-
access_url = local.deployments.europe.url,
63-
node_pool = google_container_node_pool.node_pool["europe_coder"].name,
64-
release_name = local.coder_release_name,
65-
experiments = var.coder_experiments,
66-
image_repo = var.coder_image_repo,
67-
image_tag = var.coder_image_tag,
68-
replicas = local.scenarios[var.scenario].coder.replicas,
69-
cpu_request = local.scenarios[var.scenario].coder.cpu_request,
70-
mem_request = local.scenarios[var.scenario].coder.mem_request,
71-
cpu_limit = local.scenarios[var.scenario].coder.cpu_limit,
72-
mem_limit = local.scenarios[var.scenario].coder.mem_limit,
62+
access_url = local.deployments.europe.url,
63+
node_pool = google_container_node_pool.node_pool["europe_coder"].name,
64+
release_name = local.coder_release_name,
65+
experiments = var.coder_experiments,
66+
image_repo = var.coder_image_repo,
67+
image_tag = var.coder_image_tag,
68+
replicas = local.scenarios[var.scenario].coder.replicas,
69+
cpu_request = local.scenarios[var.scenario].coder.cpu_request,
70+
mem_request = local.scenarios[var.scenario].coder.mem_request,
71+
cpu_limit = local.scenarios[var.scenario].coder.cpu_limit,
72+
mem_limit = local.scenarios[var.scenario].coder.mem_limit,
7373
deployment = "europe",
7474
})]
7575
}
@@ -83,12 +83,12 @@ resource "helm_release" "provisionerd_europe" {
8383
version = var.provisionerd_chart_version
8484
namespace = kubernetes_namespace.coder_europe.metadata.0.name
8585
values = [templatefile("${path.module}/coder_helm_values.tftpl", {
86-
workspace_proxy = false,
87-
provisionerd = true,
88-
primary_url = null,
89-
proxy_token = null,
90-
db_secret = null,
91-
ip_address = null,
86+
workspace_proxy = false,
87+
provisionerd = true,
88+
primary_url = null,
89+
proxy_token = null,
90+
db_secret = null,
91+
ip_address = null,
9292
provisionerd_psk = kubernetes_secret.provisionerd_psk_europe.metadata.0.name,
9393
access_url = local.deployments.primary.url,
9494
node_pool = google_container_node_pool.node_pool["europe_coder"].name,

scaletest/terraform/action/k8s_coder_primary.tf

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -72,24 +72,24 @@ resource "helm_release" "coder_primary" {
7272
version = var.coder_chart_version
7373
namespace = kubernetes_namespace.coder_primary.metadata.0.name
7474
values = [templatefile("${path.module}/coder_helm_values.tftpl", {
75-
workspace_proxy = false,
76-
provisionerd = false,
77-
primary_url = null,
78-
proxy_token = null,
79-
db_secret = kubernetes_secret.coder_db.metadata.0.name,
80-
ip_address = google_compute_address.coder["primary"].address,
75+
workspace_proxy = false,
76+
provisionerd = false,
77+
primary_url = null,
78+
proxy_token = null,
79+
db_secret = kubernetes_secret.coder_db.metadata.0.name,
80+
ip_address = google_compute_address.coder["primary"].address,
8181
provisionerd_psk = kubernetes_secret.provisionerd_psk_primary.metadata.0.name,
82-
access_url = local.deployments.primary.url,
83-
node_pool = google_container_node_pool.node_pool["primary_coder"].name,
84-
release_name = local.coder_release_name,
85-
experiments = var.coder_experiments,
86-
image_repo = var.coder_image_repo,
87-
image_tag = var.coder_image_tag,
88-
replicas = local.scenarios[var.scenario].coder.replicas,
89-
cpu_request = local.scenarios[var.scenario].coder.cpu_request,
90-
mem_request = local.scenarios[var.scenario].coder.mem_request,
91-
cpu_limit = local.scenarios[var.scenario].coder.cpu_limit,
92-
mem_limit = local.scenarios[var.scenario].coder.mem_limit,
82+
access_url = local.deployments.primary.url,
83+
node_pool = google_container_node_pool.node_pool["primary_coder"].name,
84+
release_name = local.coder_release_name,
85+
experiments = var.coder_experiments,
86+
image_repo = var.coder_image_repo,
87+
image_tag = var.coder_image_tag,
88+
replicas = local.scenarios[var.scenario].coder.replicas,
89+
cpu_request = local.scenarios[var.scenario].coder.cpu_request,
90+
mem_request = local.scenarios[var.scenario].coder.mem_request,
91+
cpu_limit = local.scenarios[var.scenario].coder.cpu_limit,
92+
mem_limit = local.scenarios[var.scenario].coder.mem_limit,
9393
deployment = "primary",
9494
})]
9595
}
@@ -103,12 +103,12 @@ resource "helm_release" "provisionerd_chart" {
103103
version = var.provisionerd_chart_version
104104
namespace = kubernetes_namespace.coder_primary.metadata.0.name
105105
values = [templatefile("${path.module}/coder_helm_values.tftpl", {
106-
workspace_proxy = false,
107-
provisionerd = true,
108-
primary_url = null,
109-
proxy_token = null,
110-
db_secret = null,
111-
ip_address = null,
106+
workspace_proxy = false,
107+
provisionerd = true,
108+
primary_url = null,
109+
proxy_token = null,
110+
db_secret = null,
111+
ip_address = null,
112112
provisionerd_psk = kubernetes_secret.provisionerd_psk_primary.metadata.0.name,
113113
access_url = local.deployments.primary.url,
114114
node_pool = google_container_node_pool.node_pool["primary_coder"].name,

0 commit comments

Comments
 (0)