questions.yaml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476
  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. - variable: hostPortsList
  294. label: "Specify host ports for the workload"
  295. description: "Only use host ports if scaling of a workload is not required"
  296. group: "Networking"
  297. schema:
  298. show_if: [["updateStrategy", "=", "Recreate"]]
  299. type: list
  300. hidden: true
  301. items:
  302. - variable: hostPortConfiguration
  303. label: "Host Port Configuration"
  304. schema:
  305. type: dict
  306. attrs:
  307. - variable: containerPort
  308. label: "Container Port"
  309. schema:
  310. type: string
  311. required: true
  312. - variable: hostPort
  313. label: "Host Port"
  314. schema:
  315. type: string
  316. required: true
  317. - variable: portForwardingList
  318. label: "Specify Node ports to forward to workload"
  319. group: "Port Forwarding"
  320. description: "Specify ports of node and workload to forward traffic from node port to workload port"
  321. schema:
  322. type: list
  323. items:
  324. - variable: portForwarding
  325. label: "Port Forwarding Configuration"
  326. schema:
  327. type: dict
  328. attrs:
  329. - variable: containerPort
  330. label: "Container Port"
  331. schema:
  332. type: int
  333. required: true
  334. - variable: nodePort
  335. label: "Node Port"
  336. schema:
  337. type: int
  338. required: true
  339. min: 9000
  340. max: 65535
  341. - variable: protocol
  342. label: "Protocol"
  343. schema:
  344. type: string
  345. default: "TCP"
  346. enum:
  347. - value: "TCP"
  348. description: "TCP Protocol"
  349. - value: "UDP"
  350. description: "UDP Protocol"
  351. # Storage Options
  352. # Host path based volumes
  353. - variable: hostPathVolumes
  354. label: "Host Path Volumes"
  355. group: "Storage"
  356. schema:
  357. type: list
  358. items:
  359. - variable: hostPathConfiguration
  360. label: "Host Path Configuration"
  361. schema:
  362. type: dict
  363. attrs:
  364. - variable: hostPath
  365. label: "Host Path"
  366. schema:
  367. type: hostpath
  368. required: true
  369. - variable: mountPath
  370. label: "Mount Path"
  371. description: "Path where host path will be mounted inside the pod"
  372. schema:
  373. type: path
  374. required: true
  375. - variable: readOnly
  376. label: "Read Only"
  377. schema:
  378. type: boolean
  379. default: false
  380. # Volumes
  381. - variable: volumes
  382. label: "Volumes"
  383. group: "Storage"
  384. schema:
  385. type: list
  386. items:
  387. - variable: volume
  388. label: "Volume"
  389. schema:
  390. type: dict
  391. $ref:
  392. - "normalize/ixVolume"
  393. attrs:
  394. - variable: mountPath
  395. label: "Mount Path"
  396. description: "Path where the volume will be mounted inside the pod"
  397. schema:
  398. type: path
  399. required: true
  400. - variable: datasetName
  401. label: "Dataset Name"
  402. schema:
  403. type: string
  404. required: true
  405. # Pod Probes
  406. # Liveness Probe
  407. - variable: livenessProbe
  408. label: "Liveness Probe"
  409. description: "Configure Liveness Probe"
  410. group: "Health Check"
  411. schema:
  412. hidden: true
  413. type: dict
  414. default: null
  415. "null": true
  416. attrs:
  417. - variable: command
  418. label: "Liveness command"
  419. description: "Specify a command to determine liveness of pod"
  420. schema:
  421. type: list
  422. required: true
  423. items:
  424. - variable: commandArg
  425. label: "Command Arg"
  426. schema:
  427. type: string
  428. - variable: initialDelaySeconds
  429. label: "Seconds Delay"
  430. description: "Seconds to delay the first liveness probe"
  431. schema:
  432. type: int
  433. default: 5
  434. - variable: periodSeconds
  435. label: "Period Seconds"
  436. description: "Specify number of seconds to run liveness probe"
  437. schema:
  438. type: int
  439. default: 10
  440. # Specify GPU configuration
  441. - variable: gpuConfiguration
  442. label: "GPU Configuration"
  443. group: "Resource Reservation"
  444. schema:
  445. type: dict
  446. $ref:
  447. - "definitions/gpuConfiguration"
  448. attrs: []
  449. - variable: securityContext
  450. label: "Security Context"
  451. group: "Workload Details"
  452. schema:
  453. type: dict
  454. attrs:
  455. - variable: privileged
  456. label: "Privileged Mode"
  457. 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."
  458. schema:
  459. type: boolean
  460. default: false