questions.yaml 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543
  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: options
  288. label: "DNS Options"
  289. schema:
  290. type: list
  291. items:
  292. - variable: optionsEntry
  293. label: "Option Entry Configuration"
  294. schema:
  295. type: dict
  296. attrs:
  297. - variable: name
  298. label: "Option Name"
  299. schema:
  300. type: string
  301. required: true
  302. - variable: value
  303. label: "Option Value"
  304. schema:
  305. type: string
  306. required: true
  307. - variable: hostNetwork
  308. label: "Provide access to node network namespace for the workload"
  309. group: "Networking"
  310. schema:
  311. type: boolean
  312. default: false
  313. show_if: [["externalInterfaces", "=", []]]
  314. - variable: hostPortsList
  315. label: "Specify host ports for the workload"
  316. description: "Only use host ports if scaling of a workload is not required"
  317. group: "Networking"
  318. schema:
  319. show_if: [["updateStrategy", "=", "Recreate"]]
  320. type: list
  321. hidden: true
  322. items:
  323. - variable: hostPortConfiguration
  324. label: "Host Port Configuration"
  325. schema:
  326. type: dict
  327. attrs:
  328. - variable: containerPort
  329. label: "Container Port"
  330. schema:
  331. type: string
  332. required: true
  333. - variable: hostPort
  334. label: "Host Port"
  335. schema:
  336. type: string
  337. required: true
  338. - variable: portForwardingList
  339. label: "Specify Node ports to forward to workload"
  340. group: "Port Forwarding"
  341. description: "Specify ports of node and workload to forward traffic from node port to workload port"
  342. schema:
  343. type: list
  344. items:
  345. - variable: portForwarding
  346. label: "Port Forwarding Configuration"
  347. schema:
  348. type: dict
  349. attrs:
  350. - variable: containerPort
  351. label: "Container Port"
  352. schema:
  353. type: int
  354. required: true
  355. - variable: nodePort
  356. label: "Node Port"
  357. schema:
  358. type: int
  359. required: true
  360. min: 9000
  361. max: 65535
  362. - variable: protocol
  363. label: "Protocol"
  364. schema:
  365. type: string
  366. default: "TCP"
  367. enum:
  368. - value: "TCP"
  369. description: "TCP Protocol"
  370. - value: "UDP"
  371. description: "UDP Protocol"
  372. # Storage Options
  373. # Host path based volumes
  374. - variable: hostPathVolumes
  375. label: "Host Path Volumes"
  376. group: "Storage"
  377. schema:
  378. type: list
  379. items:
  380. - variable: hostPathConfiguration
  381. label: "Host Path Configuration"
  382. schema:
  383. type: dict
  384. attrs:
  385. - variable: hostPath
  386. label: "Host Path"
  387. schema:
  388. type: hostpath
  389. required: true
  390. - variable: mountPath
  391. label: "Mount Path"
  392. description: "Path where host path will be mounted inside the pod"
  393. schema:
  394. type: path
  395. required: true
  396. - variable: readOnly
  397. label: "Read Only"
  398. schema:
  399. type: boolean
  400. default: false
  401. - variable: emptyDirVolumes
  402. label: "Memory Backed Volumes"
  403. description: "Mount memory based temporary volumes for fast access i.e consuming /dev/shm"
  404. group: "Storage"
  405. schema:
  406. type: list
  407. items:
  408. - variable: emptyDirVolume
  409. label: "Memory Backed Volume"
  410. schema:
  411. type: dict
  412. attrs:
  413. - variable: mountPath
  414. label: "Mount Path"
  415. description: "Path where temporary path will be mounted inside the pod"
  416. schema:
  417. type: path
  418. required: true
  419. # Volumes
  420. - variable: volumes
  421. label: "Volumes"
  422. group: "Storage"
  423. schema:
  424. type: list
  425. items:
  426. - variable: volume
  427. label: "Volume"
  428. schema:
  429. type: dict
  430. $ref:
  431. - "normalize/ixVolume"
  432. attrs:
  433. - variable: mountPath
  434. label: "Mount Path"
  435. description: "Path where the volume will be mounted inside the pod"
  436. schema:
  437. type: path
  438. required: true
  439. - variable: datasetName
  440. label: "Dataset Name"
  441. schema:
  442. type: string
  443. required: true
  444. # Pod Probes
  445. # Liveness Probe
  446. - variable: livenessProbe
  447. label: "Liveness Probe"
  448. description: "Configure Liveness Probe"
  449. group: "Health Check"
  450. schema:
  451. hidden: true
  452. type: dict
  453. default: null
  454. "null": true
  455. attrs:
  456. - variable: command
  457. label: "Liveness command"
  458. description: "Specify a command to determine liveness of pod"
  459. schema:
  460. type: list
  461. required: true
  462. items:
  463. - variable: commandArg
  464. label: "Command Arg"
  465. schema:
  466. type: string
  467. - variable: initialDelaySeconds
  468. label: "Seconds Delay"
  469. description: "Seconds to delay the first liveness probe"
  470. schema:
  471. type: int
  472. default: 5
  473. - variable: periodSeconds
  474. label: "Period Seconds"
  475. description: "Specify number of seconds to run liveness probe"
  476. schema:
  477. type: int
  478. default: 10
  479. # Specify GPU configuration
  480. - variable: gpuConfiguration
  481. label: "GPU Configuration"
  482. group: "Resource Reservation"
  483. schema:
  484. type: dict
  485. $ref:
  486. - "definitions/gpuConfiguration"
  487. attrs: []
  488. - variable: tty
  489. label: "Enable TTY"
  490. description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled."
  491. group: "Workload Details"
  492. schema:
  493. type: boolean
  494. default: false
  495. - variable: stdin
  496. label: "Enable STDIN"
  497. description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled."
  498. group: "Workload Details"
  499. schema:
  500. type: boolean
  501. default: false
  502. - variable: securityContext
  503. label: "Security Context"
  504. group: "Workload Details"
  505. schema:
  506. type: dict
  507. attrs:
  508. - variable: privileged
  509. label: "Privileged Mode"
  510. 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."
  511. schema:
  512. type: boolean
  513. default: false
  514. - variable: capabilities
  515. label: "Capabilities"
  516. description: "With Linux capabilities, you can grant certain privileges to a process without granting all the privileges of the root user."
  517. schema:
  518. type: list
  519. items:
  520. - variable: capability
  521. description: "Add Capability"
  522. label: "Add Capability"
  523. schema:
  524. type: string