questions.yaml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496
  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 where Pod will inherit the name resolution configuration from the node."
  251. - value: "ClusterFirst"
  252. description: >
  253. "Kubernetes internal DNS will be prioritised and resolved first. If the domain does not resolve with internal
  254. kubernetes DNS, the DNS query will be forwarded to the upstream nameserver inherited from the node. This is
  255. useful if the workload needs to access other service(s)/workload(s) using kubernetes internal DNS."
  256. - value: "ClusterFirstWithHostNet"
  257. description: "For Pods running with hostNetwork and wanting to prioritise internal kubernetes DNS should make use of this policy."
  258. - value: "None"
  259. description: "Ignore DNS settings from the Kubernetes cluster"
  260. - variable: dnsConfig
  261. label: "DNS Configuration"
  262. group: "Networking"
  263. description: "Specify custom DNS configuration which will be applied to the pod"
  264. schema:
  265. type: dict
  266. attrs:
  267. - variable: nameservers
  268. label: "Nameservers"
  269. schema:
  270. default: []
  271. type: list
  272. items:
  273. - variable: nameserver
  274. label: "Nameserver"
  275. schema:
  276. type: string
  277. - variable: searches
  278. label: "Searches"
  279. schema:
  280. default: []
  281. type: list
  282. items:
  283. - variable: search
  284. label: "Search Entry"
  285. schema:
  286. type: string
  287. - variable: hostNetwork
  288. label: "Provide access to node network namespace for the workload"
  289. group: "Networking"
  290. schema:
  291. type: boolean
  292. default: false
  293. show_if: [["externalInterfaces", "=", []]]
  294. - variable: hostPortsList
  295. label: "Specify host ports for the workload"
  296. description: "Only use host ports if scaling of a workload is not required"
  297. group: "Networking"
  298. schema:
  299. show_if: [["updateStrategy", "=", "Recreate"]]
  300. type: list
  301. hidden: true
  302. items:
  303. - variable: hostPortConfiguration
  304. label: "Host Port Configuration"
  305. schema:
  306. type: dict
  307. attrs:
  308. - variable: containerPort
  309. label: "Container Port"
  310. schema:
  311. type: string
  312. required: true
  313. - variable: hostPort
  314. label: "Host Port"
  315. schema:
  316. type: string
  317. required: true
  318. - variable: portForwardingList
  319. label: "Specify Node ports to forward to workload"
  320. group: "Port Forwarding"
  321. description: "Specify ports of node and workload to forward traffic from node port to workload port"
  322. schema:
  323. type: list
  324. items:
  325. - variable: portForwarding
  326. label: "Port Forwarding Configuration"
  327. schema:
  328. type: dict
  329. attrs:
  330. - variable: containerPort
  331. label: "Container Port"
  332. schema:
  333. type: int
  334. required: true
  335. - variable: nodePort
  336. label: "Node Port"
  337. schema:
  338. type: int
  339. required: true
  340. min: 9000
  341. max: 65535
  342. - variable: protocol
  343. label: "Protocol"
  344. schema:
  345. type: string
  346. default: "TCP"
  347. enum:
  348. - value: "TCP"
  349. description: "TCP Protocol"
  350. - value: "UDP"
  351. description: "UDP Protocol"
  352. # Storage Options
  353. # Host path based volumes
  354. - variable: hostPathVolumes
  355. label: "Host Path Volumes"
  356. group: "Storage"
  357. schema:
  358. type: list
  359. items:
  360. - variable: hostPathConfiguration
  361. label: "Host Path Configuration"
  362. schema:
  363. type: dict
  364. attrs:
  365. - variable: hostPath
  366. label: "Host Path"
  367. schema:
  368. type: hostpath
  369. required: true
  370. - variable: mountPath
  371. label: "Mount Path"
  372. description: "Path where host path will be mounted inside the pod"
  373. schema:
  374. type: path
  375. required: true
  376. - variable: readOnly
  377. label: "Read Only"
  378. schema:
  379. type: boolean
  380. default: false
  381. - variable: emptyDirVolumes
  382. label: "Memory Backed Volumes"
  383. description: "Mount memory based temporary volumes for fast access i.e consuming /dev/shm"
  384. group: "Storage"
  385. schema:
  386. type: list
  387. items:
  388. - variable: emptyDirVolume
  389. label: "Memory Backed Volume"
  390. schema:
  391. type: dict
  392. attrs:
  393. - variable: mountPath
  394. label: "Mount Path"
  395. description: "Path where temporary path will be mounted inside the pod"
  396. schema:
  397. type: path
  398. required: true
  399. # Volumes
  400. - variable: volumes
  401. label: "Volumes"
  402. group: "Storage"
  403. schema:
  404. type: list
  405. items:
  406. - variable: volume
  407. label: "Volume"
  408. schema:
  409. type: dict
  410. $ref:
  411. - "normalize/ixVolume"
  412. attrs:
  413. - variable: mountPath
  414. label: "Mount Path"
  415. description: "Path where the volume will be mounted inside the pod"
  416. schema:
  417. type: path
  418. required: true
  419. - variable: datasetName
  420. label: "Dataset Name"
  421. schema:
  422. type: string
  423. required: true
  424. # Pod Probes
  425. # Liveness Probe
  426. - variable: livenessProbe
  427. label: "Liveness Probe"
  428. description: "Configure Liveness Probe"
  429. group: "Health Check"
  430. schema:
  431. hidden: true
  432. type: dict
  433. default: null
  434. "null": true
  435. attrs:
  436. - variable: command
  437. label: "Liveness command"
  438. description: "Specify a command to determine liveness of pod"
  439. schema:
  440. type: list
  441. required: true
  442. items:
  443. - variable: commandArg
  444. label: "Command Arg"
  445. schema:
  446. type: string
  447. - variable: initialDelaySeconds
  448. label: "Seconds Delay"
  449. description: "Seconds to delay the first liveness probe"
  450. schema:
  451. type: int
  452. default: 5
  453. - variable: periodSeconds
  454. label: "Period Seconds"
  455. description: "Specify number of seconds to run liveness probe"
  456. schema:
  457. type: int
  458. default: 10
  459. # Specify GPU configuration
  460. - variable: gpuConfiguration
  461. label: "GPU Configuration"
  462. group: "Resource Reservation"
  463. schema:
  464. type: dict
  465. $ref:
  466. - "definitions/gpuConfiguration"
  467. attrs: []
  468. - variable: securityContext
  469. label: "Security Context"
  470. group: "Workload Details"
  471. schema:
  472. type: dict
  473. attrs:
  474. - variable: privileged
  475. label: "Privileged Mode"
  476. 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."
  477. schema:
  478. type: boolean
  479. default: false