Skip to content

Commit 80c8fec

Browse files
committed
initial commit
1 parent 9d4884d commit 80c8fec

File tree

1 file changed

+105
-86
lines changed

1 file changed

+105
-86
lines changed

infrared/manifest.star

Lines changed: 105 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -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",
@@ -76,98 +79,114 @@ clusters_to_monitor = [
7679
},
7780
]
7881

79-
if env() == Production:
80-
repository = "artifactory.build.ue1.snooguts.net/reddit-docker-prod/" + git_repo_name
81-
82-
iam_role = "arn:aws:iam::210246326331:role/prod-3.kubernetes.ue1.k8s-postgres-exporter-pod"
83-
service_account = "postgres-exporter"
82+
def create_deployment():
83+
if env() == Production:
84+
repository = "artifactory.build.ue1.snooguts.net/reddit-docker-prod/" + git_repo_name
85+
86+
iam_role = "arn:aws:iam::210246326331:role/prod-3.kubernetes.ue1.k8s-postgres-exporter-pod"
87+
service_account = "postgres-exporter"
88+
89+
requests = bp.resources(cpu = "200m", mem = "128Mi")
90+
autoscaler = bp.autoscale(
91+
cpu_utilization = 70,
92+
min_replicas = 1,
93+
max_replicas = 1,
94+
)
95+
else:
96+
config_file = "development.yaml"
97+
requests = bp.resources(cpu = "200m", mem = "128Mi")
98+
service_account = "snoodev"
99+
100+
release = bp.release(name = fullname)
101+
102+
conf = release.config(
103+
name = fullname,
104+
filename = "production.yaml",
105+
contents = file("%s.yaml" % env()),
106+
tags = [],
107+
)
84108

85-
requests = bp.resources(cpu = "200m", mem = "128Mi")
86-
autoscaler = bp.autoscale(
87-
cpu_utilization = 70,
88-
min_replicas = 1,
89-
max_replicas = 1,
109+
metrics_port = release.port(
110+
name = "metrics",
111+
port = 9187,
112+
container_port = 9187,
90113
)
91-
else:
92-
config_file = "development.yaml"
93-
requests = bp.resources(cpu = "200m", mem = "128Mi")
94-
service_account = "snoodev"
95-
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-
)
127-
128-
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",
114+
115+
container = release.container(
116+
name = "exporter",
117+
repository = repository,
118+
ports = [metrics_port],
119+
requests = requests,
120+
args = [
121+
"--config.file", "/mnt/secrets/postgres-exporter.yaml",
122+
],
123+
secret_files = [
124+
bp.secret_file(
125+
output_file = "postgres-exporter.yaml",
126+
secret_path = "secret/postgres-exporter/config",
127+
content_key = "current",
155128
),
156129
],
157130
)
158131

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-
)
132+
133+
if env() == Production:
134+
node_specialization = "prod-vpc-apps"
135+
136+
svc = release.service(
137+
name = fullname,
138+
type = service_type,
139+
ports = [metrics_port],
140+
)
141+
142+
for cluster in clusters_to_monitor:
143+
release.podmonitor(
144+
name = cluster["name"],
145+
port = "metrics",
146+
path = "/probe",
147+
params = {
148+
"target": [cluster["endpoint"]],
149+
"auth_module": ["repl_lag_monitor"],
150+
},
151+
relabelings = [
152+
bp.relabel(
153+
sourcelabels = ["__param_target"],
154+
targetlabel = "cluster_endpoint",
155+
),
156+
bp.relabel(
157+
replacement = cluster["name"],
158+
targetlabel = "cluster_name",
159+
),
160+
],
161+
)
162+
163+
release.deploy(
164+
name = fullname,
165+
container = container,
166+
config = conf,
167+
services = [svc],
168+
replicas = 1,
169+
service_account = service_account,
170+
iam_role = iam_role,
171+
node_specialization = node_specialization,
172+
autoscale = autoscaler,
173+
sidecars = sidecars,
174+
)
175+
176+
release.deploy(
177+
name = fullname,
178+
container = container,
179+
config = conf,
180+
services = [svc],
181+
replicas = 1,
182+
service_account = service_account,
183+
iam_role = iam_role,
184+
node_specialization = "",
185+
autoscale = autoscaler,
186+
sidecars = sidecars,
187+
)
188+
189+
create_deployment()
171190

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

0 commit comments

Comments
 (0)