questions.yaml 15 KB

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