Mercurial > code > home > repos > victoriametrics
view output.py @ 67:adde35eb4773
collapse ./next to ./
author | drewp@bigasterisk.com |
---|---|
date | Fri, 03 May 2024 11:21:08 -0700 |
parents | next/output.py@8134cd480817 |
children |
line wrap: on
line source
import json from pathlib import Path build = Path('build/k8s_config') build.mkdir(parents=True, exist_ok=True) 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], }], }], }, } }