changeset 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 0064c490c33d
files next/create_all.py next/index.css next/index.js next/index_page.py
diffstat 4 files changed, 63 insertions(+), 106 deletions(-) [+]
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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/next/index.css	Fri Apr 26 15:35:23 2024 -0700
@@ -0,0 +1,8 @@
+section {
+  margin-left: 2em;
+}
+
+h1,
+h2 {
+  border-top: 1px solid lightgray;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/next/index.js	Fri Apr 26 15:35:23 2024 -0700
@@ -0,0 +1,4 @@
+function init(serverUrl) {
+    // this defaults to something incorrect, so we fix it hopefully before you go to vmui
+    localStorage.setItem('SERVER_URL', JSON.stringify({ value: serverUrl }));
+}
\ No newline at end of file
--- a/next/index_page.py	Fri Apr 26 16:10:47 2024 -0700
+++ b/next/index_page.py	Fri Apr 26 15:35:23 2024 -0700
@@ -1,17 +1,9 @@
-
-
 def makeIndexHtml(objPrefix, webRoot, webHost):
-    unquotedJs = '''
-        localStorage.setItem('SERVER_URL', JSON.stringify({value: serverUrl}));
-    '''
     return f"""<!DOCTYPE html>
     <html>
         <head>
           <title>{objPrefix}</title>
-          <style>
-            section {{ margin-left: 2em; }}
-            h1, h2 {{ border-top: 1px solid lightgray; }}
-          </style>
+          <link rel="stylesheet" href="index.css">
         </head>
         <body>
             <h1>{objPrefix}</h1>
@@ -73,10 +65,9 @@
               </table>
             </section>  
               
+            <script src="index.js"></script>
             <script> 
-              // this defaults to something incorrect, so we fix it hopefully before you go to vmui
-              let serverUrl = "https://{webHost}{webRoot}/vmselect/select/0/prometheus";
-              {unquotedJs} 
+              init("https://{webHost}{webRoot}/vmselect/select/0/prometheus");
             </script>
         </body>
-    </html>"""
\ No newline at end of file
+    </html>"""