@@ -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