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 }