annotate create_k8s.py @ 68:c5e98d891638

remove 'next' prefix
author drewp@bigasterisk.com
date Fri, 03 May 2024 11:32:24 -0700
parents adde35eb4773
children 6a021aa7b4be
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
57
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
1 from pathlib import Path
56
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
2 from index_page import makeIndexHtml
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
3 from output import affinityToNode, build, createIngress, createPv, createPvc, toJson, createSvc
55
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
4
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
5
60
e3151ab43579 moving scrape target configs in py, and into separate retention classes
drewp@bigasterisk.com
parents: 57
diff changeset
6 def createAgentDeploy(tzArg, vmVersion, pipelineWebRoot, agentFileName, agentName, agentPort, scrapeMapKey, insertName, objPrefix):
56
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
7 (build / f'{agentFileName}_deploy.yaml').write_text(
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
8 toJson({
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
9 "apiVersion": "apps/v1", "kind": "Deployment", "metadata": { "name": agentName },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
10 "spec": {
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
11 "replicas": 1, "strategy": { "type": "Recreate" }, "selector": { "matchLabels": { "app": agentName } },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
12 "template": {
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
13 "metadata": {
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
14 "labels": { "app": agentName },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
15 "annotations": { "prometheus.io/scrape": "true", "prometheus.io/path": f"{pipelineWebRoot}/vmagent/metrics", "prometheus.io/port": "80" }
55
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
16 },
56
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
17 "spec": {
60
e3151ab43579 moving scrape target configs in py, and into separate retention classes
drewp@bigasterisk.com
parents: 57
diff changeset
18 "volumes": [{ "name": "config", "configMap": { "name": f"{objPrefix}-config" } }],
56
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
19 "serviceAccountName": "victoriametrics",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
20 "containers": [{
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
21 "name": "vmagent",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
22 "image": f"docker.io/victoriametrics/vmagent:{vmVersion}",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
23 "imagePullPolicy": "IfNotPresent",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
24 "args": [
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
25 f"-http.pathPrefix={pipelineWebRoot}/vmagent/",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
26 tzArg,
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
27 f"-promscrape.config=/local/config/{scrapeMapKey}",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
28 "-promscrape.configCheckInterval=5s",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
29 "-sortLabels",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
30 f"-remoteWrite.url=http://{insertName}{pipelineWebRoot}/vminsert/insert/0/prometheus/api/v1/write",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
31 "-remoteWrite.showURL",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
32 ],
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
33 "ports": [{ "containerPort": agentPort }],
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
34 "volumeMounts": [{ "name": "config", "mountPath": "/local/config" }]
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
35 }]
55
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
36 }
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
37 }
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
38 }
56
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
39 })) # yapf: disable
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
40
55
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
41
56
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
42 def createInsertDeploy(tzArg, vmVersion, pipelineWebRoot, insertName, storageName, insertFileName, insertPort):
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
43 (build / f'{insertFileName}_deploy.yaml').write_text(
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
44 toJson({
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
45 "apiVersion": "apps/v1", "kind": "Deployment", "metadata": { "name": insertName },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
46 "spec": {
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
47 "replicas": 1, "strategy": { "type": "Recreate" }, "selector": { "matchLabels": { "app": insertName } },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
48 "template": {
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
49 "metadata": {
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
50 "labels": { "app": insertName },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
51 "annotations": { "prometheus.io/scrape": "true", "prometheus.io/path": "/m/metrics", "prometheus.io/port": "80" }
55
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
52 },
56
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
53 "spec": {
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
54 "serviceAccountName": "victoriametrics",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
55 "containers": [{
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
56 "name": "vminsert",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
57 "image": f"docker.io/victoriametrics/vminsert:{vmVersion}-cluster",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
58 "imagePullPolicy": "IfNotPresent",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
59 "args": [
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
60 f"-http.pathPrefix={pipelineWebRoot}/vminsert/",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
61 tzArg,
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
62 f"-storageNode={storageName}",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
63 ],
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
64 "ports": [{ "containerPort": insertPort }]
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
65 }]
55
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
66 }
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
67 }
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
68 }
56
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
69 })) # yapf: disable
55
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
70
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
71
56
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
72 def createStorageDeploy(tzArg, vmVersion, pipelineWebRoot, pipelineName, retention, storageName, storageFileName, localPvHost, volName, storageInsertPort, storageSelectPort):
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
73 (build / f'{storageFileName}_2deploy.yaml').write_text(
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
74 toJson({
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
75 "apiVersion": "apps/v1", "kind": "Deployment", "metadata": { "name": storageName },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
76 "spec": {
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
77 "replicas": 1, "strategy": { "type": "Recreate" }, "selector": { "matchLabels": { "app": storageName } },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
78 "template": {
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
79 "metadata": {
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
80 "labels": { "app": storageName },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
81 "annotations": { "prometheus.io/scrape": "true", "prometheus.io/path": "/m/vmstorage/metrics", "prometheus.io/port": "80" }
55
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
82 },
56
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
83 "spec": {
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
84 "volumes": [{ "name": "data", "persistentVolumeClaim": { "claimName": volName } }],
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
85 "serviceAccountName": "victoriametrics",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
86 "containers": [{
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
87 "name": "vmstorage",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
88 "image": f"docker.io/victoriametrics/vmstorage:{vmVersion}-cluster",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
89 "imagePullPolicy": "IfNotPresent",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
90 "args": [
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
91 f"-http.pathPrefix={pipelineWebRoot}/vmstorage/",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
92 tzArg,
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
93 f"-retentionPeriod={retention}",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
94 f"-storageDataPath=/data/{pipelineName}",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
95 ],
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
96 "ports": [
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
97 { "containerPort": 8482, "name": "http" },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
98 { "containerPort": storageInsertPort, "name": "vminsert" },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
99 { "containerPort": storageSelectPort, "name": "vmselect" },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
100 ],
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
101 "volumeMounts": [{ "name": "data", "mountPath": "/data" }]
55
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
102 }],
56
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
103 "affinity": affinityToNode(localPvHost)
55
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
104 }
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
105 }
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
106 }
56
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
107 })) # yapf: disable
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
108
55
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
109
56
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
110 def createVmselectDeploy(tzArg, vmVersion, webRoot, objPrefix, storageSvcs, selectPort):
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
111 name = f"{objPrefix}-vmselect"
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
112 (build / f'{objPrefix}-1vmselect_deploy.yaml').write_text(
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
113 toJson({
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
114 "apiVersion": "apps/v1", "kind": "Deployment", "metadata": { "name": name },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
115 "spec": {
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
116 "replicas": 1,
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
117 "strategy": { "type": "Recreate" },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
118 "selector": { "matchLabels": { "app": name } },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
119 "template": {
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
120 "metadata": {
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
121 "labels": { "app": name },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
122 "annotations": { "prometheus.io/scrape": "true", "prometheus.io/path": "/m/metrics", "prometheus.io/port": "80" }
55
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
123 },
56
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
124 "spec": {
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
125 "serviceAccountName": "victoriametrics",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
126 "containers": [{
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
127 "name": "vmselect", "image": f"docker.io/victoriametrics/vmselect:{vmVersion}-cluster", "imagePullPolicy": "IfNotPresent",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
128 "args": [
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
129 f"-http.pathPrefix={webRoot}/vmselect/",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
130 tzArg,
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
131 ] + [f"-storageNode={n}" for n in storageSvcs],
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
132 "ports": [{ "containerPort": selectPort }]
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
133 }]
55
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
134 }
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
135 }
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
136 }
56
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
137 })) # yapf: disable
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
138
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
139 def createIngestPipeline(tzArg, vmVersion, webRoot, objPrefix, pipelineName, scrapeMapKey, retention):
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
140 agentName = f"{objPrefix}-{pipelineName}-vmagent"
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
141 insertName = f"{objPrefix}-{pipelineName}-vminsert"
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
142 storageName = f"{objPrefix}-{pipelineName}-vmstorage"
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
143
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
144 agentFileName = f"{objPrefix}-0{pipelineName}-0vmagent"
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
145 insertFileName = f"{objPrefix}-0{pipelineName}-1vminsert"
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
146 storageFileName = f"{objPrefix}-0{pipelineName}-2vmstorage"
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
147
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
148 localPvHost = "ditto"
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
149 insertPort = 8480
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
150 agentPort = 8429
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
151 storageInsertPort = 8400
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
152 storageSelectPort = 8401
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
153 volName = f"{objPrefix}-data-{pipelineName}"
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
154 request = "50Gi"
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
155 pipelineWebRoot = f'{webRoot}/{pipelineName}'
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
156
60
e3151ab43579 moving scrape target configs in py, and into separate retention classes
drewp@bigasterisk.com
parents: 57
diff changeset
157 createAgentDeploy(tzArg, vmVersion, pipelineWebRoot, agentFileName, agentName, agentPort, scrapeMapKey, insertName, objPrefix)
56
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
158 createInsertDeploy(tzArg, vmVersion, pipelineWebRoot, insertName, storageName, insertFileName, insertPort)
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
159 createPv(storageFileName, volName, request)
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
160 createPvc(storageFileName, volName, request)
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
161 createStorageDeploy(tzArg, vmVersion, pipelineWebRoot, pipelineName, retention, storageName, storageFileName, localPvHost, volName, storageInsertPort, storageSelectPort)
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
162
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
163 createSvc(agentFileName, agentName, [{"port": 80, "targetPort": agentPort}])
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
164 createSvc(insertFileName, insertName, [{"port": 80, "targetPort": insertPort}])
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
165 createSvc(storageFileName,storageName, [
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
166 {"port": 80, "targetPort": "http", "name": "http"},
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
167 {"port": storageInsertPort, "targetPort": "vminsert", "name": "vminsert"},
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
168 {"port": storageSelectPort, "targetPort": "vmselect", "name": "vmselect"},
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
169 ]) # yapf: disable
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
170
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
171 return storageName
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
172
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
173
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
174 def createIndex(objPrefix, webRoot, html):
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
175 name = f'{objPrefix}-index'
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
176 httpServeRoot = '/opt/html'
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
177
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
178 (build / f'{objPrefix}-3index_cmap.yaml').write_text(toJson({
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
179 "apiVersion": "v1", "kind": "ConfigMap", "metadata": { "name": name },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
180 "data": {
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
181 "index.html": html,
57
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
182 "index.js": Path("index.js").read_text(),
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
183 "index.css": Path("index.css").read_text(),
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
184 }
56
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
185 })) # yapf: disable
62
8134cd480817 make next/ a complete standalone setup dir- no deps on ./
drewp@bigasterisk.com
parents: 60
diff changeset
186
56
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
187 (build / f'{objPrefix}-3index_deploy.yaml').write_text(
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
188 toJson({
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
189 "apiVersion": "apps/v1", "kind": "Deployment", "metadata": { "name": name },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
190 "spec": {
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
191 "replicas": 1,
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
192 "selector": { "matchLabels": { "app": name } },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
193 "template": {
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
194 "metadata": { "labels": { "app": name } },
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
195 "spec": {
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
196 "containers": [{
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
197 "name": "webserver", "image": "docker.io/joseluisq/static-web-server", "imagePullPolicy": "IfNotPresent",
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
198 "args": [
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
199 f'--root={httpServeRoot}',
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
200 '--directory-listing=true',
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
201 '--experimental-metrics=true',
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
202 ],
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
203 "ports": [{ "containerPort": 80 }],
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
204 "volumeMounts": [{ "name": "html", "mountPath": f"{httpServeRoot}{webRoot}" }]
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
205 }],
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
206 "volumes": [{ "name": "html", "configMap": { "name": name, "defaultMode": 444 } }]
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
207 }
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
208 }
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
209 }
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
210 })) # yapf: disable
a72c47973aa4 parameterize the python version
drewp@bigasterisk.com
parents: 55
diff changeset
211 createSvc(f'{objPrefix}-3index', f'{objPrefix}-index', [{'port': 80, 'targetPort': 80}])
55
24f4ec319f98 yaml to py
drewp@bigasterisk.com
parents:
diff changeset
212
57
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
213
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
214 def main():
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
215 tzArg = "-loggerTimezone=America/Los_Angeles"
68
c5e98d891638 remove 'next' prefix
drewp@bigasterisk.com
parents: 67
diff changeset
216 objPrefix = "victoriametrics" # prefix on all k8s object names
c5e98d891638 remove 'next' prefix
drewp@bigasterisk.com
parents: 67
diff changeset
217 webRoot = "/m"
57
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
218 vmVersion = "v1.100.1"
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
219 webHost = 'bigasterisk.com'
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
220 pipelines = [
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
221 ('forever', '100y'),
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
222 ('recent', '90y'),
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
223 ]
60
e3151ab43579 moving scrape target configs in py, and into separate retention classes
drewp@bigasterisk.com
parents: 57
diff changeset
224 storageSvcs = [createIngestPipeline(tzArg, vmVersion, webRoot, objPrefix, p, f'scrape_{p}.yaml', ret) for p, ret in pipelines]
57
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
225
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
226 selectPort = 8481
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
227 createVmselectDeploy(tzArg, vmVersion, webRoot, objPrefix, storageSvcs, selectPort)
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
228 createSvc(f'{objPrefix}-1vmselect', f"{objPrefix}-vmselect", [{"port": 80, "targetPort": selectPort}])
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
229
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
230 ingressPaths = [
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
231 { "pathType": "Prefix", "path": f"{webRoot}/", "backend": { "service": { "name": f"{objPrefix}-index", "port": { "number": 80 } } } },
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
232 { "pathType": "Prefix", "path": f"{webRoot}/vmselect/", "backend": { "service": { "name": f"{objPrefix}-vmselect", "port": { "number": 80 } } } },
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
233 ] # yapf: disable
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
234 for p, _ in pipelines:
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
235 ingressPaths.extend([
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
236 { "pathType": "Prefix", "path": f"{webRoot}/{p}/vmagent/", "backend": { "service": { "name": f"{objPrefix}-{p}-vmagent", "port": { "number": 80 } } } },
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
237 { "pathType": "Prefix", "path": f"{webRoot}/{p}/vminsert/", "backend": { "service": { "name": f"{objPrefix}-{p}-vminsert", "port": { "number": 80 } } } },
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
238 { "pathType": "Prefix", "path": f"{webRoot}/{p}/vmstorage/", "backend": { "service": { "name": f"{objPrefix}-{p}-vmstorage", "port": { "number": 80 } } } },
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
239 ]) # yapf: disable
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
240
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
241 policy = """\
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
242 allow:
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
243 or:
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
244 - { email: { is: "drewpca@gmail.com" }}
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
245 - { email: { is: "kelsimp@gmail.com" }}
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
246 """
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
247 createIngress(f'{objPrefix}-2ingress.yaml', objPrefix, policy, ingressPaths, webHost)
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
248 createIndex(objPrefix, webRoot, makeIndexHtml(objPrefix, webRoot, webHost))
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
249
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
250
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
251 main()
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
252
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
253 # in vmui, set server url to
b3addcd4486c extract css/js to their own files
drewp@bigasterisk.com
parents: 56
diff changeset
254 # https://bigasterisk.com{webRoot}/vmselect/select/0/prometheus