questions.yaml 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462
  1. groups:
  2. - name: "Container Images"
  3. description: "Image to be used for container"
  4. - name: "Container Entrypoint"
  5. description: "Configuration of the executable that will be run when the container is started"
  6. - name: "Container Environment Variables"
  7. description: "Set the environment that will be visible to the container"
  8. - name: "Networking"
  9. description: "Configure networking for container"
  10. - name: "Storage"
  11. description: "Persist and share data that is separate from the lifecycle of the container"
  12. - name: "Health Check"
  13. description: "Define mechanism to periodically probe the container to ensure it's functioning as desired"
  14. - name: "Workload Details"
  15. description: "Configure how workload should be deployed"
  16. - name: "Scaling/Upgrade Policy"
  17. description: "Configure how pods are replaced when configuration is upgraded"
  18. - name: "Restart Policy"
  19. description: "Configure when pod should be restarted in case of failure"
  20. - name: "Resource Reservation"
  21. description: "Specify resources to be allocated to workload"
  22. questions:
  23. # Workload type
  24. - variable: workloadType
  25. description: "Please specify type of workload to deploy"
  26. label: "Workload Type"
  27. group: "Workload Details"
  28. schema:
  29. type: string
  30. default: "Deployment"
  31. required: true
  32. enum:
  33. - value: "Deployment"
  34. description: "Deploy a Deployment workload"
  35. - value: "Job"
  36. description: "Deploy job workload"
  37. - value: "CronJob"
  38. description: "Deploy cronjob workload"
  39. # Cronjob schedule
  40. - variable: cronSchedule
  41. label: "Cron Schedule"
  42. group: "Workload Details"
  43. schema:
  44. type: cron
  45. show_if: [["workloadType", "=", "CronJob"]]
  46. default:
  47. minute: "5"
  48. # Image related
  49. - variable: image
  50. description: "Docker Image Details"
  51. label: "Docker Image"
  52. group: "Container Images"
  53. schema:
  54. type: dict
  55. required: true
  56. attrs:
  57. - variable: repository
  58. description: "Docker image repository"
  59. label: "Image repository"
  60. schema:
  61. type: string
  62. required: true
  63. - variable: tag
  64. description: "Tag to use for specified image"
  65. label: "Image Tag"
  66. schema:
  67. type: string
  68. default: "latest"
  69. - variable: pullPolicy
  70. description: "Docker Image Pull Policy"
  71. label: "Image Pull Policy"
  72. schema:
  73. type: string
  74. default: "IfNotPresent"
  75. enum:
  76. - value: "IfNotPresent"
  77. description: "Only pull image if not present on host"
  78. - value: "Always"
  79. description: "Always pull image even if present on host"
  80. - value: "Never"
  81. description: "Never pull image even if it's not present on host"
  82. # Update strategy
  83. - variable: updateStrategy
  84. description: "Upgrade Policy"
  85. label: "Update Strategy"
  86. group: "Scaling/Upgrade Policy"
  87. schema:
  88. type: string
  89. show_if: [["workloadType", "=", "Deployment"]]
  90. default: "RollingUpdate"
  91. enum:
  92. - value: "RollingUpdate"
  93. description: "Create new pods and then kill old ones"
  94. - value: "Recreate"
  95. description: "Kill existing pods before creating new ones"
  96. # Restart Policy
  97. - variable: jobRestartPolicy
  98. description: "Restart Policy for workload"
  99. label: "Restart Policy"
  100. group: "Restart Policy"
  101. schema:
  102. type: string
  103. default: "OnFailure"
  104. show_if: [["workloadType", "!=", "Deployment"]]
  105. enum:
  106. - value: "OnFailure"
  107. description: "Only restart job if it fails"
  108. - value: "Never"
  109. description: "Never restart job even if it fails"
  110. # Configurable CMD / Entrypoint / Environment Variables
  111. - variable: containerCommand
  112. description: "Commands to execute inside container overriding image CMD default"
  113. label: "Container CMD"
  114. group: "Container Entrypoint"
  115. schema:
  116. type: list
  117. items:
  118. - variable: command
  119. description: "Container Command"
  120. label: "Command"
  121. schema:
  122. type: string
  123. - variable: containerArgs
  124. description: "Specify arguments for container command"
  125. label: "Container Args"
  126. group: "Container Entrypoint"
  127. schema:
  128. type: list
  129. items:
  130. - variable: arg
  131. description: "Container Arg"
  132. label: "Arg"
  133. schema:
  134. type: string
  135. - variable: containerEnvironmentVariables
  136. description: "Container Environment Variables"
  137. label: "Container Environment Variables"
  138. group: "Container Environment Variables"
  139. schema:
  140. type: list
  141. items:
  142. - variable: environmentVariable
  143. description: "Container Environment Variable"
  144. label: "Container Environment Variable"
  145. schema:
  146. type: dict
  147. attrs:
  148. - variable: name
  149. description: "Environment Variable Name"
  150. label: "Environment Variable Name"
  151. schema:
  152. type: string
  153. required: true
  154. - variable: value
  155. description: "Environment Variable Value"
  156. label: "Environment Variable Value"
  157. schema:
  158. type: string
  159. required: true
  160. # Networking options
  161. - variable: externalInterfaces
  162. description: "Add External Interfaces"
  163. label: "Add external Interfaces"
  164. group: "Networking"
  165. schema:
  166. type: list
  167. items:
  168. - variable: interfaceConfiguration
  169. description: "Interface Configuration"
  170. label: "Interface Configuration"
  171. schema:
  172. type: dict
  173. $ref:
  174. - "normalize/interfaceConfiguration"
  175. attrs:
  176. - variable: hostInterface
  177. description: "Please specify host interface"
  178. label: "Host Interface"
  179. schema:
  180. type: string
  181. required: true
  182. $ref:
  183. - "definitions/interface"
  184. - variable: ipam
  185. description: "Define how IP Address will be managed"
  186. label: "IP Address Management"
  187. schema:
  188. type: dict
  189. required: true
  190. attrs:
  191. - variable: type
  192. description: "Specify type for IPAM"
  193. label: "IPAM Type"
  194. schema:
  195. type: string
  196. required: true
  197. enum:
  198. - value: "dhcp"
  199. description: "Use DHCP"
  200. - value: "static"
  201. description: "Use static IP"
  202. show_subquestions_if: "static"
  203. subquestions:
  204. - variable: staticIPConfigurations
  205. label: "Static IP Addresses"
  206. schema:
  207. type: list
  208. items:
  209. - variable: staticIP
  210. label: "Static IP"
  211. schema:
  212. type: ipaddr
  213. cidr: true
  214. - variable: staticRoutes
  215. label: "Static Routes"
  216. schema:
  217. type: list
  218. items:
  219. - variable: staticRouteConfiguration
  220. label: "Static Route Configuration"
  221. schema:
  222. type: dict
  223. attrs:
  224. - variable: destination
  225. label: "Destination"
  226. schema:
  227. type: ipaddr
  228. cidr: true
  229. required: true
  230. - variable: gateway
  231. label: "Gateway"
  232. schema:
  233. type: ipaddr
  234. cidr: false
  235. required: true
  236. - variable: dnsPolicy
  237. label: "DNS Policy"
  238. description: "Default behaviour is where Pod inherits the name resolution configuration from the node that the pods run on, if None is specified, It allows a Pod to ignore DNS settings from the Kubernetes environment."
  239. group: "Networking"
  240. schema:
  241. type: string
  242. default: "Default"
  243. enum:
  244. - value: "Default"
  245. description: "Use Default DNS Policy"
  246. - value: "None"
  247. description: "Ignore DNS settings from the Kuberentes cluster"
  248. - variable: dnsConfig
  249. label: "DNS Configuration"
  250. group: "Networking"
  251. description: "Specify custom DNS configuration which will be applied to the pod"
  252. schema:
  253. type: dict
  254. attrs:
  255. - variable: nameservers
  256. label: "Nameservers"
  257. schema:
  258. default: []
  259. type: list
  260. items:
  261. - variable: nameserver
  262. label: "Nameserver"
  263. schema:
  264. type: string
  265. - variable: searches
  266. label: "Searches"
  267. schema:
  268. default: []
  269. type: list
  270. items:
  271. - variable: search
  272. label: "Search Entry"
  273. schema:
  274. type: string
  275. - variable: hostNetwork
  276. label: "Provide access to node network namespace for the workload"
  277. group: "Networking"
  278. schema:
  279. type: boolean
  280. default: false
  281. - variable: hostPortsList
  282. label: "Specify host ports for the workload"
  283. description: "Only use host ports if scaling of a workload is not required"
  284. group: "Networking"
  285. schema:
  286. show_if: [["updateStrategy", "=", "Recreate"]]
  287. type: list
  288. items:
  289. - variable: hostPortConfiguration
  290. label: "Host Port Configuration"
  291. schema:
  292. type: dict
  293. attrs:
  294. - variable: containerPort
  295. label: "Container Port"
  296. schema:
  297. type: string
  298. required: true
  299. - variable: hostPort
  300. label: "Host Port"
  301. schema:
  302. type: string
  303. required: true
  304. - variable: portForwardingList
  305. label: "Specify Node ports to forward to workload"
  306. group: "Networking"
  307. description: "Specify ports of node and workload to forward traffic from node port to workload port"
  308. schema:
  309. type: list
  310. items:
  311. - variable: portForwarding
  312. label: "Port Forwarding Configuration"
  313. schema:
  314. type: dict
  315. attrs:
  316. - variable: containerPort
  317. label: "Container Port"
  318. schema:
  319. type: int
  320. required: true
  321. - variable: nodePort
  322. label: "Node Port"
  323. schema:
  324. type: int
  325. required: true
  326. min: 9000
  327. max: 65535
  328. - variable: protocol
  329. label: "Protocol"
  330. schema:
  331. type: string
  332. default: "TCP"
  333. enum:
  334. - value: "TCP"
  335. description: "TCP Protocol"
  336. - value: "UDP"
  337. description: "UDP Protocol"
  338. # Storage Options
  339. # Host path based volumes
  340. - variable: hostPathVolumes
  341. label: "Host Path Volumes"
  342. group: "Storage"
  343. schema:
  344. type: list
  345. items:
  346. - variable: hostPathConfiguration
  347. label: "Host Path Configuration"
  348. schema:
  349. type: dict
  350. attrs:
  351. - variable: hostPath
  352. label: "Host Path"
  353. schema:
  354. type: hostpath
  355. required: true
  356. - variable: mountPath
  357. label: "Mount Path"
  358. description: "Path where host path will be mounted inside the pod"
  359. schema:
  360. type: path
  361. required: true
  362. - variable: readOnly
  363. label: "Read Only"
  364. schema:
  365. type: boolean
  366. default: false
  367. # Volumes
  368. - variable: volumes
  369. label: "Volumes"
  370. group: "Storage"
  371. schema:
  372. type: list
  373. items:
  374. - variable: volume
  375. label: "Volume"
  376. schema:
  377. type: dict
  378. $ref:
  379. - "normalize/ixVolume"
  380. attrs:
  381. - variable: mountPath
  382. label: "Mount Path"
  383. description: "Path where the volume will be mounted inside the pod"
  384. schema:
  385. type: path
  386. required: true
  387. - variable: datasetName
  388. label: "Dataset Name"
  389. schema:
  390. type: string
  391. required: true
  392. # Pod Probes
  393. # Liveness Probe
  394. - variable: livenessProbe
  395. label: "Liveness Probe"
  396. description: "Configure Liveness Probe"
  397. group: "Health Check"
  398. schema:
  399. type: dict
  400. default: null
  401. "null": true
  402. attrs:
  403. - variable: command
  404. label: "Liveness command"
  405. description: "Specify a command to determine liveness of pod"
  406. schema:
  407. type: list
  408. required: true
  409. items:
  410. - variable: commandArg
  411. label: "Command Arg"
  412. schema:
  413. type: string
  414. - variable: initialDelaySeconds
  415. label: "Seconds Delay"
  416. description: "Seconds to delay the first liveness probe"
  417. schema:
  418. type: int
  419. default: 5
  420. - variable: periodSeconds
  421. label: "Period Seconds"
  422. description: "Specify number of seconds to run liveness probe"
  423. schema:
  424. type: int
  425. default: 10
  426. # Specify GPU configuration
  427. - variable: gpuConfiguration
  428. label: "GPU Configuration"
  429. group: "Resource Reservation"
  430. schema:
  431. type: dict
  432. $ref:
  433. - "definitions/gpuConfiguration"
  434. attrs: []
  435. - variable: securityContext
  436. label: "Security Context"
  437. group: "Workload Details"
  438. schema:
  439. type: dict
  440. attrs:
  441. - variable: privileged
  442. label: "Privileged Mode"
  443. description: "Determines if any container in a pod can enable privileged mode. By default a container is not allowed to access any devices on the host, but a 'privileged' container is given access to all devices on the host. This allows the container nearly all the same access as processes running on the host."
  444. schema:
  445. type: boolean
  446. default: false