Skip to content

Commit 5994591

Browse files
committed
baseline with iter
1 parent 61792ed commit 5994591

File tree

7 files changed

+130
-210
lines changed

7 files changed

+130
-210
lines changed

scaletest/terraform/infra/gcp_cluster.tf

Lines changed: 31 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,35 @@ data "google_compute_default_service_account" "default" {
44
}
55

66
locals {
7-
abs_module_path = abspath(path.module)
8-
rel_kubeconfig_path = "../../.coderv2/${var.name}-cluster.kubeconfig"
9-
cluster_kubeconfig_path = abspath("${local.abs_module_path}/${local.rel_kubeconfig_path}")
7+
node_pools = flatten([ for i, deployment in var.deployments : [
8+
{
9+
name = "${var.name}-${deployment.name}-coder"
10+
zone = deployment.zone
11+
size = deployment.coder_node_pool_size
12+
cluster_i = i
13+
},
14+
{
15+
name = "${var.name}-${deployment.name}-workspaces"
16+
zone = deployment.zone
17+
size = deployment.workspaces_node_pool_size
18+
cluster_i = i
19+
},
20+
{
21+
name = "${var.name}-${deployment.name}-misc"
22+
zone = deployment.zone
23+
size = deployment.misc_node_pool_size
24+
cluster_i = i
25+
}
26+
] ])
1027
}
1128

