diff 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
line wrap: on
line diff
--- a/next/create_all.py	Fri Apr 26 16:10:47 2024 -0700
+++ b/next/create_all.py	Fri Apr 26 15:35:23 2024 -0700
@@ -1,3 +1,4 @@
+from pathlib import Path
 from index_page import makeIndexHtml
 from output import affinityToNode, build, createIngress, createPv, createPvc, toJson, createSvc
 
@@ -178,39 +179,9 @@
         "apiVersion": "v1", "kind": "ConfigMap", "metadata": { "name": name },
         "data": {
             "index.html": html,
-(??)        }
-(??)    }))
-(??)(build / 'vmselect_svc.yaml').write_text(toJson({
-(??)    "apiVersion": "v1",
-(??)    "kind": "Service",
-(??)    "metadata": {
-(??)        "name": "next-victoriametrics-vmselect"
-(??)    },
-(??)    "spec": {
-(??)        "ports": [{
-(??)            "port": 80,
-(??)            "targetPort": 8481
-(??)        }],
-(??)        "selector": {
-(??)            "app": "next-victoriametrics-vmselect"
-(??)        }
-(??)    }
-(??)}
-(??)                                                # in vmui, set server url to
-(??)                                                # https://bigasterisk.com/m/next/vmselect/select/0/prometheus
-(??)                                               ))
-(??)
-(??)(build / 'vmselect_svc.yaml').write_text(
-(??)    toJson({
-(??)        "apiVersion": "networking.k8s.io/v1",
-(??)        "kind": "Ingress",
-(??)        "metadata": {
-(??)            "name": "next-victoriametrics",
-(??)            "annotations": {
-(??)                "cert-manager.io/cluster-issuer": "letsencrypt-prod",
-(??)                "ingress.pomerium.io/allow_public_unauthenticated_access": "false",
-(??)                "ingress.pomerium.io/pass_identity_headers": "true",
-(??)                "ingress.pomerium.io/preserve_host_header": "true",
+            "index.js": Path("index.js").read_text(),
+            "index.css": Path("index.css").read_text(),
+        }
     })) # yapf: disable
     
     (build / f'{objPrefix}-3index_deploy.yaml').write_text(
@@ -239,63 +210,46 @@
         })) # yapf: disable
     createSvc(f'{objPrefix}-3index', f'{objPrefix}-index', [{'port': 80, 'targetPort': 80}])
 
-(build / 'vmselect_svc.yaml').write_text(
-    toJson({
-        "apiVersion": "networking.k8s.io/v1",
-        "kind": "Ingress",
-        "metadata": {
-            "name": "next-victoriametrics",
-            "annotations": {
-                "cert-manager.io/cluster-issuer": "letsencrypt-prod",
-                "ingress.pomerium.io/allow_public_unauthenticated_access": "false",
-                "ingress.pomerium.io/pass_identity_headers": "true",
-                "ingress.pomerium.io/preserve_host_header": "true",
-            }
-        },
-        "spec": {
-            "ingressClassName": "pomerium",
-            "rules": [{
-                "host": "bigasterisk.com",
-                "http": {
-                    "paths": [{
-                        "pathType": "Prefix",
-                        "path": "/m/next/vmselect/",
-                        "backend": {
-                            "service": {
-                                "name": "next-victoriametrics-vmselect",
-                                "port": {
-                                    "number": 80
-                                }
-                            }
-                        }
-                    }, {
-                        "pathType": "Prefix",
-                        "path": "/m/next/vmagent/",
-                        "backend": {
-                            "service": {
-                                "name": "next-victoriametrics-vmagent",
-                                "port": {
-                                    "number": 80
-                                }
-                            }
-                        }
-                    }, {
-                        "pathType": "Prefix",
-                        "path": "/m/next/vmselect/",
-                        "backend": {
-                            "service": {
-                                "name": "next-victoriametrics-vmselect",
-                                "port": {
-                                    "number": 80
-                                }
-                            }
-                        }
-                    }]
-                }
-            }],
-            "tls": [{
-                "hosts": ["bigasterisk.com"],
-                "secretName": "bigasterisk.com-tls"
-            }]
-        }
-    }))
+
+def main():
+    tzArg = "-loggerTimezone=America/Los_Angeles"
+    objPrefix = "next-victoriametrics"  # prefix on all k8s object names
+    webRoot = "/m/next"
+    vmVersion = "v1.100.1"
+    webHost = 'bigasterisk.com'
+    pipelines = [
+        ('forever', '100y'),
+        ('recent', '90y'),
+    ]
+    storageSvcs = [createIngestPipeline(tzArg, vmVersion, webRoot, objPrefix, p, f'scrape_{p}', ret) for p, ret in pipelines]
+
+    selectPort = 8481
+    createVmselectDeploy(tzArg, vmVersion, webRoot, objPrefix, storageSvcs, selectPort)
+    createSvc(f'{objPrefix}-1vmselect', f"{objPrefix}-vmselect", [{"port": 80, "targetPort": selectPort}])
+
+    ingressPaths = [
+        { "pathType": "Prefix", "path": f"{webRoot}/",          "backend": { "service": { "name": f"{objPrefix}-index", "port": { "number": 80 } } } },
+        { "pathType": "Prefix", "path": f"{webRoot}/vmselect/", "backend": { "service": { "name": f"{objPrefix}-vmselect", "port": { "number": 80 } } } },
+    ]  # yapf: disable
+    for p, _ in pipelines:
+        ingressPaths.extend([
+            { "pathType": "Prefix", "path": f"{webRoot}/{p}/vmagent/",   "backend": { "service": { "name": f"{objPrefix}-{p}-vmagent",   "port": { "number": 80 } } } },
+            { "pathType": "Prefix", "path": f"{webRoot}/{p}/vminsert/",  "backend": { "service": { "name": f"{objPrefix}-{p}-vminsert",  "port": { "number": 80 } } } },
+            { "pathType": "Prefix", "path": f"{webRoot}/{p}/vmstorage/", "backend": { "service": { "name": f"{objPrefix}-{p}-vmstorage", "port": { "number": 80 } } } },
+        ]) # yapf: disable
+
+    policy = """\
+allow:
+    or: 
+        - { email: { is: "drewpca@gmail.com" }}
+        - { email: { is: "kelsimp@gmail.com" }}
+    """
+    createIngress(f'{objPrefix}-2ingress.yaml', objPrefix, policy, ingressPaths, webHost)
+    createIndex(objPrefix, webRoot, makeIndexHtml(objPrefix, webRoot, webHost))
+    # this should also emit a static html page and web server deploy that serves at webRoot and has a map of everything
+
+
+main()
+
+# in vmui, set server url to
+# https://bigasterisk.com{webRoot}/vmselect/select/0/prometheus