Skip to content

Commit f26da93

Browse files
ianbibbyGitHub Enterprise
authored andcommitted
Merge pull request prometheus-community#11 from reddit/separate_k8s_vpc_deployment
Separate k8s vpc deployment for postgres-exporter
2 parents 9d4884d + 578d34b commit f26da93

File tree

1 file changed

+75
-70
lines changed

1 file changed

+75
-70
lines changed

infrared/manifest.star

Lines changed: 75 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ sidecars = []
1717
iam_role = ""
1818
repository = "artifactory.build.ue1.snooguts.net/reddit-docker-dev/" + git_repo_name
1919

20-
clusters_to_monitor = [
20+
clusters_to_monitor_legacy_vpc = [
2121
{
2222
"name" : "pga-r2-account",
2323
"endpoint" : "pga-r2-account.cluster-cgzk1xobcfng.us-east-1.rds.amazonaws.com:5432/newreddit",
@@ -66,6 +66,9 @@ clusters_to_monitor = [
6666
"name" : "pga-r2-subreddit-15",
6767
"endpoint" : "pga-r2-subreddit-15.cluster-cgzk1xobcfng.us-east-1.rds.amazonaws.com:5432/newreddit",
6868
},
69+
]
70+
71+
clusters_to_monitor_k8s_vpc = [
6972
{
7073
"name" : "pga-reddit-service-preference",
7174
"endpoint" : "pga-reddit-service-preference.cluster-cgzk1xobcfng.us-east-1.rds.amazonaws.com",
@@ -93,81 +96,83 @@ else:
9396
requests = bp.resources(cpu = "200m", mem = "128Mi")
9497
service_account = "snoodev"
9598

96-
release = bp.release(name = fullname)
97-
98-
conf = release.config(
99-
name = fullname,
100-
filename = "production.yaml",
101-
contents = file("%s.yaml" % env()),
102-
tags = [],
103-
)
104-
105-
metrics_port = release.port(
106-
name = "metrics",
107-
port = 9187,
108-
container_port = 9187,
109-
)
110-
111-
container = release.container(
112-
name = "exporter",
113-
repository = repository,
114-
ports = [metrics_port],
115-
requests = requests,
116-
args = [
117-
"--config.file", "/mnt/secrets/postgres-exporter.yaml",
118-
],
119-
secret_files = [
120-
bp.secret_file(
121-
output_file = "postgres-exporter.yaml",
122-
secret_path = "secret/postgres-exporter/config",
123-
content_key = "current",
124-
),
125-
],
126-
)
12799

100+
def create_deployment(name, node_specialization, clusters_to_monitor):
101+
release = bp.release(name = name)
128102

129-
if env() == Production:
130-
node_specialization = "prod-vpc-apps"
131-
132-
svc = release.service(
133-
name = fullname,
134-
type = service_type,
135-
ports = [metrics_port],
136-
)
137-
138-
for cluster in clusters_to_monitor:
139-
release.podmonitor(
140-
name = cluster["name"],
141-
port = "metrics",
142-
path = "/probe",
143-
params = {
144-
"target": [cluster["endpoint"]],
145-
"auth_module": ["repl_lag_monitor"],
146-
},
147-
relabelings = [
148-
bp.relabel(
149-
sourcelabels = ["__param_target"],
150-
targetlabel = "cluster_endpoint",
151-
),
152-
bp.relabel(
153-
replacement = cluster["name"],
154-
targetlabel = "cluster_name",
103+
conf = release.config(
104+
name = name,
105+
filename = "production.yaml",
106+
contents = file("%s.yaml" % env()),
107+
tags = [],
108+
)
109+
110+
metrics_port = release.port(
111+
name = "metrics",
112+
port = 9187,
113+
container_port = 9187,
114+
)
115+
116+
container = release.container(
117+
name = "exporter",
118+
repository = repository,
119+
ports = [metrics_port],
120+
requests = requests,
121+
args = [
122+
"--config.file", "/mnt/secrets/postgres-exporter.yaml",
123+
],
124+
secret_files = [
125+
bp.secret_file(
126+
output_file = "postgres-exporter.yaml",
127+
secret_path = "secret/postgres-exporter/config",
128+
content_key = "current",
155129
),
156130
],
157131
)
158132

159-
release.deploy(
160-
name = fullname,
161-
container = container,
162-
config = conf,
163-
services = [svc],
164-
replicas = 1,
165-
service_account = service_account,
166-
iam_role = iam_role,
167-
node_specialization = node_specialization,
168-
autoscale = autoscaler,
169-
sidecars = sidecars,
170-
)
133+
svc = release.service(
134+
name = name,
135+
type = service_type,
136+
ports = [metrics_port],
137+
)
138+
139+
for cluster in clusters_to_monitor:
140+
release.podmonitor(
141+
name = cluster["name"],
142+
port = "metrics",
143+
path = "/probe",
144+
params = {
145+
"target": [cluster["endpoint"]],
146+
"auth_module": ["repl_lag_monitor"],
147+
},
148+
relabelings = [
149+
bp.relabel(
150+
sourcelabels = ["__param_target"],
151+
targetlabel = "cluster_endpoint",
152+
),
153+
bp.relabel(
154+
replacement = cluster["name"],
155+
targetlabel = "cluster_name",
156+
),
157+
],
158+
)
159+
160+
release.deploy(
161+
name = name,
162+
container = container,
163+
config = conf,
164+
services = [svc],
165+
replicas = 1,
166+
service_account = service_account,
167+
iam_role = iam_role,
168+
node_specialization = node_specialization,
169+
autoscale = autoscaler,
170+
sidecars = sidecars,
171+
)
172+
173+
if env() == Production:
174+
create_deployment(fullname, "prod-vpc-apps", clusters_to_monitor_legacy_vpc) # Giving the name of <fullname> causes it to be patched later on.
175+
create_deployment("k8s-vpc-"+fullname,"", clusters_to_monitor_k8s_vpc)
171176

172177
# This fixes an inconsistency in our naming scheme for node taints.
173178
# Remove when the starlark resource generator handles this issue gracefully.

0 commit comments

Comments
 (0)