Mercurial > code > home > repos > victoriametrics
comparison 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 |
comparison
equal
deleted
inserted
replaced
55:24f4ec319f98 | 56:a72c47973aa4 |
---|---|
1 import json | |
2 from pathlib import Path | |
3 | |
4 build = Path('build') | |
5 | |
6 | |
7 def toJson(d): | |
8 return json.dumps(d, sort_keys=True, indent=2) | |
9 | |
10 | |
11 def createSvc(filename, name, ports): | |
12 (build / f'{filename}_svc.yaml').write_text(toJson({ | |
13 "apiVersion": "v1", | |
14 "kind": "Service", | |
15 "metadata": { | |
16 "name": name | |
17 }, | |
18 "spec": { | |
19 "ports": ports, | |
20 "selector": { | |
21 "app": name | |
22 } | |
23 }, | |
24 })) | |
25 | |
26 | |
27 def createIngress(filename, objName, policy, ingressPaths, host): | |
28 | |
29 (build / filename).write_text( | |
30 toJson({ | |
31 "apiVersion": "networking.k8s.io/v1", | |
32 "kind": "Ingress", | |
33 "metadata": { | |
34 "name": objName, | |
35 "annotations": { | |
36 "cert-manager.io/cluster-issuer": "letsencrypt-prod", | |
37 "ingress.pomerium.io/allow_public_unauthenticated_access": "false", | |
38 "ingress.pomerium.io/pass_identity_headers": "true", | |
39 "ingress.pomerium.io/preserve_host_header": "true", | |
40 "ingress.pomerium.io/policy": policy, | |
41 } | |
42 }, | |
43 "spec": { | |
44 "ingressClassName": "pomerium", | |
45 "rules": [{ | |
46 "host": host, | |
47 "http": { | |
48 "paths": ingressPaths | |
49 } | |
50 },], | |
51 "tls": [{ | |
52 "hosts": [host], | |
53 "secretName": f"{host}-tls" | |
54 }] | |
55 } | |
56 })) | |
57 | |
58 | |
59 def createPv(storageFileName, volName, request): | |
60 (build / f'{storageFileName}_0pv.yaml').write_text( | |
61 toJson({ | |
62 "apiVersion": "v1", | |
63 "kind": "PersistentVolume", | |
64 "metadata": { | |
65 "name": volName, | |
66 "labels": { | |
67 "type": "local" | |
68 } | |
69 }, | |
70 "spec": { | |
71 "storageClassName": "manual", | |
72 "hostPath": { | |
73 "path": f"/opt/{volName}" | |
74 }, | |
75 "capacity": { | |
76 "storage": request | |
77 }, | |
78 "accessModes": ["ReadWriteMany"], | |
79 "persistentVolumeReclaimPolicy": "Retain", | |
80 "claimRef": { | |
81 "namespace": "default", | |
82 "name": volName | |
83 } | |
84 } | |
85 })) | |
86 | |
87 | |
88 def createPvc(storageFileName, volName, request): | |
89 (build / f'{storageFileName}_1pvc.yaml').write_text(toJson({ | |
90 "apiVersion": "v1", | |
91 "kind": "PersistentVolumeClaim", | |
92 "metadata": { | |
93 "name": volName, | |
94 }, | |
95 "spec": { | |
96 "storageClassName": "", | |
97 "volumeName": volName, | |
98 "accessModes": ["ReadWriteMany"], | |
99 "resources": { | |
100 "requests": { | |
101 "storage": request | |
102 } | |
103 } | |
104 }, | |
105 })) | |
106 | |
107 | |
108 def affinityToNode(node): | |
109 return { | |
110 "nodeAffinity": { | |
111 "requiredDuringSchedulingIgnoredDuringExecution": { | |
112 "nodeSelectorTerms": [{ | |
113 "matchExpressions": [{ | |
114 "key": "kubernetes.io/hostname", | |
115 "operator": "In", | |
116 "values": [node], | |
117 }], | |
118 }], | |
119 }, | |
120 } | |
121 } |