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 }