@sap/cds-dk 7.9.4 → 8.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/CHANGELOG.md +2116 -0
  2. package/bin/add.js +18 -52
  3. package/bin/bind.js +2 -2
  4. package/bin/build.js +29 -4
  5. package/bin/cds.js +23 -11
  6. package/bin/compile/index.js +7 -6
  7. package/bin/completion/index.js +70 -46
  8. package/bin/completion/scripts/cds-bash.sh +4 -1
  9. package/bin/completion/scripts/cds-fish.fish +13 -0
  10. package/bin/completion/scripts/cds-ps.ps1 +2 -1
  11. package/bin/completion/scripts/cds-zsh.sh +2 -1
  12. package/bin/deploy/index.js +6 -5
  13. package/bin/deploy/to-sqlite.js +2 -2
  14. package/bin/extend.js +19 -50
  15. package/bin/help.js +2 -2
  16. package/bin/init.js +10 -77
  17. package/bin/login.js +13 -5
  18. package/bin/migrate.js +1 -1
  19. package/bin/pull.js +11 -0
  20. package/bin/repl.js +3 -0
  21. package/bin/test.js +5 -0
  22. package/bin/version.js +7 -7
  23. package/bin/watch.js +2 -11
  24. package/lib/bind/KubernetesApiAccessor.js +10 -9
  25. package/lib/build/buildTaskEngine.js +11 -7
  26. package/lib/build/buildTaskFactory.js +15 -43
  27. package/lib/build/buildTaskProviderFactory.js +16 -44
  28. package/lib/build/constants.js +3 -3
  29. package/lib/build/index.js +2 -2
  30. package/lib/build/{buildPlugin.js → plugin.js} +65 -46
  31. package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/content-deployment/Chart.yaml +1 -1
  32. package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/content-deployment/values.yaml +1 -1
  33. package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/service-instance/Chart.yaml +1 -1
  34. package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/service-instance/templates/_helpers.tpl +7 -0
  35. package/lib/build/plugins/helm/files/subcharts/service-instance/templates/servicebinding.yaml +32 -0
  36. package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/service-instance/templates/serviceinstance.yaml +3 -0
  37. package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/service-instance/values.schema.json +63 -0
  38. package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/service-instance/values.yaml +23 -1
  39. package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/web-application/Chart.yaml +1 -1
  40. package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/web-application/templates/deployment.yaml +2 -0
  41. package/lib/build/plugins/helm/files/subcharts/web-application/templates/hpa.yaml +22 -0
  42. package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/web-application/templates/pod-disruption-budget.yaml +1 -0
  43. package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/web-application/values.schema.json +49 -0
  44. package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/web-application/values.yaml +8 -2
  45. package/lib/{init/template/helm/files/chart → build/plugins/helm/files}/templates/_deployment_helpers.tpl +5 -0
  46. package/lib/build/plugins/helm/files/templates/_helpers.tpl +13 -0
  47. package/lib/build/plugins/helm/index.js +81 -0
  48. package/lib/build/plugins.js +12 -15
  49. package/lib/build/provider/featureToggleBuildPlugin.js +7 -39
  50. package/lib/build/provider/hana/2migration.js +168 -124
  51. package/lib/build/provider/hana/index.js +20 -25
  52. package/lib/build/provider/hana/template/.hdiconfig-all +3 -0
  53. package/lib/build/provider/hana/template/.hdiconfig-cloud +3 -0
  54. package/lib/build/provider/hana/template/package.json +4 -3
  55. package/lib/build/provider/internalBuildPlugin.js +32 -97
  56. package/lib/build/provider/internalBuildTaskProvider.js +10 -46
  57. package/lib/build/provider/java/index.js +2 -3
  58. package/lib/build/provider/mtx/index.js +5 -4
  59. package/lib/build/provider/mtx-extension/index.js +5 -2
  60. package/lib/build/provider/mtx-sidecar/index.js +2 -2
  61. package/lib/build/util.js +83 -12
  62. package/lib/compile/to-mermaid.js +108 -0
  63. package/lib/compile/to_asyncapi.js +7 -0
  64. package/lib/compile/to_openapi.js +7 -0
  65. package/lib/deploy/to-hana/hana.js +37 -34
  66. package/lib/deploy/to-hana/hdiDeployUtil.js +8 -6
  67. package/lib/env/schemas/cds-rc.js +1 -1
  68. package/lib/import/common.js +2 -2
  69. package/lib/import/odata/metadataconverter/MetadataConverter.js +4 -4
  70. package/lib/import/odata/v2parser.js +83 -197
  71. package/lib/import/odata/v4parser.js +1 -38
  72. package/lib/import/openapi/importOpenAPI.js +164 -42
  73. package/lib/index.js +10 -12
  74. package/lib/init/bas.js +91 -0
  75. package/lib/init/constants.js +16 -10
  76. package/lib/init/index.js +74 -150
  77. package/lib/init/merge.js +12 -20
  78. package/lib/init/mvn.js +103 -150
  79. package/lib/init/plugin.js +11 -7
  80. package/lib/init/projectReader.js +53 -19
  81. package/lib/init/registries/mta.js +51 -6
  82. package/lib/init/template/application-logging/files/package.json.hbs +7 -0
  83. package/lib/init/template/application-logging/index.js +13 -1
  84. package/lib/init/template/approuter/files/containerize.yaml.hbs +10 -0
  85. package/lib/init/template/approuter/files/mta.yaml.hbs +1 -2
  86. package/lib/init/template/approuter/files/values.yaml.hbs +19 -4
  87. package/lib/init/template/approuter/files/xs-app.json.hbs +12 -3
  88. package/lib/init/template/approuter/index.js +29 -25
  89. package/lib/init/template/attachments/files/mta.yaml.hbs +14 -0
  90. package/lib/init/template/attachments/files/package.json.hbs +5 -0
  91. package/lib/init/template/attachments/files/values.yaml +7 -0
  92. package/lib/init/template/attachments/index.js +53 -0
  93. package/lib/init/template/audit-logging/files/mta.yaml.hbs +14 -0
  94. package/lib/init/template/audit-logging/files/package.json.hbs +7 -0
  95. package/lib/init/template/audit-logging/index.js +66 -0
  96. package/lib/init/template/cf-manifest/index.js +4 -0
  97. package/lib/init/template/completion/completionSetup.js +54 -33
  98. package/lib/init/template/completion/index.js +7 -1
  99. package/lib/init/template/connectivity/index.js +4 -4
  100. package/lib/init/template/containerize/files/containerize.yaml.hbs +26 -0
  101. package/lib/init/template/containerize/index.js +24 -0
  102. package/lib/init/template/data/index.js +4 -0
  103. package/lib/init/template/destination/files/mta.yaml.hbs +25 -1
  104. package/lib/init/template/destination/index.js +12 -2
  105. package/lib/init/template/enterprise-messaging/index.js +6 -3
  106. package/lib/init/template/enterprise-messaging-shared/index.js +5 -1
  107. package/lib/init/template/extensibility/files/package.json.hbs +1 -1
  108. package/lib/init/template/extensibility/files/xs-security.json.hbs +2 -8
  109. package/lib/init/template/extensibility/index.js +3 -1
  110. package/lib/init/template/file-based-messaging/index.js +4 -0
  111. package/lib/init/template/h2/index.js +4 -0
  112. package/lib/init/template/hana/files/containerize.yaml.hbs +10 -0
  113. package/lib/init/template/hana/files/db/package.json +3 -2
  114. package/lib/init/template/hana/files/package.json.hbs +4 -7
  115. package/lib/init/template/hana/files/src/.hdiconfig +3 -0
  116. package/lib/init/template/hana/files/values.yaml.hbs +1 -2
  117. package/lib/init/template/hana/index.js +15 -7
  118. package/lib/init/template/helm/files/Chart.yaml.hbs +2 -3
  119. package/lib/init/template/helm/files/values.schema.json +2173 -0
  120. package/lib/init/template/helm/files/values.yaml.hbs +11 -6
  121. package/lib/init/template/helm/index.js +77 -18
  122. package/lib/init/template/helm-unified-runtime/index.js +19 -56
  123. package/lib/init/template/html5-repo/files/app-package.json.hbs +11 -7
  124. package/lib/init/template/html5-repo/files/manifest.json +13 -0
  125. package/lib/init/template/html5-repo/files/mta.yaml.hbs +41 -8
  126. package/lib/init/template/html5-repo/files/ui5-deploy.yaml.hbs +21 -0
  127. package/lib/init/template/html5-repo/files/ui5.yaml.hbs +2 -29
  128. package/lib/init/template/html5-repo/files/values.yaml.hbs +6 -2
  129. package/lib/init/template/html5-repo/files/xs-app.json.hbs +21 -8
  130. package/lib/init/template/html5-repo/index.js +33 -30
  131. package/lib/init/template/http/index.js +36 -12
  132. package/lib/init/template/java/index.js +18 -12
  133. package/lib/init/template/kafka/index.js +4 -0
  134. package/lib/init/template/lint/index.js +7 -2
  135. package/lib/init/template/liquibase/index.js +4 -0
  136. package/lib/init/template/local-messaging/index.js +4 -0
  137. package/lib/init/template/malware-scanner/files/mta.yaml.hbs +14 -0
  138. package/lib/init/template/malware-scanner/files/package.json.hbs +17 -0
  139. package/lib/init/template/malware-scanner/files/values.yaml +7 -0
  140. package/lib/init/template/malware-scanner/index.js +47 -0
  141. package/lib/init/template/mta/files/mta.yaml.hbs +3 -3
  142. package/lib/init/template/mta/files/package.json +1 -1
  143. package/lib/init/template/mta/index.js +4 -0
  144. package/lib/init/template/mtx/index.js +4 -0
  145. package/lib/init/template/multitenancy/files/containerize.yaml.hbs +10 -0
  146. package/lib/init/template/multitenancy/files/mta.yaml.hbs +0 -1
  147. package/lib/init/template/multitenancy/files/package.json.hbs +1 -1
  148. package/lib/init/template/multitenancy/files/package.sidecar.json.hbs +6 -5
  149. package/lib/init/template/multitenancy/files/values.yaml.hbs +14 -24
  150. package/lib/init/template/multitenancy/index.js +50 -28
  151. package/lib/init/template/nodejs/files/eslint.config.mjs +2 -0
  152. package/lib/init/template/nodejs/files/package.json.hbs +2 -3
  153. package/lib/init/template/nodejs/index.js +4 -0
  154. package/lib/init/template/notifications/files/mta.yaml.hbs +2 -2
  155. package/lib/init/template/notifications/index.js +4 -0
  156. package/lib/init/template/pipeline/files/.pipeline/config.yml +1 -1
  157. package/lib/init/template/pipeline/files/Jenkinsfile +1 -1
  158. package/lib/init/template/pipeline/index.js +4 -0
  159. package/lib/init/template/portal/files/mta.yaml.hbs +52 -0
  160. package/lib/init/template/portal/files/package.json.hbs +11 -0
  161. package/lib/init/template/portal/files/package.sidecar.json +7 -0
  162. package/lib/init/template/portal/files/portal-site/CommonDataModel.json.hbs +97 -0
  163. package/lib/init/template/portal/files/portal-site/i18n/catalog.properties +1 -0
  164. package/lib/init/template/portal/files/portal-site/i18n/catalog_de.properties +1 -0
  165. package/lib/init/template/portal/files/portal-site/i18n/group.properties +1 -0
  166. package/lib/init/template/portal/files/portal-site/i18n/group_de.properties +1 -0
  167. package/lib/init/template/portal/index.js +84 -0
  168. package/lib/init/template/postgres/index.js +5 -1
  169. package/lib/init/template/redis-messaging/index.js +4 -0
  170. package/lib/init/template/sample/files/app/admin-books/webapp/i18n/i18n_de.properties +3 -0
  171. package/lib/init/template/sample/files/app/admin-books/webapp/i18n/i18n_en.properties +3 -0
  172. package/lib/init/template/sample/files/app/admin-books/webapp/manifest.json +13 -1
  173. package/lib/init/template/sample/files/app/browse/webapp/i18n/i18n.properties +2 -2
  174. package/lib/init/template/sample/files/app/browse/webapp/i18n/i18n_de.properties +3 -0
  175. package/lib/init/template/sample/files/app/browse/webapp/i18n/i18n_en.properties +4 -0
  176. package/lib/init/template/sample/files/app/browse/webapp/manifest.json +3 -3
  177. package/lib/init/template/sample/files/app/index.html +1 -1
  178. package/lib/init/template/sample/files/db/data/sap.capire.bookshop-Authors.csv +5 -5
  179. package/lib/init/template/sample/files/db/data/sap.capire.bookshop-Books.csv +6 -6
  180. package/lib/init/template/sample/files/db/data/sap.capire.bookshop-Books_texts.csv +5 -5
  181. package/lib/init/template/sample/files/db/data/sap.capire.bookshop-Genres.csv +16 -16
  182. package/lib/init/template/sample/files/nodejs/cat-service.js +2 -2
  183. package/lib/init/template/sample/files/package.json.hbs +3 -0
  184. package/lib/init/template/sample/index.js +16 -9
  185. package/lib/init/template/sqlite/index.js +4 -0
  186. package/lib/init/template/tiny-sample/files/nodejs/db/data/my.bookshop-Books.csv +3 -3
  187. package/lib/init/template/tiny-sample/files/nodejs/srv/cat-service.cds.hbs +1 -1
  188. package/lib/init/template/tiny-sample/index.js +4 -0
  189. package/lib/init/template/toggles/files/package.json.hbs +1 -1
  190. package/lib/init/template/toggles/index.js +4 -0
  191. package/lib/init/template/typer/index.js +4 -0
  192. package/lib/init/template/typescript/files/package.json +12 -0
  193. package/lib/init/template/typescript/files/tsconfig.json +13 -0
  194. package/lib/init/template/typescript/index.js +39 -0
  195. package/lib/init/template/workzone/index.js +5 -0
  196. package/lib/init/template/workzone-standard/files/manifest.json.hbs +6 -0
  197. package/lib/init/template/workzone-standard/index.js +30 -0
  198. package/lib/init/template/xsuaa/files/package.json.hbs +1 -1
  199. package/lib/init/template/xsuaa/files/values.yaml.hbs +3 -2
  200. package/lib/init/template/xsuaa/index.js +11 -7
  201. package/lib/init/validate.js +27 -0
  202. package/lib/lint/generators.js +1 -1
  203. package/lib/lint/io.js +25 -7
  204. package/lib/mtx/auth_manager.js +64 -30
  205. package/lib/mtx/download_legacy.js +2 -2
  206. package/lib/mtx/index.js +0 -4
  207. package/lib/mtx/params.js +32 -38
  208. package/lib/mtx/pull.js +151 -43
  209. package/lib/mtx/push.js +3 -3
  210. package/lib/mtx/settings_manager.js +75 -35
  211. package/lib/mtx/tenant_action.js +1 -1
  212. package/lib/mtx/util/cf.js +1 -1
  213. package/lib/mtx/util/fs.js +26 -1
  214. package/lib/mtx/util/logging.js +7 -3
  215. package/lib/util/command.js +0 -2
  216. package/lib/util/fs.js +2 -3
  217. package/lib/util/question.js +28 -0
  218. package/lib/util/term.js +5 -3
  219. package/npm-shrinkwrap.json +231 -1089
  220. package/package.json +13 -8
  221. package/bin/activate.js +0 -77
  222. package/lib/compile/asyncapi/channels.js +0 -22
  223. package/lib/compile/asyncapi/components/messageTraits/index.js +0 -89
  224. package/lib/compile/asyncapi/components/messages/index.js +0 -173
  225. package/lib/compile/asyncapi/components/schemas/annotations.js +0 -33
  226. package/lib/compile/asyncapi/components/schemas/array.js +0 -8
  227. package/lib/compile/asyncapi/components/schemas/cache.js +0 -14
  228. package/lib/compile/asyncapi/components/schemas/definition.js +0 -187
  229. package/lib/compile/asyncapi/components/schemas/enum.js +0 -16
  230. package/lib/compile/asyncapi/components/schemas/examples.js +0 -10
  231. package/lib/compile/asyncapi/components/schemas/index.js +0 -14
  232. package/lib/compile/asyncapi/components/schemas/localized.js +0 -29
  233. package/lib/compile/asyncapi/components/schemas/primitiveElement.js +0 -41
  234. package/lib/compile/asyncapi/components/schemas/ref.js +0 -45
  235. package/lib/compile/asyncapi/components/schemas/utils.js +0 -108
  236. package/lib/compile/asyncapi/index.js +0 -247
  237. package/lib/compile/asyncapi/message.js +0 -13
  238. package/lib/compile/asyncapi/utils.js +0 -27
  239. package/lib/compile/openapi/csdl2openapi.js +0 -2448
  240. package/lib/compile/openapi/index.js +0 -68
  241. package/lib/init/template/helm/files/chart/templates/NOTES.txt +0 -14
  242. package/lib/init/template/helm/files/chart/templates/_helpers.tpl +0 -28
  243. package/lib/init/template/helm/files/chart/values.root.schema.json +0 -61
  244. package/lib/init/template/helm/files/chart/values.schema.json +0 -366
  245. package/lib/init/template/helm-unified-runtime/files/Chart.yaml.hbs +0 -10
  246. package/lib/init/template/helm-unified-runtime/files/templates/_deployment_helpers.tpl +0 -90
  247. package/lib/init/template/helm-unified-runtime/files/templates/_helpers.tpl +0 -28
  248. package/lib/init/template/helm-unified-runtime/files/values.root.schema.json +0 -61
  249. package/lib/init/template/helm-unified-runtime/files/values.schema.json +0 -366
  250. package/lib/init/template/helm-unified-runtime/files/values.yaml.hbs +0 -26
  251. package/lib/init/template/helm-unified-runtime/package.json +0 -4
  252. package/lib/init/template/multitenancy/files/mtxs-configmap-java-approuter.yaml +0 -20
  253. package/lib/init/template/multitenancy/files/mtxs-configmap-java.yaml +0 -18
  254. package/lib/init/template/multitenancy/files/mtxs-configmap-nodejs-approuter.yaml +0 -12
  255. package/lib/init/template/multitenancy/files/mtxs-configmap-nodejs.yaml +0 -12
  256. package/lib/init/template/multitenancy/files/saas-registry-secret.yaml +0 -9
  257. package/lib/init/template/nodejs/files/eslint.config.js +0 -13
  258. package/lib/init/template/notebook/index.js +0 -11
  259. package/lib/init/template/samples/index.js +0 -9
  260. package/lib/mtx/activate.js +0 -238
  261. package/lib/mtx/extend.js +0 -173
  262. package/lib/util/exec.d.ts +0 -54
  263. package/lib/util/exec.js +0 -211
  264. /package/lib/{init/template/approuter/files → build/plugins/helm/files/plugins/approuter}/approuter-configmap.yaml +0 -0
  265. /package/lib/{init/template/connectivity/files → build/plugins/helm/files/plugins/connectivity}/connectivity-proxy-info.yaml +0 -0
  266. /package/lib/{init/template/html5-repo/files → build/plugins/helm/files/plugins/html5-repo}/html5-apps-deployer-configmap.yaml +0 -0
  267. /package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/content-deployment/templates/_helpers.tpl +0 -0
  268. /package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/content-deployment/templates/job.yaml +0 -0
  269. /package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/content-deployment/templates/secret.yaml +0 -0
  270. /package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/content-deployment/templates/service-account.yaml +0 -0
  271. /package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/content-deployment/templates/service-binding.yaml +0 -0
  272. /package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/content-deployment/values.schema.json +0 -0
  273. /package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/web-application/templates/NOTES.txt +0 -0
  274. /package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/web-application/templates/_api.tpl +0 -0
  275. /package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/web-application/templates/_helpers.tpl +0 -0
  276. /package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/web-application/templates/api-rule.yaml +0 -0
  277. /package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/web-application/templates/network-policy.yaml +0 -0
  278. /package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/web-application/templates/rbac.yaml +0 -0
  279. /package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/web-application/templates/secret.yaml +0 -0
  280. /package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/web-application/templates/service-account.yaml +0 -0
  281. /package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/web-application/templates/service-binding.yaml +0 -0
  282. /package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/web-application/templates/service.yaml +0 -0
  283. /package/lib/{init/template/helm/files → build/plugins/helm/files/subcharts}/web-application/templates/virtual-service.yaml +0 -0
  284. /package/lib/{init/template/helm-unified-runtime → build/plugins/helm}/files/templates/NOTES.txt +0 -0
  285. /package/lib/init/template/{nodejs/files → java}/.cdsrc.json +0 -0
  286. /package/lib/init/template/tiny-sample/files/nodejs/db/{data-model.cds → schema.cds} +0 -0
