@@ -17,7 +17,7 @@ sidecars = []
1717iam_role = ""
1818repository = "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