diff next/output.py @ 56:a72c47973aa4

parameterize the python version
author drewp@bigasterisk.com
date Fri, 26 Apr 2024 16:10:47 -0700
parents
children 8134cd480817
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/next/output.py	Fri Apr 26 16:10:47 2024 -0700
@@ -0,0 +1,121 @@
+import json
+from pathlib import Path
+
+build = Path('build')
+
+
+def toJson(d):
+    return json.dumps(d, sort_keys=True, indent=2)
+
+
+def createSvc(filename, name, ports):
+    (build / f'{filename}_svc.yaml').write_text(toJson({
+        "apiVersion": "v1",
+        "kind": "Service",
+        "metadata": {
+            "name": name
+        },
+        "spec": {
+            "ports": ports,
+            "selector": {
+                "app": name
+            }
+        },
+    }))
+
+
+def createIngress(filename, objName, policy, ingressPaths, host):
+
+    (build / filename).write_text(
+        toJson({
+            "apiVersion": "networking.k8s.io/v1",
+            "kind": "Ingress",
+            "metadata": {
+                "name": objName,
+                "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",
+                    "ingress.pomerium.io/policy": policy,
+                }
+            },
+            "spec": {
+                "ingressClassName": "pomerium",
+                "rules": [{
+                    "host": host,
+                    "http": {
+                        "paths": ingressPaths
+                    }
+                },],
+                "tls": [{
+                    "hosts": [host],
+                    "secretName": f"{host}-tls"
+                }]
+            }
+        }))
+
+
+def createPv(storageFileName, volName, request):
+    (build / f'{storageFileName}_0pv.yaml').write_text(
+        toJson({
+            "apiVersion": "v1",
+            "kind": "PersistentVolume",
+            "metadata": {
+                "name": volName,
+                "labels": {
+                    "type": "local"
+                }
+            },
+            "spec": {
+                "storageClassName": "manual",
+                "hostPath": {
+                    "path": f"/opt/{volName}"
+                },
+                "capacity": {
+                    "storage": request
+                },
+                "accessModes": ["ReadWriteMany"],
+                "persistentVolumeReclaimPolicy": "Retain",
+                "claimRef": {
+                    "namespace": "default",
+                    "name": volName
+                }
+            }
+        }))
+
+
+def createPvc(storageFileName, volName, request):
+    (build / f'{storageFileName}_1pvc.yaml').write_text(toJson({
+        "apiVersion": "v1",
+        "kind": "PersistentVolumeClaim",
+        "metadata": {
+            "name": volName,
+        },
+        "spec": {
+            "storageClassName": "",
+            "volumeName": volName,
+            "accessModes": ["ReadWriteMany"],
+            "resources": {
+                "requests": {
+                    "storage": request
+                }
+            }
+        },
+    }))
+
+
+def affinityToNode(node):
+    return {
+        "nodeAffinity": {
+            "requiredDuringSchedulingIgnoredDuringExecution": {
+                "nodeSelectorTerms": [{
+                    "matchExpressions": [{
+                        "key": "kubernetes.io/hostname",
+                        "operator": "In",
+                        "values": [node],
+                    }],
+                }],
+            },
+        }
+    }