Mercurial > code > home > repos > victoriametrics
comparison next/create_all.py @ 57:b3addcd4486c
extract css/js to their own files
(patch is contaminated with some parameterization code)
author | drewp@bigasterisk.com |
---|---|
date | Fri, 26 Apr 2024 15:35:23 -0700 |
parents | a72c47973aa4 |
children | e3151ab43579 |
comparison
equal
deleted
inserted
replaced
56:a72c47973aa4 | 57:b3addcd4486c |
---|---|
1 from pathlib import Path | |
1 from index_page import makeIndexHtml | 2 from index_page import makeIndexHtml |
2 from output import affinityToNode, build, createIngress, createPv, createPvc, toJson, createSvc | 3 from output import affinityToNode, build, createIngress, createPv, createPvc, toJson, createSvc |
3 | 4 |
4 | 5 |
5 def createAgentDeploy(tzArg, vmVersion, pipelineWebRoot, agentFileName, agentName, agentPort, scrapeMapKey, insertName, pipelineName): | 6 def createAgentDeploy(tzArg, vmVersion, pipelineWebRoot, agentFileName, agentName, agentPort, scrapeMapKey, insertName, pipelineName): |
176 | 177 |
177 (build / f'{objPrefix}-3index_cmap.yaml').write_text(toJson({ | 178 (build / f'{objPrefix}-3index_cmap.yaml').write_text(toJson({ |
178 "apiVersion": "v1", "kind": "ConfigMap", "metadata": { "name": name }, | 179 "apiVersion": "v1", "kind": "ConfigMap", "metadata": { "name": name }, |
179 "data": { | 180 "data": { |
180 "index.html": html, | 181 "index.html": html, |
181 (??) } | 182 "index.js": Path("index.js").read_text(), |
182 (??) })) | 183 "index.css": Path("index.css").read_text(), |
183 (??)(build / 'vmselect_svc.yaml').write_text(toJson({ | 184 } |
184 (??) "apiVersion": "v1", | |
185 (??) "kind": "Service", | |
186 (??) "metadata": { | |
187 (??) "name": "next-victoriametrics-vmselect" | |
188 (??) }, | |
189 (??) "spec": { | |
190 (??) "ports": [{ | |
191 (??) "port": 80, | |
192 (??) "targetPort": 8481 | |
193 (??) }], | |
194 (??) "selector": { | |
195 (??) "app": "next-victoriametrics-vmselect" | |
196 (??) } | |
197 (??) } | |
198 (??)} | |
199 (??) # in vmui, set server url to | |
200 (??) # https://bigasterisk.com/m/next/vmselect/select/0/prometheus | |
201 (??) )) | |
202 (??) | |
203 (??)(build / 'vmselect_svc.yaml').write_text( | |
204 (??) toJson({ | |
205 (??) "apiVersion": "networking.k8s.io/v1", | |
206 (??) "kind": "Ingress", | |
207 (??) "metadata": { | |
208 (??) "name": "next-victoriametrics", | |
209 (??) "annotations": { | |
210 (??) "cert-manager.io/cluster-issuer": "letsencrypt-prod", | |
211 (??) "ingress.pomerium.io/allow_public_unauthenticated_access": "false", | |
212 (??) "ingress.pomerium.io/pass_identity_headers": "true", | |
213 (??) "ingress.pomerium.io/preserve_host_header": "true", | |
214 })) # yapf: disable | 185 })) # yapf: disable |
215 | 186 |
216 (build / f'{objPrefix}-3index_deploy.yaml').write_text( | 187 (build / f'{objPrefix}-3index_deploy.yaml').write_text( |
217 toJson({ | 188 toJson({ |
218 "apiVersion": "apps/v1", "kind": "Deployment", "metadata": { "name": name }, | 189 "apiVersion": "apps/v1", "kind": "Deployment", "metadata": { "name": name }, |
237 } | 208 } |
238 } | 209 } |
239 })) # yapf: disable | 210 })) # yapf: disable |
240 createSvc(f'{objPrefix}-3index', f'{objPrefix}-index', [{'port': 80, 'targetPort': 80}]) | 211 createSvc(f'{objPrefix}-3index', f'{objPrefix}-index', [{'port': 80, 'targetPort': 80}]) |
241 | 212 |
242 (build / 'vmselect_svc.yaml').write_text( | 213 |
243 toJson({ | 214 def main(): |
244 "apiVersion": "networking.k8s.io/v1", | 215 tzArg = "-loggerTimezone=America/Los_Angeles" |
245 "kind": "Ingress", | 216 objPrefix = "next-victoriametrics" # prefix on all k8s object names |
246 "metadata": { | 217 webRoot = "/m/next" |
247 "name": "next-victoriametrics", | 218 vmVersion = "v1.100.1" |
248 "annotations": { | 219 webHost = 'bigasterisk.com' |
249 "cert-manager.io/cluster-issuer": "letsencrypt-prod", | 220 pipelines = [ |
250 "ingress.pomerium.io/allow_public_unauthenticated_access": "false", | 221 ('forever', '100y'), |
251 "ingress.pomerium.io/pass_identity_headers": "true", | 222 ('recent', '90y'), |
252 "ingress.pomerium.io/preserve_host_header": "true", | 223 ] |
253 } | 224 storageSvcs = [createIngestPipeline(tzArg, vmVersion, webRoot, objPrefix, p, f'scrape_{p}', ret) for p, ret in pipelines] |
254 }, | 225 |
255 "spec": { | 226 selectPort = 8481 |
256 "ingressClassName": "pomerium", | 227 createVmselectDeploy(tzArg, vmVersion, webRoot, objPrefix, storageSvcs, selectPort) |
257 "rules": [{ | 228 createSvc(f'{objPrefix}-1vmselect', f"{objPrefix}-vmselect", [{"port": 80, "targetPort": selectPort}]) |
258 "host": "bigasterisk.com", | 229 |
259 "http": { | 230 ingressPaths = [ |
260 "paths": [{ | 231 { "pathType": "Prefix", "path": f"{webRoot}/", "backend": { "service": { "name": f"{objPrefix}-index", "port": { "number": 80 } } } }, |
261 "pathType": "Prefix", | 232 { "pathType": "Prefix", "path": f"{webRoot}/vmselect/", "backend": { "service": { "name": f"{objPrefix}-vmselect", "port": { "number": 80 } } } }, |
262 "path": "/m/next/vmselect/", | 233 ] # yapf: disable |
263 "backend": { | 234 for p, _ in pipelines: |
264 "service": { | 235 ingressPaths.extend([ |
265 "name": "next-victoriametrics-vmselect", | 236 { "pathType": "Prefix", "path": f"{webRoot}/{p}/vmagent/", "backend": { "service": { "name": f"{objPrefix}-{p}-vmagent", "port": { "number": 80 } } } }, |
266 "port": { | 237 { "pathType": "Prefix", "path": f"{webRoot}/{p}/vminsert/", "backend": { "service": { "name": f"{objPrefix}-{p}-vminsert", "port": { "number": 80 } } } }, |
267 "number": 80 | 238 { "pathType": "Prefix", "path": f"{webRoot}/{p}/vmstorage/", "backend": { "service": { "name": f"{objPrefix}-{p}-vmstorage", "port": { "number": 80 } } } }, |
268 } | 239 ]) # yapf: disable |
269 } | 240 |
270 } | 241 policy = """\ |
271 }, { | 242 allow: |
272 "pathType": "Prefix", | 243 or: |
273 "path": "/m/next/vmagent/", | 244 - { email: { is: "drewpca@gmail.com" }} |
274 "backend": { | 245 - { email: { is: "kelsimp@gmail.com" }} |
275 "service": { | 246 """ |
276 "name": "next-victoriametrics-vmagent", | 247 createIngress(f'{objPrefix}-2ingress.yaml', objPrefix, policy, ingressPaths, webHost) |
277 "port": { | 248 createIndex(objPrefix, webRoot, makeIndexHtml(objPrefix, webRoot, webHost)) |
278 "number": 80 | 249 # this should also emit a static html page and web server deploy that serves at webRoot and has a map of everything |
279 } | 250 |
280 } | 251 |
281 } | 252 main() |
282 }, { | 253 |
283 "pathType": "Prefix", | 254 # in vmui, set server url to |
284 "path": "/m/next/vmselect/", | 255 # https://bigasterisk.com{webRoot}/vmselect/select/0/prometheus |
285 "backend": { | |
286 "service": { | |
287 "name": "next-victoriametrics-vmselect", | |
288 "port": { | |
289 "number": 80 | |
290 } | |
291 } | |
292 } | |
293 }] | |
294 } | |
295 }], | |
296 "tls": [{ | |
297 "hosts": ["bigasterisk.com"], | |
298 "secretName": "bigasterisk.com-tls" | |
299 }] | |
300 } | |
301 })) |