Skip to content

Commit ece56e8

Browse files
committed
move to new dir
1 parent 5994591 commit ece56e8

File tree

12 files changed

+556
-130
lines changed

12 files changed

+556
-130
lines changed

scaletest/terraform/infra/gcp_cluster.tf

Lines changed: 109 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,19 @@
11
data "google_compute_default_service_account" "default" {
22
project = var.project_id
3-
depends_on = [ google_project_service.api["compute.googleapis.com"] ]
43
}
54

65
locals {
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-
] ])
6+
abs_module_path = abspath(path.module)
7+
rel_kubeconfig_path = "../../.coderv2/${var.name}-cluster.kubeconfig"
8+
cluster_kubeconfig_path = abspath("${local.abs_module_path}/${local.rel_kubeconfig_path}")
279
}
2810

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
11+
resource "google_container_cluster" "primary" {
12+
name = var.name
13+
location = var.zone
3314
project = var.project_id
3415
network = google_compute_network.vpc.name
35-
subnetwork = google_compute_subnetwork.subnet[count.index].name
16+
subnetwork = google_compute_subnetwork.subnet.name
3617
networking_mode = "VPC_NATIVE"
3718
default_max_pods_per_node = 256
3819
ip_allocation_policy { # Required with networking_mode=VPC_NATIVE
@@ -71,15 +52,14 @@ resource "google_container_cluster" "cluster" {
7152
}
7253
}
7354

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

scaletest/terraform/infra/gcp_db.tf

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

@@ -13,7 +12,7 @@ resource "google_sql_database_instance" "db" {
1312
availability_type = "ZONAL"
1413

1514
location_preference {
16-
zone = var.deployments[0].zone
15+
zone = var.zone
1716
}
1817

1918
database_flags {
@@ -50,11 +49,11 @@ resource "google_sql_database" "coder" {
5049
}
5150
}
5251

53-
resource "random_password" "coder_postgres_password" {
52+
resource "random_password" "coder-postgres-password" {
5453
length = 12
5554
}
5655

57-
resource "random_password" "prometheus_postgres_password" {
56+
resource "random_password" "prometheus-postgres-password" {
5857
length = 12
5958
}
6059

@@ -63,7 +62,7 @@ resource "google_sql_user" "coder" {
6362
instance = google_sql_database_instance.db.id
6463
name = "${var.name}-coder"
6564
type = "BUILT_IN"
66-
password = random_password.coder_postgres_password.result
65+
password = random_password.coder-postgres-password.result
6766
# required for postgres, otherwise user fails to delete
6867
deletion_policy = "ABANDON"
6968
lifecycle {
@@ -76,7 +75,7 @@ resource "google_sql_user" "prometheus" {
7675
instance = google_sql_database_instance.db.id
7776
name = "${var.name}-prometheus"
7877
type = "BUILT_IN"
79-
password = random_password.prometheus_postgres_password.result
78+
password = random_password.prometheus-postgres-password.result
8079
# required for postgres, otherwise user fails to delete
8180
deletion_policy = "ABANDON"
8281
lifecycle {
@@ -85,5 +84,5 @@ resource "google_sql_user" "prometheus" {
8584
}
8685

8786
locals {
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"
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"
8988
}

scaletest/terraform/infra/gcp_vpc.tf

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

1010
resource "google_compute_subnetwork" "subnet" {
11-
count = length(var.deployments)
12-
name = "${var.name}-${var.deployments[count.index].name}"
11+
name = var.name
1312
project = var.project_id
14-
region = var.deployments[count.index].region
13+
region = var.region
1514
network = google_compute_network.vpc.name
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"
15+
ip_cidr_range = var.subnet_cidr
2616
}
2717

2818
resource "google_compute_global_address" "sql_peering" {
@@ -34,6 +24,14 @@ resource "google_compute_global_address" "sql_peering" {
3424
network = google_compute_network.vpc.id
3525
}
3626

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+
3735
resource "google_service_networking_connection" "private_vpc_connection" {
3836
network = google_compute_network.vpc.id
3937
service = "servicenetworking.googleapis.com"

scaletest/terraform/infra/main.tf

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@ terraform {
1111
}
1212
}
1313

14-
required_version = "~> 1.9.0"
14+
required_version = "~> 1.5.0"
1515
}
1616

1717
provider "google" {
18+
region = var.region
19+
project = var.project_id
1820
}

0 commit comments

Comments
 (0)