12-
resource "google_container_cluster" "primary" {
13-
name = var.name
14-
location = var.zone
29+
resource "google_container_cluster" "cluster" {
30+
count = length(var.deployments)
31+
name = "${var.name}-${var.deployments[count.index].name}"
32+
location = var.deployments[count.index].zone
1533
project = var.project_id
1634
network = google_compute_network.vpc.name
17-
subnetwork = google_compute_subnetwork.subnet.name
35+
subnetwork = google_compute_subnetwork.subnet[count.index].name
1836
networking_mode = "VPC_NATIVE"
1937
default_max_pods_per_node = 256
2038
ip_allocation_policy { # Required with networking_mode=VPC_NATIVE
@@ -53,14 +71,15 @@ resource "google_container_cluster" "primary" {
5371
}
5472
}
5573

56-
resource "google_container_node_pool" "coder" {
57-
name = "${var.name}-coder"
58-
location = var.zone
74+
resource "google_container_node_pool" "node_pool" {
75+
count = length(local.node_pools)
76+
name = local.node_pools[count.index].name
77+
location = local.node_pools[count.index].zone
5978
project = var.project_id
60-
cluster = google_container_cluster.primary.name
79+
cluster = google_container_cluster.cluster[local.node_pools[count.index].cluster_i].name
6180
autoscaling {
6281
min_node_count = 1
63-
max_node_count = var.nodepool_size_coder
82+
max_node_count = local.node_pools[count.index].size
6483
}
6584
node_config {
6685
oauth_scopes = [
@@ -88,100 +107,3 @@ resource "google_container_node_pool" "coder" {
88107
ignore_changes = [management[0].auto_repair, management[0].auto_upgrade, timeouts]
89108
}
90109
}
91-
92-
resource "google_container_node_pool" "workspaces" {
93-
name = "${var.name}-workspaces"
94-
location = var.zone
95-
project = var.project_id
96-
cluster = google_container_cluster.primary.name
97-
autoscaling {
98-
min_node_count = 0
99-
total_max_node_count = var.nodepool_size_workspaces
100-
}
101-
management {
102-
auto_upgrade = false
103-
}
104-
node_config {
105-
oauth_scopes = [
106-
"https://www.googleapis.com/auth/logging.write",
107-
"https://www.googleapis.com/auth/monitoring",
108-
"https://www.googleapis.com/auth/trace.append",
109-
"https://www.googleapis.com/auth/devstorage.read_only",
110-
"https://www.googleapis.com/auth/service.management.readonly",
111-
"https://www.googleapis.com/auth/servicecontrol",
112-
]
113-
disk_size_gb = var.node_disk_size_gb
114-
machine_type = var.nodepool_machine_type_workspaces
115-
image_type = var.node_image_type
116-
preemptible = var.node_preemptible
117-
service_account = data.google_compute_default_service_account.default.email
118-
tags = ["gke-node", "${var.project_id}-gke"]
119-
labels = {
120-
env = var.project_id
121-
}
122-
metadata = {
123-
disable-legacy-endpoints = "true"
124-
}
125-
}
126-
lifecycle {
127-
ignore_changes = [management[0].auto_repair, management[0].auto_upgrade, timeouts]
128-
}
129-
}
130-
131-
resource "google_container_node_pool" "misc" {
132-
name = "${var.name}-misc"
133-
location = var.zone
134-
project = var.project_id
135-
cluster = google_container_cluster.primary.name
136-
node_count = var.state == "stopped" ? 0 : var.nodepool_size_misc
137-
management {
138-
auto_upgrade = false
139-
}
140-
node_config {
141-
oauth_scopes = [
142-
"https://www.googleapis.com/auth/logging.write",
143-
"https://www.googleapis.com/auth/monitoring",
144-
"https://www.googleapis.com/auth/trace.append",
145-
"https://www.googleapis.com/auth/devstorage.read_only",
146-
"https://www.googleapis.com/auth/service.management.readonly",
147-
"https://www.googleapis.com/auth/servicecontrol",
148-
]
149-
disk_size_gb = var.node_disk_size_gb
150-
machine_type = var.nodepool_machine_type_misc
151-
image_type = var.node_image_type
152-
preemptible = var.node_preemptible
153-
service_account = data.google_compute_default_service_account.default.email
154-
tags = ["gke-node", "${var.project_id}-gke"]
155-
labels = {
156-
env = var.project_id
157-
}
158-
metadata = {
159-
disable-legacy-endpoints = "true"
160-
}
161-
}
162-
lifecycle {
163-
ignore_changes = [management[0].auto_repair, management[0].auto_upgrade, timeouts]
164-
}
165-
}
166-
167-
resource "null_resource" "cluster_kubeconfig" {
168-
depends_on = [google_container_cluster.primary]
169-
triggers = {
170-
path = local.cluster_kubeconfig_path
171-
name = google_container_cluster.primary.name
172-
project_id = var.project_id
173-
zone = var.zone
174-
}
175-
provisioner "local-exec" {
176-
command = <<EOF
177-
KUBECONFIG=${self.triggers.path} gcloud container clusters get-credentials ${self.triggers.name} --project=${self.triggers.project_id} --zone=${self.triggers.zone}
178-
EOF
179-
}
180-
181-
provisioner "local-exec" {
182-
when = destroy
183-
command = <<EOF
184-
rm -f ${self.triggers.path}
185-
EOF
186-
}
187-
}

scaletest/terraform/infra/gcp_db.tf

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
resource "google_sql_database_instance" "db" {
2-
name = var.name
3-
region = var.region
2+
name = "${var.name}-coder"
3+
project = var.project_id
4+
region = var.deployments[0].region
45
database_version = var.cloudsql_version
56
deletion_protection = false
67

@@ -12,7 +13,7 @@ resource "google_sql_database_instance" "db" {
1213
availability_type = "ZONAL"
1314

1415
location_preference {
15-
zone = var.zone
16+
zone = var.deployments[0].zone
1617
}
1718

1819
database_flags {
@@ -49,11 +50,11 @@ resource "google_sql_database" "coder" {
4950
}
5051
}
5152

52-
resource "random_password" "coder-postgres-password" {
53+
resource "random_password" "coder_postgres_password" {
5354
length = 12
5455
}
5556

56-
resource "random_password" "prometheus-postgres-password" {
57+
resource "random_password" "prometheus_postgres_password" {
5758
length = 12
5859
}
5960

@@ -62,7 +63,7 @@ resource "google_sql_user" "coder" {
6263
instance = google_sql_database_instance.db.id
6364
name = "${var.name}-coder"
6465
type = "BUILT_IN"
65-
password = random_password.coder-postgres-password.result
66+
password = random_password.coder_postgres_password.result
6667
# required for postgres, otherwise user fails to delete
6768
deletion_policy = "ABANDON"
6869
lifecycle {
@@ -75,7 +76,7 @@ resource "google_sql_user" "prometheus" {
7576
instance = google_sql_database_instance.db.id
7677
name = "${var.name}-prometheus"
7778
type = "BUILT_IN"
78-
password = random_password.prometheus-postgres-password.result
79+
password = random_password.prometheus_postgres_password.result
7980
# required for postgres, otherwise user fails to delete
8081
deletion_policy = "ABANDON"
8182
lifecycle {
@@ -84,5 +85,5 @@ resource "google_sql_user" "prometheus" {
8485
}
8586

8687
locals {
87-
coder_db_url = "postgres://${google_sql_user.coder.name}:${urlencode(random_password.coder-postgres-password.result)}@${google_sql_database_instance.db.private_ip_address}/${google_sql_database.coder.name}?sslmode=disable"
88+
coder_db_url = "postgres://${google_sql_user.coder.name}:${urlencode(random_password.coder_postgres_password.result)}@${google_sql_database_instance.db.private_ip_address}/${google_sql_database.coder.name}?sslmode=disable"
8889
}

scaletest/terraform/infra/gcp_vpc.tf

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,21 @@ resource "google_compute_network" "vpc" {
88
}
99

1010
resource "google_compute_subnetwork" "subnet" {
11-
name = var.name
11+
count = length(var.deployments)
12+
name = "${var.name}-${var.deployments[count.index].name}"
1213
project = var.project_id
13-
region = var.region
14+
region = var.deployments[count.index].region
1415
network = google_compute_network.vpc.name
15-
ip_cidr_range = var.subnet_cidr
16+
ip_cidr_range = var.deployments[count.index].subnet_cidr
17+
}
18+
19+
resource "google_compute_address" "coder" {
20+
count = length(var.deployments)
21+
project = var.project_id
22+
region = var.deployments[count.index].region
23+
name = "${var.name}-${var.deployments[count.index].name}-coder"
24+
address_type = "EXTERNAL"
25+
network_tier = "PREMIUM"
1626
}
1727

1828
resource "google_compute_global_address" "sql_peering" {
@@ -24,14 +34,6 @@ resource "google_compute_global_address" "sql_peering" {
2434
network = google_compute_network.vpc.id
2535
}
2636

27-
resource "google_compute_address" "coder" {
28-
project = var.project_id
29-
region = var.region
30-
name = "${var.name}-coder"
31-
address_type = "EXTERNAL"
32-
network_tier = "PREMIUM"
33-
}
34-
3537
resource "google_service_networking_connection" "private_vpc_connection" {
3638
network = google_compute_network.vpc.id
3739
service = "servicenetworking.googleapis.com"

scaletest/terraform/infra/main.tf

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,4 @@ terraform {
1515
}
1616

1717
provider "google" {
18-
region = var.region
19-
project = var.project_id
2018
}

0 commit comments

Comments
 (0)