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