@@ -0,0 +1,2173 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "type": "object",
4
+ "required": [
5
+ "srv",
6
+ "global"
7
+ ],
8
+ "additionalProperties": true,
9
+ "properties": {
10
+ "global": {
11
+ "$id": "#/properties/global",
12
+ "type": "object",
13
+ "x-ignore-untested": true,
14
+ "additionalProperties": true,
15
+ "properties": {
16
+ "imagePullSecret": {
17
+ "$id": "#/properties/global/imagePullSecret",
18
+ "additionalProperties": true,
19
+ "type": "object",
20
+ "properties": {
21
+ "name": {
22
+ "$ref": "#/definitions/KubernetesName"
23
+ },
24
+ "dockerconfigjson": {
25
+ "type": "string"
26
+ }
27
+ },
28
+ "dependencies": {
29
+ "name": {
30
+ "not": {
31
+ "required": [
32
+ "dockerconfigjson"
33
+ ]
34
+ }
35
+ },
36
+ "dockerconfigjson": {
37
+ "not": {
38
+ "required": [
39
+ "name"
40
+ ]
41
+ }
42
+ }
43
+ }
44
+ },
45
+ "image": {
46
+ "$id": "#/properties/global/image",
47
+ "type": "object",
48
+ "required": [],
49
+ "additionalProperties": true,
50
+ "properties": {
51
+ "tag": {
52
+ "$id": "#/properties/image/global/properties/tag",
53
+ "$ref": "#/definitions/ImageTag"
54
+ },
55
+ "registry": {
56
+ "$id": "#/properties/image/global/properties/registry",
57
+ "$ref": "#/definitions/ImageRegistry"
58
+ }
59
+ }
60
+ },
61
+ "imagePullPolicy": {
62
+ "$ref": "#/definitions/ImagePullPolicy"
63
+ }
64
+ }
65
+ },
66
+ "srv": {
67
+ "$id": "#/properties/srv",
68
+ "description": "CAP Application",
69
+ "$ref": "#/definitions/WebApplication"
70
+ },
71
+ "sidecar": {
72
+ "$id": "#/properties/sidecar",
73
+ "description": "MTXS Sidecar",
74
+ "$ref": "#/definitions/WebApplication"
75
+ },
76
+ "approuter": {
77
+ "$id": "#/properties/approuter",
78
+ "$ref": "#/definitions/WebApplication"
79
+ },
80
+ "hana-deployer": {
81
+ "$id": "#/properties/hana-deployer",
82
+ "$ref": "#/definitions/ContentDeployment"
83
+ },
84
+ "html5-apps-deployer": {
85
+ "$id": "#/properties/html5-apps-deployer",
86
+ "$ref": "#/definitions/ContentDeployment"
87
+ },
88
+ "event-mesh": {
89
+ "$id": "#/properties/event-mesh",
90
+ "description": "Service Instance",
91
+ "$ref": "#/definitions/ServiceInstance"
92
+ },
93
+ "html5-apps-repo-host": {
94
+ "$id": "#/properties/html5-apps-repo-host",
95
+ "description": "Service Instance",
96
+ "$ref": "#/definitions/ServiceInstance"
97
+ },
98
+ "html5-apps-repo-runtime": {
99
+ "$id": "#/properties/html5-apps-repo-host",
100
+ "description": "Service Instance",
101
+ "$ref": "#/definitions/ServiceInstance"
102
+ },
103
+ "xsuaa": {
104
+ "$id": "#/properties/xsuaa",
105
+ "description": "Service Instance",
106
+ "$ref": "#/definitions/ServiceInstance"
107
+ },
108
+ "destination": {
109
+ "$id": "#/properties/destination",
110
+ "description": "Service Instance",
111
+ "$ref": "#/definitions/ServiceInstance"
112
+ },
113
+ "hana": {
114
+ "$id": "#/properties/hana",
115
+ "description": "Service Instance",
116
+ "$ref": "#/definitions/ServiceInstance"
117
+ },
118
+ "saas-registry": {
119
+ "$id": "#/properties/saas-registry",
120
+ "description": "Service Instance",
121
+ "$ref": "#/definitions/ServiceInstance"
122
+ },
123
+ "service-manager": {
124
+ "$id": "#/properties/service-manager",
125
+ "description": "Service Instance",
126
+ "$ref": "#/definitions/ServiceInstance"
127
+ }
128
+ },
129
+ "definitions": {
130
+ "KubernetesName": {
131
+ "type": "string",
132
+ "$comment": "running `kubectl create secret generic invalid_name` will print this regex",
133
+ "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$"
134
+ },
135
+ "ImageRegistry": {
136
+ "type": "string",
137
+ "title": "Image registry",
138
+ "pattern": "^[\\w-./:]+$"
139
+ },
140
+ "ImageTag": {
141
+ "title": "Image tag",
142
+ "type": "string",
143
+ "$comment": "Copied from https://github.com/containers/image/blob/18d58d29fdc4fc32fb8a8a6d186b829b217f1bf5/docker/reference/regexp.go#L68-L70",
144
+ "pattern": "^((?:(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])(?:(?:\\.(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]))+)?(?::[0-9]+)?/)?[a-z0-9]+(?:(?:(?:[._]|__|[-]*)[a-z0-9]+)+)?(?:(?:/[a-z0-9]+(?:(?:(?:[._]|__|[-]*)[a-z0-9]+)+)?)+)?)(?::([\\w][\\w.-]{0,127}))?(?:@([A-Za-z][A-Za-z0-9]*(?:[-_+.][A-Za-z][A-Za-z0-9]*)*[:][[:xdigit:]]{32,}))?$"
145
+ },
146
+ "ImagePullPolicy": {
147
+ "title": "ImagePullPolicy",
148
+ "type": "string",
149
+ "enum": [
150
+ "Always",
151
+ "IfNotPresent",
152
+ "Never"
153
+ ]
154
+ },
155
+ "ContentDeployment": {
156
+ "type": "object",
157
+ "required": [
158
+ "image",
159
+ "bindings"
160
+ ],
161
+ "additionalProperties": false,
162
+ "properties": {
163
+ "global": {
164
+ "$id": "#/properties/global",
165
+ "type": "object",
166
+ "x-ignore-untested": true,
167
+ "additionalProperties": true,
168
+ "properties": {
169
+ "imagePullSecret": {
170
+ "$id": "#/properties/global/imagePullSecret",
171
+ "additionalProperties": true,
172
+ "type": "object",
173
+ "properties": {
174
+ "name": {
175
+ "$ref": "#/definitions/KubernetesName"
176
+ },
177
+ "dockerconfigjson": {
178
+ "type": "string"
179
+ }
180
+ },
181
+ "dependencies": {
182
+ "name": {
183
+ "not": {
184
+ "required": [
185
+ "dockerconfigjson"
186
+ ]
187
+ }
188
+ },
189
+ "dockerconfigjson": {
190
+ "not": {
191
+ "required": [
192
+ "name"
193
+ ]
194
+ }
195
+ }
196
+ }
197
+ },
198
+ "image": {
199
+ "$id": "#/properties/global/image",
200
+ "title": "Image configuration",
201
+ "type": "object",
202
+ "required": [],
203
+ "additionalProperties": true,
204
+ "properties": {
205
+ "tag": {
206
+ "$id": "#/properties/image/global/properties/tag",
207
+ "$ref": "#/definitions/ImageTag"
208
+ },
209
+ "registry": {
210
+ "$id": "#/properties/image/global/properties/registry",
211
+ "$ref": "#/definitions/ImageRegistry"
212
+ }
213
+ }
214
+ },
215
+ "imagePullPolicy": {
216
+ "$ref": "#/definitions/ImagePullPolicy"
217
+ }
218
+ }
219
+ },
220
+ "nameOverride": {
221
+ "$id": "#/properties/nameOverride",
222
+ "type": "string",
223
+ "pattern": "[0-9a-z][0-9a-z-.]*"
224
+ },
225
+ "fullnameOverride": {
226
+ "$id": "#/properties/fullnameOverride",
227
+ "type": "string",
228
+ "pattern": "[0-9a-z][0-9a-z-.]*"
229
+ },
230
+ "serviceAccountName": {
231
+ "$id": "#/properties/serviceAccountName",
232
+ "type": "string"
233
+ },
234
+ "runAsUser": {
235
+ "$id": "#/properties/runAsUser",
236
+ "type": "integer",
237
+ "minimum": 1
238
+ },
239
+ "image": {
240
+ "$id": "#/properties/image",
241
+ "title": "Image configuration",
242
+ "type": "object",
243
+ "required": [
244
+ "repository"
245
+ ],
246
+ "additionalProperties": false,
247
+ "properties": {
248
+ "repository": {
249
+ "$id": "#/properties/image/properties/repository",
250
+ "type": "string",
251
+ "pattern": "^[\\w-./:]*(@sha256)?$"
252
+ },
253
+ "tag": {
254
+ "$id": "#/properties/image/properties/tag",
255
+ "$ref": "#/definitions/ImageTag"
256
+ },
257
+ "registry": {
258
+ "$id": "#/properties/image/properties/registry",
259
+ "$ref": "#/definitions/ImageRegistry"
260
+ }
261
+ }
262
+ },
263
+ "imagePullSecret": {
264
+ "$id": "#/properties/imagePullSecret",
265
+ "additionalProperties": false,
266
+ "type": "object",
267
+ "properties": {
268
+ "name": {
269
+ "$ref": "#/definitions/KubernetesName"
270
+ },
271
+ "dockerconfigjson": {
272
+ "type": "string"
273
+ }
274
+ },
275
+ "dependencies": {
276
+ "name": {
277
+ "not": {
278
+ "required": [
279
+ "dockerconfigjson"
280
+ ]
281
+ }
282
+ },
283
+ "dockerconfigjson": {
284
+ "not": {
285
+ "required": [
286
+ "name"
287
+ ]
288
+ }
289
+ }
290
+ }
291
+ },
292
+ "imagePullPolicy": {
293
+ "$ref": "#/definitions/ImagePullPolicy"
294
+ },
295
+ "resources": {
296
+ "$id": "#/properties/resources",
297
+ "type": "object",
298
+ "additionalProperties": false,
299
+ "properties": {
300
+ "requests": {
301
+ "type": "object",
302
+ "additionalProperties": false,
303
+ "properties": {
304
+ "cpu": {
305
+ "$id": "#/properties/resources/properties/requests/properties/cpu",
306
+ "type": [
307
+ "number",
308
+ "string"
309
+ ]
310
+ },
311
+ "ephemeral-storage": {
312
+ "$id": "#/properties/resources/properties/requests/properties/ephemeral-storage",
313
+ "type": "string"
314
+ },
315
+ "memory": {
316
+ "$id": "#/properties/resources/properties/requests/properties/memory",
317
+ "type": "string"
318
+ }
319
+ }
320
+ },
321
+ "limits": {
322
+ "type": "object",
323
+ "additionalProperties": false,
324
+ "properties": {
325
+ "cpu": {
326
+ "$id": "#/properties/resources/properties/limits/properties/cpu",
327
+ "type": [
328
+ "number",
329
+ "string"
330
+ ]
331
+ },
332
+ "ephemeral-storage": {
333
+ "$id": "#/properties/resources/properties/limits/properties/ephemeral-storage",
334
+ "type": "string"
335
+ },
336
+ "memory": {
337
+ "$id": "#/properties/resources/properties/limits/properties/memory",
338
+ "type": "string"
339
+ }
340
+ }
341
+ }
342
+ }
343
+ },
344
+ "env": {
345
+ "$id": "#/properties/env",
346
+ "anyOf": [
347
+ {
348
+ "type": "object",
349
+ "patternProperties": {
350
+ "^[-._a-zA-Z][-._a-zA-Z0-9]*$": {
351
+ "$comment": "regex above copied from https://github.com/kubernetes/kubernetes/blob/ea0764452222146c47ec826977f49d7001b0ea8c/staging/src/k8s.io/apimachinery/pkg/util/validation/validation.go#L402",
352
+ "anyOf": [
353
+ {
354
+ "type": [
355
+ "integer",
356
+ "string"
357
+ ]
358
+ },
359
+ {
360
+ "type": "object",
361
+ "additionalProperties": false,
362
+ "maxProperties": 1,
363
+ "properties": {
364
+ "configMapKeyRef": {
365
+ "type": "object",
366
+ "additionalProperties": false,
367
+ "properties": {
368
+ "name": {
369
+ "type": "string"
370
+ },
371
+ "key": {
372
+ "type": "string"
373
+ }
374
+ }
375
+ },
376
+ "secretKeyRef": {
377
+ "type": "object",
378
+ "additionalProperties": false,
379
+ "properties": {
380
+ "name": {
381
+ "type": "string"
382
+ },
383
+ "key": {
384
+ "type": "string"
385
+ }
386
+ }
387
+ },
388
+ "resourceFieldRef": {
389
+ "type": "object",
390
+ "additionalProperties": false,
391
+ "properties": {
392
+ "containerName": {
393
+ "type": "string"
394
+ },
395
+ "resource": {
396
+ "type": "string"
397
+ }
398
+ }
399
+ },
400
+ "fieldRef": {
401
+ "type": "object",
402
+ "additionalProperties": false,
403
+ "properties": {
404
+ "fieldPath": {
405
+ "type": "string"
406
+ }
407
+ }
408
+ }
409
+ }
410
+ }
411
+ ]
412
+ }
413
+ },
414
+ "additionalProperties": false,
415
+ "default": {}
416
+ },
417
+ {
418
+ "type": "array",
419
+ "uniqueItems": true,
420
+ "items": {
421
+ "type": "object",
422
+ "additionalProperties": false,
423
+ "maxProperties": 2,
424
+ "required": [
425
+ "name"
426
+ ],
427
+ "properties": {
428
+ "name": {
429
+ "type": "string",
430
+ "pattern": "^[-._a-zA-Z][-._a-zA-Z0-9]*$"
431
+ },
432
+ "value": {
433
+ "type": [
434
+ "string",
435
+ "integer"
436
+ ]
437
+ },
438
+ "configMapKeyRef": {
439
+ "type": "object",
440
+ "additionalProperties": false,
441
+ "properties": {
442
+ "name": {
443
+ "type": "string"
444
+ },
445
+ "key": {
446
+ "type": "string"
447
+ }
448
+ }
449
+ },
450
+ "secretKeyRef": {
451
+ "type": "object",
452
+ "additionalProperties": false,
453
+ "properties": {
454
+ "name": {
455
+ "type": "string"
456
+ },
457
+ "key": {
458
+ "type": "string"
459
+ }
460
+ }
461
+ },
462
+ "resourceFieldRef": {
463
+ "type": "object",
464
+ "additionalProperties": false,
465
+ "properties": {
466
+ "containerName": {
467
+ "type": "string"
468
+ },
469
+ "resource": {
470
+ "type": "string"
471
+ }
472
+ }
473
+ },
474
+ "fieldRef": {
475
+ "type": "object",
476
+ "additionalProperties": false,
477
+ "properties": {
478
+ "fieldPath": {
479
+ "type": "string"
480
+ }
481
+ }
482
+ }
483
+ }
484
+ }
485
+ }
486
+ ],
487
+ "default": {}
488
+ },
489
+ "envSecretNames": {
490
+ "$id": "#/properties/envSecretNames",
491
+ "type": "array",
492
+ "uniqueItems": true,
493
+ "items": {
494
+ "type": "string",
495
+ "$ref": "#/definitions/KubernetesName"
496
+ }
497
+ },
498
+ "envFrom": {
499
+ "$id": "#/properties/envFrom",
500
+ "type": "array",
501
+ "default": [],
502
+ "items": {
503
+ "type": "object",
504
+ "oneOf": [
505
+ {
506
+ "additionalProperties": false,
507
+ "properties": {
508
+ "configMapRef": {
509
+ "properties": {
510
+ "name": {
511
+ "type": "string"
512
+ }
513
+ },
514
+ "required": [
515
+ "name"
516
+ ],
517
+ "additionalProperties": false,
518
+ "type": "object"
519
+ }
520
+ },
521
+ "required": [
522
+ "configMapRef"
523
+ ]
524
+ },
525
+ {
526
+ "additionalProperties": false,
527
+ "properties": {
528
+ "secretRef": {
529
+ "properties": {
530
+ "name": {
531
+ "type": "string"
532
+ }
533
+ },
534
+ "required": [
535
+ "name"
536
+ ],
537
+ "additionalProperties": false,
538
+ "type": "object"
539
+ }
540
+ },
541
+ "required": [
542
+ "secretRef"
543
+ ]
544
+ }
545
+ ]
546
+ }
547
+ },
548
+ "ttlDaysAfterFinished": {
549
+ "$id": "#/properties/ttlDaysAfterFinished",
550
+ "title": "Time to keep the Job after it has finished.",
551
+ "type": "integer",
552
+ "minimum": 0,
553
+ "default": 14
554
+ },
555
+ "bindings": {
556
+ "$id": "#/properties/bindings",
557
+ "title": "Service Binding configuration",
558
+ "type": "object",
559
+ "additionalProperties": false,
560
+ "minProperties": 1,
561
+ "patternProperties": {
562
+ "^[-._a-zA-Z][-._a-zA-Z0-9]*$": {
563
+ "oneOf": [
564
+ {
565
+ "type": "object",
566
+ "additionalProperties": false,
567
+ "required": [
568
+ "fromSecret"
569
+ ],
570
+ "properties": {
571
+ "fromSecret": {
572
+ "type": "string"
573
+ }
574
+ }
575
+ },
576
+ {
577
+ "type": "object",
578
+ "additionalProperties": false,
579
+ "properties": {
580
+ "serviceInstanceName": {
581
+ "type": "string"
582
+ },
583
+ "serviceInstanceFullname": {
584
+ "type": "string"
585
+ },
586
+ "externalName": {
587
+ "type": "string"
588
+ },
589
+ "secretName": {
590
+ "type": "string"
591
+ },
592
+ "parameters": {
593
+ "type": "object"
594
+ },
595
+ "parametersFrom": {
596
+ "type": "array",
597
+ "items": {
598
+ "anyOf": [
599
+ {
600
+ "type": "object",
601
+ "additionalProperties": false,
602
+ "properties": {
603
+ "secretKeyRef": {
604
+ "type": "object",
605
+ "additionalProperties": false,
606
+ "required": [
607
+ "name",
608
+ "key"
609
+ ],
610
+ "properties": {
611
+ "name": {
612
+ "type": "string"
613
+ },
614
+ "key": {
615
+ "type": "string"
616
+ }
617
+ }
618
+ }
619
+ }
620
+ },
621
+ {
622
+ "type": "object",
623
+ "additionalProperties": false,
624
+ "properties": {
625
+ "configMapKeyRef": {
626
+ "type": "object",
627
+ "additionalProperties": false,
628
+ "required": [
629
+ "name",
630
+ "key"
631
+ ],
632
+ "properties": {
633
+ "name": {
634
+ "type": "string"
635
+ },
636
+ "key": {
637
+ "type": "string"
638
+ }
639
+ }
640
+ }
641
+ }
642
+ }
643
+ ]
644
+ }
645
+ },
646
+ "credentialsRotationPolicy": {
647
+ "type": "object"
648
+ }
649
+ },
650
+ "dependencies": {
651
+ "serviceInstanceName": {
652
+ "not": {
653
+ "required": [
654
+ "serviceInstanceFullname"
655
+ ]
656
+ }
657
+ },
658
+ "serviceInstanceFullname": {
659
+ "not": {
660
+ "required": [
661
+ "serviceInstanceName"
662
+ ]
663
+ }
664
+ }
665
+ }
666
+ }
667
+ ]
668
+ }
669
+ }
670
+ },
671
+ "annotations": {
672
+ "$id": "#/properties/annotations",
673
+ "title": "Additional annotations",
674
+ "type": "object",
675
+ "additionalProperties": false,
676
+ "properties": {
677
+ "job": {
678
+ "type": "object",
679
+ "title": "Annotations to add to the Job",
680
+ "patternProperties": {
681
+ ".*": {
682
+ "type": "string"
683
+ }
684
+ }
685
+ }
686
+ }
687
+ }
688
+ }
689
+ },
690
+ "ServiceInstance": {
691
+ "type": "object",
692
+ "required": [
693
+ "serviceOfferingName",
694
+ "servicePlanName"
695
+ ],
696
+ "additionalProperties": false,
697
+ "properties": {
698
+ "global": {
699
+ "$id": "#/properties/global",
700
+ "type": "object",
701
+ "x-ignore-untested": true
702
+ },
703
+ "nameOverride": {
704
+ "$id": "#/properties/nameOverride",
705
+ "type": "string",
706
+ "pattern": "[0-9a-z][0-9a-z-.]*"
707
+ },
708
+ "fullnameOverride": {
709
+ "$id": "#/properties/fullnameOverride",
710
+ "type": "string",
711
+ "pattern": "[0-9a-z][0-9a-z-.]*"
712
+ },
713
+ "serviceOfferingName": {
714
+ "$id": "#/properties/serviceOfferingName",
715
+ "type": "string",
716
+ "pattern": "[0-9a-z][0-9a-z-.]*"
717
+ },
718
+ "servicePlanName": {
719
+ "$id": "#/properties/servicePlanName",
720
+ "type": "string",
721
+ "pattern": "[0-9a-z][0-9a-z-.]*"
722
+ },
723
+ "btpAccessCredentialsSecret": {
724
+ "$id": "#/properties/btpAccessCredentialsSecret",
725
+ "type": "string"
726
+ },
727
+ "externalName": {
728
+ "$id": "#/properties/externalName",
729
+ "type": "string",
730
+ "pattern": "[0-9a-z][0-9a-z-.]*"
731
+ },
732
+ "customTags": {
733
+ "$id": "#/properties/customTags",
734
+ "type": "array",
735
+ "uniqueItems": true,
736
+ "items": {
737
+ "type": "string"
738
+ }
739
+ },
740
+ "parameters": {
741
+ "$id": "#/properties/parameters",
742
+ "type": "object"
743
+ },
744
+ "jsonParameters": {
745
+ "$id": "#/properties/jsonParameters",
746
+ "type": "string"
747
+ },
748
+ "parametersFrom": {
749
+ "$id": "#/properties/parametersFrom",
750
+ "type": "array",
751
+ "uniqueItems": true,
752
+ "items": {
753
+ "type": "object",
754
+ "additionalProperties": false,
755
+ "properties": {
756
+ "secretKeyRef": {
757
+ "type": "object",
758
+ "additionalProperties": false,
759
+ "required": [
760
+ "name",
761
+ "key"
762
+ ],
763
+ "properties": {
764
+ "name": {
765
+ "type": "string"
766
+ },
767
+ "key": {
768
+ "type": "string"
769
+ }
770
+ }
771
+ }
772
+ }
773
+ }
774
+ },
775
+ "annotations": {
776
+ "$id": "#/properties/annotations",
777
+ "title": "Additional annotations",
778
+ "type": "object",
779
+ "additionalProperties": false,
780
+ "properties": {
781
+ "serviceInstance": {
782
+ "type": "object",
783
+ "patternProperties": {
784
+ ".*": {
785
+ "type": "string"
786
+ }
787
+ }
788
+ },
789
+ "serviceBinding": {
790
+ "type": "object",
791
+ "patternProperties": {
792
+ ".*": {
793
+ "type": "string"
794
+ }
795
+ }
796
+ }
797
+ }
798
+ },
799
+ "bindings": {
800
+ "$id": "#/properties/bindings",
801
+ "title": "Service Binding configuration",
802
+ "type": "object",
803
+ "additionalProperties": false,
804
+ "patternProperties": {
805
+ "^[-._a-zA-Z][-._a-zA-Z0-9]*$": {
806
+ "type": "object",
807
+ "additionalProperties": false,
808
+ "properties": {
809
+ "externalName": {
810
+ "type": "string"
811
+ },
812
+ "secretName": {
813
+ "type": "string"
814
+ },
815
+ "parameters": {
816
+ "type": "object"
817
+ },
818
+ "parametersFrom": {
819
+ "type": "array",
820
+ "items": {
821
+ "type": "object",
822
+ "additionalProperties": false,
823
+ "properties": {
824
+ "secretKeyRef": {
825
+ "type": "object",
826
+ "additionalProperties": false,
827
+ "required": [
828
+ "name",
829
+ "key"
830
+ ],
831
+ "properties": {
832
+ "name": {
833
+ "type": "string"
834
+ },
835
+ "key": {
836
+ "type": "string"
837
+ }
838
+ }
839
+ }
840
+ }
841
+ }
842
+ },
843
+ "credentialsRotationPolicy": {
844
+ "type": "object"
845
+ }
846
+ }
847
+ }
848
+ }
849
+ }
850
+ }
851
+ },
852
+ "WebApplication": {
853
+ "type": "object",
854
+ "required": [
855
+ "image",
856
+ "resources"
857
+ ],
858
+ "additionalProperties": false,
859
+ "properties": {
860
+ "global": {
861
+ "$id": "#/properties/global",
862
+ "type": "object",
863
+ "x-ignore-untested": true,
864
+ "additionalProperties": true,
865
+ "properties": {
866
+ "imagePullSecret": {
867
+ "$id": "#/properties/global/imagePullSecret",
868
+ "additionalProperties": true,
869
+ "type": "object",
870
+ "properties": {
871
+ "name": {
872
+ "$ref": "#/definitions/KubernetesName"
873
+ },
874
+ "dockerconfigjson": {
875
+ "type": "string"
876
+ }
877
+ },
878
+ "dependencies": {
879
+ "name": {
880
+ "not": {
881
+ "required": [
882
+ "dockerconfigjson"
883
+ ]
884
+ }
885
+ },
886
+ "dockerconfigjson": {
887
+ "not": {
888
+ "required": [
889
+ "name"
890
+ ]
891
+ }
892
+ }
893
+ }
894
+ },
895
+ "image": {
896
+ "$id": "#/properties/global/image",
897
+ "type": "object",
898
+ "required": [],
899
+ "additionalProperties": true,
900
+ "properties": {
901
+ "tag": {
902
+ "$id": "#/properties/image/global/properties/tag",
903
+ "$ref": "#/definitions/ImageTag"
904
+ },
905
+ "registry": {
906
+ "$id": "#/properties/image/global/properties/registry",
907
+ "$ref": "#/definitions/ImageRegistry"
908
+ }
909
+ }
910
+ },
911
+ "imagePullPolicy": {
912
+ "$ref": "#/definitions/ImagePullPolicy"
913
+ }
914
+ }
915
+ },
916
+ "nameOverride": {
917
+ "$id": "#/properties/nameOverride",
918
+ "type": "string",
919
+ "pattern": "[0-9a-z][0-9a-z-.]*"
920
+ },
921
+ "fullnameOverride": {
922
+ "$id": "#/properties/fullnameOverride",
923
+ "type": "string",
924
+ "pattern": "[0-9a-z][0-9a-z-.]*"
925
+ },
926
+ "runAsUser": {
927
+ "$id": "#/properties/runAsUser",
928
+ "type": "integer",
929
+ "minimum": 1
930
+ },
931
+ "replicaCount": {
932
+ "$id": "#/properties/replicaCount",
933
+ "type": "integer",
934
+ "minimum": 1,
935
+ "default": 1
936
+ },
937
+ "port": {
938
+ "$id": "#/properties/port",
939
+ "type": "integer",
940
+ "minimum": 1,
941
+ "maximum": 65535,
942
+ "default": 8080
943
+ },
944
+ "serviceAccountName": {
945
+ "$id": "#/properties/serviceAccountName",
946
+ "type": "string"
947
+ },
948
+ "imagePullPolicy": {
949
+ "$ref": "#/definitions/ImagePullPolicy"
950
+ },
951
+ "image": {
952
+ "$id": "#/properties/image",
953
+ "type": "object",
954
+ "required": [
955
+ "repository"
956
+ ],
957
+ "additionalProperties": false,
958
+ "properties": {
959
+ "repository": {
960
+ "$id": "#/properties/image/properties/repository",
961
+ "type": "string",
962
+ "pattern": "^[\\w-./:]*(@sha256)?$"
963
+ },
964
+ "tag": {
965
+ "$id": "#/properties/image/properties/tag",
966
+ "$ref": "#/definitions/ImageTag"
967
+ },
968
+ "registry": {
969
+ "$id": "#/properties/image/properties/registry",
970
+ "$ref": "#/definitions/ImageRegistry"
971
+ }
972
+ }
973
+ },
974
+ "imagePullSecret": {
975
+ "$id": "#/properties/imagePullSecret",
976
+ "additionalProperties": false,
977
+ "type": "object",
978
+ "properties": {
979
+ "name": {
980
+ "title": "Secret name",
981
+ "$ref": "#/definitions/KubernetesName"
982
+ },
983
+ "dockerconfigjson": {
984
+ "title": "Secret content",
985
+ "type": "string"
986
+ }
987
+ },
988
+ "dependencies": {
989
+ "name": {
990
+ "not": {
991
+ "required": [
992
+ "dockerconfigjson"
993
+ ]
994
+ }
995
+ },
996
+ "dockerconfigjson": {
997
+ "not": {
998
+ "required": [
999
+ "name"
1000
+ ]
1001
+ }
1002
+ }
1003
+ }
1004
+ },
1005
+ "additionalVolumes": {
1006
+ "$id": "#/properties/additionalVolumes",
1007
+ "type": "array",
1008
+ "additionalItems": false,
1009
+ "default": [],
1010
+ "items": {
1011
+ "type": "object",
1012
+ "additionalProperties": true,
1013
+ "required": [
1014
+ "name",
1015
+ "volumeMount"
1016
+ ],
1017
+ "properties": {
1018
+ "name": {
1019
+ "type": "string",
1020
+ "$ref": "#/definitions/KubernetesName"
1021
+ },
1022
+ "volumeMount": {
1023
+ "type": "object",
1024
+ "required": [
1025
+ "mountPath"
1026
+ ],
1027
+ "additionalProperties": false,
1028
+ "properties": {
1029
+ "mountPath": {
1030
+ "type": "string",
1031
+ "pattern": "^[^:]*$"
1032
+ },
1033
+ "mountPropagation": {
1034
+ "type": "string",
1035
+ "enum": [
1036
+ "None",
1037
+ "HostToContainer"
1038
+ ]
1039
+ },
1040
+ "readOnly": {
1041
+ "type": "boolean"
1042
+ },
1043
+ "subPath": {
1044
+ "type": "string"
1045
+ },
1046
+ "subPathExpr": {
1047
+ "type": "string"
1048
+ }
1049
+ }
1050
+ }
1051
+ }
1052
+ }
1053
+ },
1054
+ "resources": {
1055
+ "$id": "#/properties/resources",
1056
+ "type": "object",
1057
+ "additionalProperties": false,
1058
+ "required": [
1059
+ "requests",
1060
+ "limits"
1061
+ ],
1062
+ "properties": {
1063
+ "requests": {
1064
+ "type": "object",
1065
+ "additionalProperties": false,
1066
+ "required": [
1067
+ "cpu",
1068
+ "memory"
1069
+ ],
1070
+ "properties": {
1071
+ "cpu": {
1072
+ "$id": "#/properties/resources/properties/requests/properties/cpu",
1073
+ "type": [
1074
+ "string",
1075
+ "number"
1076
+ ]
1077
+ },
1078
+ "ephemeral-storage": {
1079
+ "$id": "#/properties/resources/properties/requests/properties/ephemeral-storage",
1080
+ "type": "string"
1081
+ },
1082
+ "memory": {
1083
+ "$id": "#/properties/resources/properties/requests/properties/memory",
1084
+ "type": "string"
1085
+ }
1086
+ }
1087
+ },
1088
+ "limits": {
1089
+ "type": "object",
1090
+ "additionalProperties": false,
1091
+ "required": [
1092
+ "memory"
1093
+ ],
1094
+ "properties": {
1095
+ "cpu": {
1096
+ "$id": "#/properties/resources/properties/limits/properties/cpu",
1097
+ "type": [
1098
+ "string",
1099
+ "number"
1100
+ ]
1101
+ },
1102
+ "ephemeral-storage": {
1103
+ "$id": "#/properties/resources/properties/limits/properties/ephemeral-storage",
1104
+ "type": "string"
1105
+ },
1106
+ "memory": {
1107
+ "$id": "#/properties/resources/properties/limits/properties/memory",
1108
+ "type": "string"
1109
+ }
1110
+ }
1111
+ }
1112
+ }
1113
+ },
1114
+ "istio": {
1115
+ "$id": "#/properties/istio",
1116
+ "additionalProperties": false,
1117
+ "type": "object",
1118
+ "required": [
1119
+ "enabled"
1120
+ ],
1121
+ "properties": {
1122
+ "enabled": {
1123
+ "$id": "#/properties/istio/properties/enabled",
1124
+ "type": "boolean"
1125
+ }
1126
+ }
1127
+ },
1128
+ "availability": {
1129
+ "$id": "#/properties/availability",
1130
+ "type": "object",
1131
+ "additionalProperties": false,
1132
+ "properties": {
1133
+ "podDisruptionBudget": {
1134
+ "$id": "#/properties/availability/properties/podDisruptionBudget",
1135
+ "type": "object",
1136
+ "additionalProperties": false,
1137
+ "properties": {
1138
+ "maxUnavailable": {
1139
+ "type": "string",
1140
+ "default": "10%"
1141
+ },
1142
+ "unhealthyPodEvictionPolicy": {
1143
+ "type": "string",
1144
+ "default": "AlwaysAllow",
1145
+ "enum": ["AlwaysAllow", "IfHealthyBudget"]
1146
+ }
1147
+ }
1148
+ },
1149
+ "topologySpreadConstraints": {
1150
+ "$id": "#/properties/availability/properties/topologySpreadConstraints",
1151
+ "uniqueItems": true,
1152
+ "items": {
1153
+ "type": "object",
1154
+ "additionalProperties": false,
1155
+ "required": [
1156
+ "topologyKey",
1157
+ "maxSkew",
1158
+ "whenUnsatisfiable"
1159
+ ],
1160
+ "properties": {
1161
+ "topologyKey": {
1162
+ "type": "string"
1163
+ },
1164
+ "maxSkew": {
1165
+ "type": "integer",
1166
+ "minimum": 1
1167
+ },
1168
+ "whenUnsatisfiable": {
1169
+ "type": "string",
1170
+ "enum": [
1171
+ "ScheduleAnyway",
1172
+ "DoNotSchedule"
1173
+ ]
1174
+ },
1175
+ "matchLabelKeys": {
1176
+ "type": "array",
1177
+ "items": {
1178
+ "type": "string"
1179
+ }
1180
+ }
1181
+ }
1182
+ },
1183
+ "default": [
1184
+ {
1185
+ "maxSkew": 1,
1186
+ "topologyKey": "topology.kubernetes.io/zone",
1187
+ "whenUnsatisfiable": "ScheduleAnyway"
1188
+ },
1189
+ {
1190
+ "maxSkew": 1,
1191
+ "topologyKey": "kubernetes.io/hostname",
1192
+ "whenUnsatisfiable": "ScheduleAnyway"
1193
+ }
1194
+ ]
1195
+ }
1196
+ }
1197
+ },
1198
+ "health": {
1199
+ "$id": "#/properties/health",
1200
+ "type": "object",
1201
+ "additionalProperties": false,
1202
+ "properties": {
1203
+ "liveness": {
1204
+ "$id": "#/properties/health/properties/liveness",
1205
+ "type": "object",
1206
+ "additionalProperties": false,
1207
+ "properties": {
1208
+ "path": {
1209
+ "type": "string",
1210
+ "default": "/healthz"
1211
+ },
1212
+ "periodSeconds": {
1213
+ "type": "integer",
1214
+ "minimum": 1
1215
+ },
1216
+ "failureThreshold": {
1217
+ "type": "integer",
1218
+ "minimum": 1
1219
+ }
1220
+ }
1221
+ },
1222
+ "readiness": {
1223
+ "$id": "#/properties/health/properties/readiness",
1224
+ "type": "object",
1225
+ "additionalProperties": false,
1226
+ "properties": {
1227
+ "path": {
1228
+ "type": "string",
1229
+ "default": "/healthz"
1230
+ },
1231
+ "periodSeconds": {
1232
+ "type": "integer",
1233
+ "minimum": 1
1234
+ },
1235
+ "failureThreshold": {
1236
+ "type": "integer",
1237
+ "minimum": 1
1238
+ }
1239
+ }
1240
+ }
1241
+ }
1242
+ },
1243
+ "startupTimeoutSeconds": {
1244
+ "$id": "#/properties/startupTimeoutSeconds",
1245
+ "type": "integer",
1246
+ "minimum": 1,
1247
+ "default": 30
1248
+ },
1249
+ "readOnlyRootFilesystem": {
1250
+ "$id": "#/properties/readOnlyRootFilesystem",
1251
+ "type": "boolean"
1252
+ },
1253
+ "terminationGracePeriodSeconds": {
1254
+ "$id": "#/properties/terminationGracePeriodSeconds",
1255
+ "type": "integer",
1256
+ "minimum": 0,
1257
+ "default": 30
1258
+ },
1259
+ "env": {
1260
+ "$id": "#/properties/env",
1261
+ "anyOf": [
1262
+ {
1263
+ "type": "object",
1264
+ "patternProperties": {
1265
+ "^[-._a-zA-Z][-._a-zA-Z0-9]*$": {
1266
+ "$comment": "regex above copied from https://github.com/kubernetes/kubernetes/blob/ea0764452222146c47ec826977f49d7001b0ea8c/staging/src/k8s.io/apimachinery/pkg/util/validation/validation.go#L402",
1267
+ "anyOf": [
1268
+ {
1269
+ "type": [
1270
+ "integer",
1271
+ "string"
1272
+ ]
1273
+ },
1274
+ {
1275
+ "type": "object",
1276
+ "additionalProperties": false,
1277
+ "maxProperties": 1,
1278
+ "properties": {
1279
+ "configMapKeyRef": {
1280
+ "type": "object",
1281
+ "additionalProperties": false,
1282
+ "properties": {
1283
+ "name": {
1284
+ "type": "string"
1285
+ },
1286
+ "key": {
1287
+ "type": "string"
1288
+ }
1289
+ }
1290
+ },
1291
+ "secretKeyRef": {
1292
+ "type": "object",
1293
+ "additionalProperties": false,
1294
+ "properties": {
1295
+ "name": {
1296
+ "type": "string"
1297
+ },
1298
+ "key": {
1299
+ "type": "string"
1300
+ }
1301
+ }
1302
+ },
1303
+ "resourceFieldRef": {
1304
+ "type": "object",
1305
+ "additionalProperties": false,
1306
+ "properties": {
1307
+ "containerName": {
1308
+ "$ref": "#/definitions/KubernetesName"
1309
+ },
1310
+ "resource": {
1311
+ "type": "string"
1312
+ }
1313
+ }
1314
+ },
1315
+ "fieldRef": {
1316
+ "type": "object",
1317
+ "additionalProperties": false,
1318
+ "properties": {
1319
+ "fieldPath": {
1320
+ "type": "string"
1321
+ }
1322
+ }
1323
+ }
1324
+ }
1325
+ }
1326
+ ]
1327
+ }
1328
+ },
1329
+ "additionalProperties": false,
1330
+ "default": {}
1331
+ },
1332
+ {
1333
+ "type": "array",
1334
+ "uniqueItems": true,
1335
+ "items": {
1336
+ "type": "object",
1337
+ "additionalProperties": false,
1338
+ "maxProperties": 2,
1339
+ "required": [
1340
+ "name"
1341
+ ],
1342
+ "properties": {
1343
+ "name": {
1344
+ "type": "string",
1345
+ "pattern": "^[-._a-zA-Z][-._a-zA-Z0-9]*$"
1346
+ },
1347
+ "value": {
1348
+ "type": [
1349
+ "string",
1350
+ "integer"
1351
+ ]
1352
+ },
1353
+ "configMapKeyRef": {
1354
+ "type": "object",
1355
+ "additionalProperties": false,
1356
+ "properties": {
1357
+ "name": {
1358
+ "type": "string"
1359
+ },
1360
+ "key": {
1361
+ "type": "string"
1362
+ }
1363
+ }
1364
+ },
1365
+ "secretKeyRef": {
1366
+ "type": "object",
1367
+ "additionalProperties": false,
1368
+ "properties": {
1369
+ "name": {
1370
+ "type": "string"
1371
+ },
1372
+ "key": {
1373
+ "type": "string"
1374
+ }
1375
+ }
1376
+ },
1377
+ "resourceFieldRef": {
1378
+ "type": "object",
1379
+ "additionalProperties": false,
1380
+ "properties": {
1381
+ "containerName": {
1382
+ "$ref": "#/definitions/KubernetesName"
1383
+ },
1384
+ "resource": {
1385
+ "type": "string"
1386
+ }
1387
+ }
1388
+ },
1389
+ "fieldRef": {
1390
+ "type": "object",
1391
+ "additionalProperties": false,
1392
+ "properties": {
1393
+ "fieldPath": {
1394
+ "type": "string"
1395
+ }
1396
+ }
1397
+ }
1398
+ }
1399
+ }
1400
+ }
1401
+ ],
1402
+ "default": {}
1403
+ },
1404
+ "envFrom": {
1405
+ "$id": "#/properties/envFrom",
1406
+ "type": "array",
1407
+ "default": [],
1408
+ "items": {
1409
+ "type": "object",
1410
+ "oneOf": [
1411
+ {
1412
+ "additionalProperties": false,
1413
+ "properties": {
1414
+ "configMapRef": {
1415
+ "properties": {
1416
+ "name": {
1417
+ "type": "string"
1418
+ }
1419
+ },
1420
+ "required": [
1421
+ "name"
1422
+ ],
1423
+ "additionalProperties": false,
1424
+ "type": "object"
1425
+ },
1426
+ "prefix": {
1427
+ "type": "string"
1428
+ }
1429
+ },
1430
+ "required": [
1431
+ "configMapRef"
1432
+ ]
1433
+ },
1434
+ {
1435
+ "additionalProperties": false,
1436
+ "properties": {
1437
+ "secretRef": {
1438
+ "properties": {
1439
+ "name": {
1440
+ "type": "string"
1441
+ }
1442
+ },
1443
+ "required": [
1444
+ "name"
1445
+ ],
1446
+ "additionalProperties": false,
1447
+ "type": "object"
1448
+ },
1449
+ "prefix": {
1450
+ "type": "string"
1451
+ }
1452
+ },
1453
+ "required": [
1454
+ "secretRef"
1455
+ ]
1456
+ }
1457
+ ]
1458
+ }
1459
+ },
1460
+ "expose": {
1461
+ "$id": "#/properties/expose",
1462
+ "title": "",
1463
+ "type": "object",
1464
+ "additionalProperties": false,
1465
+ "properties": {
1466
+ "host": {
1467
+ "$id": "#/properties/expose/properties/host",
1468
+ "type": "string"
1469
+ },
1470
+ "enabled": {
1471
+ "$id": "#/properties/expose/properties/enabled",
1472
+ "type": "boolean",
1473
+ "default": true
1474
+ },
1475
+ "gateway": {
1476
+ "$id": "#/properties/expose/properties/gateway",
1477
+ "type": "string",
1478
+ "default": "kyma-system/kyma-gateway"
1479
+ },
1480
+ "tenantGateway": {
1481
+ "$id": "#/properties/expose/properties/gateway",
1482
+ "type": "string"
1483
+ },
1484
+ "corsPolicy": {
1485
+ "$id": "#/properties/expose/properties/corsPolicy",
1486
+ "type": "object",
1487
+ "additionalProperties": false,
1488
+ "properties": {
1489
+ "allowHeaders": {
1490
+ "type": "array",
1491
+ "items": {
1492
+ "type": "string"
1493
+ }
1494
+ },
1495
+ "allowMethods": {
1496
+ "type": "array",
1497
+ "items": {
1498
+ "type": "string"
1499
+ }
1500
+ },
1501
+ "allowOrigins": {
1502
+ "type": "array",
1503
+ "items": {
1504
+ "type": "object",
1505
+ "propertyNames": {
1506
+ "enum": [
1507
+ "regex",
1508
+ "exact",
1509
+ "prefix"
1510
+ ]
1511
+ },
1512
+ "patternProperties": {
1513
+ "": {
1514
+ "type": "string"
1515
+ }
1516
+ }
1517
+ }
1518
+ },
1519
+ "allowCredentials": {
1520
+ "type": "boolean"
1521
+ },
1522
+ "exposeHeaders": {
1523
+ "type": "array",
1524
+ "items": {
1525
+ "type": "string"
1526
+ }
1527
+ },
1528
+ "maxAge": {
1529
+ "type": "string"
1530
+ }
1531
+ }
1532
+ },
1533
+ "rules": {
1534
+ "$id": "#/properties/expose/properties/rules",
1535
+ "type": "array",
1536
+ "items": {
1537
+ "type": "object"
1538
+ },
1539
+ "default": [
1540
+ {
1541
+ "accessStrategies": [
1542
+ {
1543
+ "handler": "allow"
1544
+ }
1545
+ ],
1546
+ "methods": [
1547
+ "GET",
1548
+ "POST",
1549
+ "PUT",
1550
+ "PATCH",
1551
+ "DELETE",
1552
+ "HEAD"
1553
+ ],
1554
+ "path": "/.*"
1555
+ }
1556
+ ]
1557
+ }
1558
+ }
1559
+ },
1560
+ "networkSecurity": {
1561
+ "$id": "#/properties/bindings",
1562
+ "title": "Network Security configuration",
1563
+ "type": "object",
1564
+ "additionalProperties": false,
1565
+ "properties": {
1566
+ "enabled": {
1567
+ "type": "boolean",
1568
+ "default": true
1569
+ },
1570
+ "allowNamespaceInternal": {
1571
+ "type": "boolean"
1572
+ },
1573
+ "additionalPorts": {
1574
+ "type": "array",
1575
+ "default": [],
1576
+ "items": {
1577
+ "type": "integer"
1578
+ }
1579
+ },
1580
+ "ingress": {
1581
+ "type": "array",
1582
+ "default": [],
1583
+ "items": {
1584
+ "type": "object",
1585
+ "minProperties": 1,
1586
+ "additionalProperties": false,
1587
+ "properties": {
1588
+ "namespace": {
1589
+ "type": "string"
1590
+ },
1591
+ "podLabelsSelector": {
1592
+ "type": "object",
1593
+ "minProperties": 1,
1594
+ "patternProperties": {
1595
+ "^.*$": {
1596
+ "type": "string"
1597
+ }
1598
+ }
1599
+ }
1600
+ }
1601
+ }
1602
+ }
1603
+ }
1604
+ },
1605
+ "rbac": {
1606
+ "$id": "#/properties/rbac",
1607
+ "title": "Role-based access control configuration https://kubernetes.io/docs/reference/access-authn-authz/rbac/",
1608
+ "type": "object",
1609
+ "additionalProperties": false,
1610
+ "maxProperties": 1,
1611
+ "properties": {
1612
+ "role": {
1613
+ "type": "string",
1614
+ "title": "Existing Role to use. The Role must be in the same namespace."
1615
+ },
1616
+ "clusterRole": {
1617
+ "type": "string",
1618
+ "title": "Existing ClusterRole to use."
1619
+ },
1620
+ "rules": {
1621
+ "type": "array",
1622
+ "title": "List of RBAC rules assigned to the new Role.",
1623
+ "items": {
1624
+ "type": "object",
1625
+ "additionalProperties": false,
1626
+ "required": [
1627
+ "apiGroups",
1628
+ "resources",
1629
+ "verbs"
1630
+ ],
1631
+ "properties": {
1632
+ "apiGroups": {
1633
+ "type": "array",
1634
+ "items": {
1635
+ "type": "string"
1636
+ }
1637
+ },
1638
+ "resources": {
1639
+ "type": "array",
1640
+ "items": {
1641
+ "type": "string"
1642
+ }
1643
+ },
1644
+ "verbs": {
1645
+ "type": "array",
1646
+ "items": {
1647
+ "type": "string"
1648
+ }
1649
+ }
1650
+ }
1651
+ }
1652
+ }
1653
+ }
1654
+ },
1655
+ "bindings": {
1656
+ "$id": "#/properties/bindings",
1657
+ "title": "Service Binding configuration",
1658
+ "type": "object",
1659
+ "additionalProperties": false,
1660
+ "patternProperties": {
1661
+ "^[-._a-zA-Z][-._a-zA-Z0-9]*$": {
1662
+ "anyOf": [
1663
+ {
1664
+ "type": "object",
1665
+ "additionalProperties": false,
1666
+ "required": [
1667
+ "fromSecret"
1668
+ ],
1669
+ "properties": {
1670
+ "fromSecret": {
1671
+ "type": "string"
1672
+ }
1673
+ }
1674
+ },
1675
+ {
1676
+ "type": "object",
1677
+ "additionalProperties": false,
1678
+ "properties": {
1679
+ "serviceInstanceName": {
1680
+ "type": "string"
1681
+ },
1682
+ "serviceInstanceFullname": {
1683
+ "type": "string"
1684
+ },
1685
+ "externalName": {
1686
+ "type": "string"
1687
+ },
1688
+ "secretName": {
1689
+ "type": "string"
1690
+ },
1691
+ "parameters": {
1692
+ "type": "object"
1693
+ },
1694
+ "parametersFrom": {
1695
+ "type": "array",
1696
+ "items": {
1697
+ "type": "object",
1698
+ "additionalProperties": false,
1699
+ "properties": {
1700
+ "secretKeyRef": {
1701
+ "type": "object",
1702
+ "additionalProperties": false,
1703
+ "required": [
1704
+ "name",
1705
+ "key"
1706
+ ],
1707
+ "properties": {
1708
+ "name": {
1709
+ "type": "string"
1710
+ },
1711
+ "key": {
1712
+ "type": "string"
1713
+ }
1714
+ }
1715
+ }
1716
+ }
1717
+ }
1718
+ },
1719
+ "credentialsRotationPolicy": {
1720
+ "type": "object"
1721
+ }
1722
+ },
1723
+ "dependencies": {
1724
+ "serviceInstanceName": {
1725
+ "not": {
1726
+ "required": [
1727
+ "serviceInstanceFullname"
1728
+ ]
1729
+ }
1730
+ },
1731
+ "serviceInstanceFullname": {
1732
+ "not": {
1733
+ "required": [
1734
+ "serviceInstanceName"
1735
+ ]
1736
+ }
1737
+ }
1738
+ }
1739
+ }
1740
+ ]
1741
+ }
1742
+ }
1743
+ },
1744
+ "annotations": {
1745
+ "$id": "#/properties/annotations",
1746
+ "title": "Additional annotations",
1747
+ "type": "object",
1748
+ "additionalProperties": false,
1749
+ "properties": {
1750
+ "deployment": {
1751
+ "type": "object",
1752
+ "title": "Annotations to add to the Deployment",
1753
+ "patternProperties": {
1754
+ ".*": {
1755
+ "type": "string"
1756
+ }
1757
+ }
1758
+ },
1759
+ "service": {
1760
+ "type": "object",
1761
+ "title": "Annotations to add to the Service",
1762
+ "patternProperties": {
1763
+ ".*": {
1764
+ "type": "string"
1765
+ }
1766
+ }
1767
+ }
1768
+ }
1769
+ },
1770
+ "sidecars": {
1771
+ "$id": "#/properties/bindings",
1772
+ "title": "Sidecar configuration",
1773
+ "type": "object",
1774
+ "additionalProperties": false,
1775
+ "patternProperties": {
1776
+ "^[-._a-zA-Z][-._a-zA-Z0-9]*$": {
1777
+ "additionalProperties": false,
1778
+ "properties": {
1779
+ "image": {
1780
+ "$id": "#/properties/image",
1781
+ "title": "Image configuration",
1782
+ "type": "object",
1783
+ "required": [
1784
+ "repository"
1785
+ ],
1786
+ "additionalProperties": false,
1787
+ "properties": {
1788
+ "repository": {
1789
+ "$id": "#/properties/image/properties/repository",
1790
+ "title": "Repository of the image",
1791
+ "type": "string",
1792
+ "pattern": "^[\\w-./:]*[@sha256]*$"
1793
+ },
1794
+ "tag": {
1795
+ "$id": "#/properties/image/properties/tag",
1796
+ "$ref": "#/definitions/ImageTag"
1797
+ },
1798
+ "registry": {
1799
+ "$id": "#/properties/image/properties/registry",
1800
+ "$ref": "#/definitions/ImageRegistry"
1801
+ }
1802
+ }
1803
+ },
1804
+ "imagePullPolicy": {
1805
+ "$ref": "#/definitions/ImagePullPolicy"
1806
+ },
1807
+ "envFrom": {
1808
+ "$id": "#/properties/envFrom",
1809
+ "type": "array",
1810
+ "default": [],
1811
+ "items": {
1812
+ "type": "object",
1813
+ "oneOf": [
1814
+ {
1815
+ "additionalProperties": false,
1816
+ "properties": {
1817
+ "configMapRef": {
1818
+ "properties": {
1819
+ "name": {
1820
+ "type": "string"
1821
+ }
1822
+ },
1823
+ "required": [
1824
+ "name"
1825
+ ],
1826
+ "additionalProperties": false,
1827
+ "type": "object"
1828
+ },
1829
+ "prefix": {
1830
+ "type": "string"
1831
+ }
1832
+ },
1833
+ "required": [
1834
+ "configMapRef"
1835
+ ]
1836
+ },
1837
+ {
1838
+ "additionalProperties": false,
1839
+ "properties": {
1840
+ "secretRef": {
1841
+ "properties": {
1842
+ "name": {
1843
+ "type": "string"
1844
+ }
1845
+ },
1846
+ "required": [
1847
+ "name"
1848
+ ],
1849
+ "additionalProperties": false,
1850
+ "type": "object"
1851
+ },
1852
+ "prefix": {
1853
+ "type": "string"
1854
+ }
1855
+ },
1856
+ "required": [
1857
+ "secretRef"
1858
+ ]
1859
+ }
1860
+ ]
1861
+ }
1862
+ },
1863
+ "env": {
1864
+ "$id": "#/properties/env",
1865
+ "anyOf": [
1866
+ {
1867
+ "type": "object",
1868
+ "patternProperties": {
1869
+ "^[-._a-zA-Z][-._a-zA-Z0-9]*$": {
1870
+ "$comment": "regex above copied from https://github.com/kubernetes/kubernetes/blob/ea0764452222146c47ec826977f49d7001b0ea8c/staging/src/k8s.io/apimachinery/pkg/util/validation/validation.go#L402",
1871
+ "anyOf": [
1872
+ {
1873
+ "type": [
1874
+ "integer",
1875
+ "string"
1876
+ ]
1877
+ },
1878
+ {
1879
+ "type": "object",
1880
+ "additionalProperties": false,
1881
+ "maxProperties": 1,
1882
+ "properties": {
1883
+ "configMapKeyRef": {
1884
+ "type": "object",
1885
+ "additionalProperties": false,
1886
+ "properties": {
1887
+ "name": {
1888
+ "type": "string"
1889
+ },
1890
+ "key": {
1891
+ "type": "string"
1892
+ }
1893
+ }
1894
+ },
1895
+ "secretKeyRef": {
1896
+ "type": "object",
1897
+ "additionalProperties": false,
1898
+ "properties": {
1899
+ "name": {
1900
+ "type": "string"
1901
+ },
1902
+ "key": {
1903
+ "type": "string"
1904
+ }
1905
+ }
1906
+ },
1907
+ "resourceFieldRef": {
1908
+ "type": "object",
1909
+ "additionalProperties": false,
1910
+ "properties": {
1911
+ "containerName": {
1912
+ "$ref": "#/definitions/KubernetesName"
1913
+ },
1914
+ "resource": {
1915
+ "type": "string"
1916
+ }
1917
+ }
1918
+ },
1919
+ "fieldRef": {
1920
+ "type": "object",
1921
+ "additionalProperties": false,
1922
+ "properties": {
1923
+ "fieldPath": {
1924
+ "type": "string"
1925
+ }
1926
+ }
1927
+ }
1928
+ }
1929
+ }
1930
+ ]
1931
+ }
1932
+ },
1933
+ "additionalProperties": false,
1934
+ "default": {}
1935
+ },
1936
+ {
1937
+ "type": "array",
1938
+ "uniqueItems": true,
1939
+ "items": {
1940
+ "type": "object",
1941
+ "additionalProperties": false,
1942
+ "maxProperties": 2,
1943
+ "required": [
1944
+ "name"
1945
+ ],
1946
+ "properties": {
1947
+ "name": {
1948
+ "type": "string",
1949
+ "pattern": "^[-._a-zA-Z][-._a-zA-Z0-9]*$"
1950
+ },
1951
+ "value": {
1952
+ "type": [
1953
+ "string",
1954
+ "integer"
1955
+ ]
1956
+ },
1957
+ "configMapKeyRef": {
1958
+ "type": "object",
1959
+ "additionalProperties": false,
1960
+ "properties": {
1961
+ "name": {
1962
+ "type": "string"
1963
+ },
1964
+ "key": {
1965
+ "type": "string"
1966
+ }
1967
+ }
1968
+ },
1969
+ "secretKeyRef": {
1970
+ "type": "object",
1971
+ "additionalProperties": false,
1972
+ "properties": {
1973
+ "name": {
1974
+ "type": "string"
1975
+ },
1976
+ "key": {
1977
+ "type": "string"
1978
+ }
1979
+ }
1980
+ },
1981
+ "resourceFieldRef": {
1982
+ "type": "object",
1983
+ "additionalProperties": false,
1984
+ "properties": {
1985
+ "containerName": {
1986
+ "$ref": "#/definitions/KubernetesName"
1987
+ },
1988
+ "resource": {
1989
+ "type": "string"
1990
+ }
1991
+ }
1992
+ },
1993
+ "fieldRef": {
1994
+ "type": "object",
1995
+ "additionalProperties": false,
1996
+ "properties": {
1997
+ "fieldPath": {
1998
+ "type": "string"
1999
+ }
2000
+ }
2001
+ }
2002
+ }
2003
+ }
2004
+ }
2005
+ ],
2006
+ "default": {}
2007
+ },
2008
+ "resources": {
2009
+ "$id": "#/properties/resources",
2010
+ "title": "Pod resources configuration",
2011
+ "type": "object",
2012
+ "additionalProperties": false,
2013
+ "required": [
2014
+ "requests",
2015
+ "limits"
2016
+ ],
2017
+ "properties": {
2018
+ "requests": {
2019
+ "type": "object",
2020
+ "additionalProperties": false,
2021
+ "required": [
2022
+ "cpu",
2023
+ "memory"
2024
+ ],
2025
+ "properties": {
2026
+ "cpu": {
2027
+ "$id": "#/properties/resources/properties/requests/properties/cpu",
2028
+ "type": [
2029
+ "string",
2030
+ "number"
2031
+ ]
2032
+ },
2033
+ "ephemeral-storage": {
2034
+ "$id": "#/properties/resources/properties/requests/properties/ephemeral-storage",
2035
+ "type": "string"
2036
+ },
2037
+ "memory": {
2038
+ "$id": "#/properties/resources/properties/requests/properties/memory",
2039
+ "type": "string"
2040
+ }
2041
+ }
2042
+ },
2043
+ "limits": {
2044
+ "type": "object",
2045
+ "additionalProperties": false,
2046
+ "required": [
2047
+ "memory"
2048
+ ],
2049
+ "properties": {
2050
+ "cpu": {
2051
+ "$id": "#/properties/resources/properties/limits/properties/cpu",
2052
+ "type": [
2053
+ "string",
2054
+ "number"
2055
+ ]
2056
+ },
2057
+ "ephemeral-storage": {
2058
+ "$id": "#/properties/resources/properties/limits/properties/ephemeral-storage",
2059
+ "type": "string"
2060
+ },
2061
+ "memory": {
2062
+ "$id": "#/properties/resources/properties/limits/properties/memory",
2063
+ "type": "string"
2064
+ }
2065
+ }
2066
+ }
2067
+ }
2068
+ },
2069
+ "runAsUser": {
2070
+ "title": "User to be used for running the container.",
2071
+ "type": "integer",
2072
+ "minimum": 1
2073
+ }
2074
+ }
2075
+ }
2076
+ }
2077
+ },
2078
+ "prometheus": {
2079
+ "$id": "#/properties/prometheus",
2080
+ "title": "Enable Prometheus scraping",
2081
+ "type": "object",
2082
+ "additionalProperties": false,
2083
+ "properties": {
2084
+ "enabled": {
2085
+ "type": "boolean",
2086
+ "title": "Add necessary annotations for Prometheus Service Discovery.",
2087
+ "default": false
2088
+ },
2089
+ "path": {
2090
+ "type": "string",
2091
+ "title": "URI path used for scraping. Defaults to /metrics.",
2092
+ "default": "/metrics"
2093
+ },
2094
+ "port": {
2095
+ "title": "Port used for scraping. Defaults to the application port.",
2096
+ "type": "integer"
2097
+ }
2098
+ }
2099
+ },
2100
+ "otlp": {
2101
+ "$id": "#/properties/otlp",
2102
+ "title": "Enable Open Telemetry integration",
2103
+ "type": "object",
2104
+ "additionalProperties": false,
2105
+ "properties": {
2106
+ "traces": {
2107
+ "type": "object",
2108
+ "additionalProperties": false,
2109
+ "properties": {
2110
+ "enabled": {
2111
+ "type": "boolean",
2112
+ "title": "Add env variables",
2113
+ "default": false
2114
+ },
2115
+ "endpoint": {
2116
+ "type": "string",
2117
+ "default": "http://telemetry-otlp-traces.kyma-system.svc.cluster.local:4317"
2118
+ }
2119
+ }
2120
+ },
2121
+ "metrics": {
2122
+ "type": "object",
2123
+ "additionalProperties": false,
2124
+ "properties": {
2125
+ "enabled": {
2126
+ "type": "boolean",
2127
+ "title": "Add env variables",
2128
+ "default": false
2129
+ },
2130
+ "endpoint": {
2131
+ "type": "string",
2132
+ "default": "http://telemetry-otlp-metrics.kyma-system.svc.cluster.local:4317"
2133
+ }
2134
+ }
2135
+ }
2136
+ }
2137
+ },
2138
+ "hpa": {
2139
+ "$id": "#/properties/hpa",
2140
+ "title": "Enable autoscaling",
2141
+ "type": "object",
2142
+ "additionalProperties": false,
2143
+ "properties": {
2144
+ "enabled": {
2145
+ "type": "boolean",
2146
+ "title": "Add Horizontal App Autoscaler resource.",
2147
+ "default": false
2148
+ },
2149
+ "minReplicas": {
2150
+ "type": "number",
2151
+ "title": "Lower limit for the number of replicas to which the autoscaler can scale up.",
2152
+ "default": 1
2153
+ },
2154
+ "maxReplicas": {
2155
+ "type": "number",
2156
+ "title": "Upper limit for the number of replicas to which the autoscaler can scale up.",
2157
+ "default": 3
2158
+ },
2159
+ "behavior": {
2160
+ "type": "object"
2161
+ },
2162
+ "metrics": {
2163
+ "type": "array",
2164
+ "items": {
2165
+ "type": "object"
2166
+ }
2167
+ }
2168
+ }
2169
+ }
2170
+ }
2171
+ }
2172
+ }
2173
+ }