main
json 332 lines 9.84 KB
Raw
1 {
2 "$schema": "http://json-schema.org/schema#",
3 "type": "object",
4 "properties": {
5 "image": {
6 "type": "object",
7 "properties": {
8 "repository": {
9 "type": "string"
10 },
11 "tag": {
12 "type": "string"
13 },
14 "command": {
15 "type": "array",
16 "items": {
17 "type": "string"
18 }
19 }
20 },
21 "required": [
22 "command",
23 "repository",
24 "tag"
25 ]
26 },
27 "containerPort": {
28 "type": "integer"
29 },
30 "serviceName": {
31 "type": [
32 "null",
33 "string"
34 ]
35 },
36 "servicePort": {
37 "type": "integer"
38 },
39 "extraPorts": {
40 "type": "array"
41 },
42 "replicaCount": {
43 "type": "integer"
44 },
45 "deploymentStrategy": {
46 "type": "object"
47 },
48 "resources": {
49 "type": "object",
50 "properties": {
51 "requests": {
52 "type": "object",
53 "properties": {
54 "cpu": {
55 "type": "integer"
56 },
57 "memory": {
58 "type": "string"
59 },
60 "nvidia.com/gpu": {
61 "type": "integer"
62 }
63 },
64 "required": [
65 "cpu",
66 "memory",
67 "nvidia.com/gpu"
68 ]
69 },
70 "limits": {
71 "type": "object",
72 "properties": {
73 "cpu": {
74 "type": "integer"
75 },
76 "memory": {
77 "type": "string"
78 },
79 "nvidia.com/gpu": {
80 "type": "integer"
81 }
82 },
83 "required": [
84 "cpu",
85 "memory",
86 "nvidia.com/gpu"
87 ]
88 }
89 },
90 "required": [
91 "limits",
92 "requests"
93 ]
94 },
95 "gpuModels": {
96 "type": "array",
97 "items": {
98 "type": "string"
99 }
100 },
101 "autoscaling": {
102 "type": "object",
103 "properties": {
104 "enabled": {
105 "type": "boolean"
106 },
107 "minReplicas": {
108 "type": "integer"
109 },
110 "maxReplicas": {
111 "type": "integer"
112 },
113 "targetCPUUtilizationPercentage": {
114 "type": "integer"
115 }
116 },
117 "required": [
118 "enabled",
119 "maxReplicas",
120 "minReplicas",
121 "targetCPUUtilizationPercentage"
122 ]
123 },
124 "configs": {
125 "type": "object"
126 },
127 "secrets": {
128 "type": "object"
129 },
130 "externalConfigs": {
131 "type": "array"
132 },
133 "customObjects": {
134 "type": "array"
135 },
136 "maxUnavailablePodDisruptionBudget": {
137 "type": "string"
138 },
139 "extraInit": {
140 "type": "object",
141 "properties": {
142 "modelDownload": {
143 "type": "object",
144 "properties": {
145 "enabled": {
146 "type": "boolean"
147 },
148 "image": {
149 "type": "object",
150 "properties": {
151 "repository": {
152 "type": "string"
153 },
154 "tag": {
155 "type": "string"
156 },
157 "pullPolicy": {
158 "type": "string"
159 }
160 },
161 "required": ["repository", "tag", "pullPolicy"]
162 },
163 "waitContainer": {
164 "type": "object",
165 "properties": {
166 "command": {
167 "type": "array",
168 "items": {"type": "string"}
169 },
170 "args": {
171 "type": "array",
172 "items": {"type": "string"}
173 },
174 "env": {
175 "type": "array",
176 "items": {"type": "object"}
177 }
178 },
179 "required": ["command", "args"]
180 },
181 "downloadJob": {
182 "type": "object",
183 "properties": {
184 "command": {
185 "type": "array",
186 "items": {"type": "string"}
187 },
188 "args": {
189 "type": "array",
190 "items": {"type": "string"}
191 },
192 "env": {
193 "type": "array",
194 "items": {"type": "object"}
195 }
196 },
197 "required": ["command", "args"]
198 }
199 },
200 "required": ["enabled", "image", "waitContainer", "downloadJob"]
201 },
202 "initContainers": {
203 "type": "array",
204 "items": {"type": "object"}
205 },
206 "s3modelpath": {
207 "type": "string"
208 },
209 "pvcStorage": {
210 "type": "string"
211 },
212 "awsEc2MetadataDisabled": {
213 "type": "boolean"
214 }
215 },
216 "required": [
217 "modelDownload",
218 "initContainers",
219 "pvcStorage"
220 ]
221 },
222 "extraContainers": {
223 "type": "array"
224 },
225 "readinessProbe": {
226 "type": "object",
227 "properties": {
228 "initialDelaySeconds": {
229 "type": "integer"
230 },
231 "periodSeconds": {
232 "type": "integer"
233 },
234 "failureThreshold": {
235 "type": "integer"
236 },
237 "httpGet": {
238 "type": "object",
239 "properties": {
240 "path": {
241 "type": "string"
242 },
243 "port": {
244 "type": "integer"
245 }
246 },
247 "required": [
248 "path",
249 "port"
250 ]
251 }
252 },
253 "required": [
254 "failureThreshold",
255 "httpGet",
256 "initialDelaySeconds",
257 "periodSeconds"
258 ]
259 },
260 "livenessProbe": {
261 "type": "object",
262 "properties": {
263 "initialDelaySeconds": {
264 "type": "integer"
265 },
266 "failureThreshold": {
267 "type": "integer"
268 },
269 "periodSeconds": {
270 "type": "integer"
271 },
272 "httpGet": {
273 "type": "object",
274 "properties": {
275 "path": {
276 "type": "string"
277 },
278 "port": {
279 "type": "integer"
280 }
281 },
282 "required": [
283 "path",
284 "port"
285 ]
286 }
287 },
288 "required": [
289 "failureThreshold",
290 "httpGet",
291 "initialDelaySeconds",
292 "periodSeconds"
293 ]
294 },
295 "labels": {
296 "type": "object",
297 "properties": {
298 "environment": {
299 "type": "string"
300 },
301 "release": {
302 "type": "string"
303 }
304 },
305 "required": [
306 "environment",
307 "release"
308 ]
309 }
310 },
311 "required": [
312 "autoscaling",
313 "configs",
314 "containerPort",
315 "customObjects",
316 "deploymentStrategy",
317 "externalConfigs",
318 "extraContainers",
319 "extraInit",
320 "extraPorts",
321 "gpuModels",
322 "image",
323 "labels",
324 "livenessProbe",
325 "maxUnavailablePodDisruptionBudget",
326 "readinessProbe",
327 "replicaCount",
328 "resources",
329 "secrets",
330 "servicePort"
331 ]
332 }