Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9bfd90c

Browse files
committed
use bitnami chart
1 parent c4ff509 commit 9bfd90c

File tree

5 files changed

+175
-53
lines changed

5 files changed

+175
-53
lines changed

scaletest/terraform/action/coder_traffic.tf

+3
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ resource "time_sleep" "wait_baseline" {
3131
kubernetes_job.create_workspaces_primary,
3232
kubernetes_job.create_workspaces_europe,
3333
kubernetes_job.create_workspaces_asia,
34+
helm_release.prometheus_chart_primary,
35+
helm_release.prometheus_chart_europe,
36+
helm_release.prometheus_chart_asia,
3437
]
3538

3639
create_duration = local.wait_baseline_duration

scaletest/terraform/action/gcp_db.tf

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ resource "google_sql_database_instance" "db" {
2323

2424
ip_configuration {
2525
ipv4_enabled = false
26-
private_network = "projects/${var.project_id}/global/networks/${local.vpc_name}"
26+
private_network = local.vpc_id
2727
}
2828

2929
insights_config {

scaletest/terraform/action/gcp_vpc.tf

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
locals {
22
vpc_name = "scaletest"
3+
vpc_id = "projects/${var.project_id}/global/networks/${local.vpc_name}"
34
subnet_name = "scaletest"
45
}
56

@@ -22,7 +23,7 @@ resource "google_compute_global_address" "sql_peering" {
2223
}
2324

2425
resource "google_service_networking_connection" "private_vpc_connection" {
25-
network = local.vpc_name
26+
network = local.vpc_id
2627
service = "servicenetworking.googleapis.com"
2728
reserved_peering_ranges = [google_compute_global_address.sql_peering.name]
2829
}
+125-51
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
locals {
2-
prometheus_helm_repo = "https://charts.bitnami.com/bitnami"
2+
prometheus_helm_repo = "oci://registry-1.docker.io/bitnamicharts"
33
prometheus_helm_chart = "kube-prometheus"
4-
prometheus_exporter_helm_repo = "https://prometheus-community.github.io/helm-charts"
5-
prometheus_exporter_helm_chart = "prometheus-postgres-exporter"
64
prometheus_release_name = "prometheus"
7-
prometheus_exporter_release_name = "prometheus-postgres-exporter"
85
prometheus_namespace = "prometheus"
96
prometheus_remote_write_send_interval = "15s"
107
prometheus_remote_write_metrics_regex = ".*"
@@ -28,51 +25,128 @@ resource "helm_release" "prometheus_chart_primary" {
2825
chart = local.prometheus_helm_chart
2926
name = local.prometheus_release_name
3027
namespace = kubernetes_namespace.prometheus_namespace_primary.metadata.0.name
31-
values = [<<EOF
32-
alertmanager:
33-
enabled: false
34-
blackboxExporter:
35-
affinity:
36-
nodeAffinity:
37-
requiredDuringSchedulingIgnoredDuringExecution:
38-
nodeSelectorTerms:
39-
- matchExpressions:
40-
- key: "cloud.google.com/gke-nodepool"
41-
operator: "In"
42-
values: ["${google_container_node_pool.node_pool["primary_misc"].name}"]
43-
operator:
44-
affinity:
45-
nodeAffinity:
46-
requiredDuringSchedulingIgnoredDuringExecution:
47-
nodeSelectorTerms:
48-
- matchExpressions:
49-
- key: "cloud.google.com/gke-nodepool"
50-
operator: "In"
51-
values: ["${google_container_node_pool.node_pool["primary_misc"].name}"]
52-
prometheus:
53-
affinity:
54-
nodeAffinity:
55-
requiredDuringSchedulingIgnoredDuringExecution:
56-
nodeSelectorTerms:
57-
- matchExpressions:
58-
- key: "cloud.google.com/gke-nodepool"
59-
operator: "In"
60-
values: ["${google_container_node_pool.node_pool["primary_misc"].name}"]
61-
externalLabels:
62-
cluster: "primary"
63-
persistence:
64-
enabled: true
65-
storageClass: standard
66-
remoteWrite:
67-
- url: "${var.prometheus_remote_write_url}"
68-
tlsConfig:
69-
insecureSkipVerify: true
70-
writeRelabelConfigs:
71-
- sourceLabels: [__name__]
72-
regex: "${local.prometheus_remote_write_metrics_regex}"
73-
action: keep
74-
metadataConfig:
75-
sendInterval: "${local.prometheus_remote_write_send_interval}"
76-
EOF
77-
]
28+
values = [templatefile("${path.module}/prometheus_helm_values.tftpl", {
29+
nodepool = google_container_node_pool.node_pool["primary_misc"].name,
30+
cluster = "primary",
31+
prometheus_remote_write_url = var.prometheus_remote_write_url,
32+
prometheus_remote_write_metrics_regex = local.prometheus_remote_write_metrics_regex,
33+
prometheus_remote_write_send_interval = local.prometheus_remote_write_send_interval,
34+
})]
35+
}
36+
37+
resource "kubectl_manifest" "pod_monitor_primary" {
38+
provider = kubectl.primary
39+
40+
yaml_body = <<YAML
41+
apiVersion: monitoring.coreos.com/v1
42+
kind: PodMonitor
43+
metadata:
44+
namespace: ${kubernetes_namespace.coder_primary.metadata.0.name}
45+
name: coder-monitoring
46+
spec:
47+
selector:
48+
matchLabels:
49+
"app.kubernetes.io/name": coder
50+
podMetricsEndpoints:
51+
- port: prometheus-http
52+
interval: 30s
53+
YAML
54+
55+
depends_on = [ helm_release.prometheus_chart_primary ]
56+
}
57+
58+
resource "kubernetes_namespace" "prometheus_namespace_europe" {
59+
provider = kubernetes.europe
60+
61+
metadata {
62+
name = local.prometheus_namespace
63+
}
64+
lifecycle {
65+
ignore_changes = [timeouts, wait_for_default_service_account]
66+
}
67+
}
68+
69+
resource "helm_release" "prometheus_chart_europe" {
70+
provider = helm.europe
71+
72+
repository = local.prometheus_helm_repo
73+
chart = local.prometheus_helm_chart
74+
name = local.prometheus_release_name
75+
namespace = kubernetes_namespace.prometheus_namespace_europe.metadata.0.name
76+
values = [templatefile("${path.module}/prometheus_helm_values.tftpl", {
77+
nodepool = google_container_node_pool.node_pool["europe_misc"].name,
78+
cluster = "europe",
79+
prometheus_remote_write_url = var.prometheus_remote_write_url,
80+
prometheus_remote_write_metrics_regex = local.prometheus_remote_write_metrics_regex,
81+
prometheus_remote_write_send_interval = local.prometheus_remote_write_send_interval,
82+
})]
83+
}
84+
85+
resource "kubectl_manifest" "pod_monitor_europe" {
86+
provider = kubectl.europe
87+
88+
yaml_body = <<YAML
89+
apiVersion: monitoring.coreos.com/v1
90+
kind: PodMonitor
91+
metadata:
92+
namespace: ${kubernetes_namespace.coder_europe.metadata.0.name}
93+
name: coder-monitoring
94+
spec:
95+
selector:
96+
matchLabels:
97+
"app.kubernetes.io/name": coder
98+
podMetricsEndpoints:
99+
- port: prometheus-http
100+
interval: 30s
101+
YAML
102+
103+
depends_on = [ helm_release.prometheus_chart_europe ]
104+
}
105+
106+
resource "kubernetes_namespace" "prometheus_namespace_asia" {
107+
provider = kubernetes.asia
108+
109+
metadata {
110+
name = local.prometheus_namespace
111+
}
112+
lifecycle {
113+
ignore_changes = [timeouts, wait_for_default_service_account]
114+
}
115+
}
116+
117+
resource "helm_release" "prometheus_chart_asia" {
118+
provider = helm.asia
119+
120+
repository = local.prometheus_helm_repo
121+
chart = local.prometheus_helm_chart
122+
name = local.prometheus_release_name
123+
namespace = kubernetes_namespace.prometheus_namespace_asia.metadata.0.name
124+
values = [templatefile("${path.module}/prometheus_helm_values.tftpl", {
125+
nodepool = google_container_node_pool.node_pool["asia_misc"].name,
126+
cluster = "asia",
127+
prometheus_remote_write_url = var.prometheus_remote_write_url,
128+
prometheus_remote_write_metrics_regex = local.prometheus_remote_write_metrics_regex,
129+
prometheus_remote_write_send_interval = local.prometheus_remote_write_send_interval,
130+
})]
131+
}
132+
133+
resource "kubectl_manifest" "pod_monitor_asia" {
134+
provider = kubectl.asia
135+
136+
yaml_body = <<YAML
137+
apiVersion: monitoring.coreos.com/v1
138+
kind: PodMonitor
139+
metadata:
140+
namespace: ${kubernetes_namespace.coder_asia.metadata.0.name}
141+
name: coder-monitoring
142+
spec:
143+
selector:
144+
matchLabels:
145+
"app.kubernetes.io/name": coder
146+
podMetricsEndpoints:
147+
- port: prometheus-http
148+
interval: 30s
149+
YAML
150+
151+
depends_on = [ helm_release.prometheus_chart_asia ]
78152
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
alertmanager:
2+
enabled: false
3+
blackboxExporter:
4+
affinity:
5+
nodeAffinity:
6+
requiredDuringSchedulingIgnoredDuringExecution:
7+
nodeSelectorTerms:
8+
- matchExpressions:
9+
- key: "cloud.google.com/gke-nodepool"
10+
operator: "In"
11+
values: ["${nodepool}"]
12+
operator:
13+
affinity:
14+
nodeAffinity:
15+
requiredDuringSchedulingIgnoredDuringExecution:
16+
nodeSelectorTerms:
17+
- matchExpressions:
18+
- key: "cloud.google.com/gke-nodepool"
19+
operator: "In"
20+
values: ["${nodepool}"]
21+
prometheus:
22+
affinity:
23+
nodeAffinity:
24+
requiredDuringSchedulingIgnoredDuringExecution:
25+
nodeSelectorTerms:
26+
- matchExpressions:
27+
- key: "cloud.google.com/gke-nodepool"
28+
operator: "In"
29+
values: ["${nodepool}"]
30+
externalLabels:
31+
cluster: "${cluster}"
32+
persistence:
33+
enabled: true
34+
storageClass: standard
35+
remoteWrite:
36+
- url: "${prometheus_remote_write_url}"
37+
tlsConfig:
38+
insecureSkipVerify: true
39+
writeRelabelConfigs:
40+
- sourceLabels: [__name__]
41+
regex: "${prometheus_remote_write_metrics_regex}"
42+
action: keep
43+
metadataConfig:
44+
sendInterval: "${prometheus_remote_write_send_interval}"

0 commit comments

Comments
 (0)