kubes 0.1.0 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (384) hide show
  1. checksums.yaml +5 -5
  2. data/.dockerignore +4 -0
  3. data/.gitignore +15 -7
  4. data/.rspec +3 -0
  5. data/CHANGELOG.md +22 -0
  6. data/Dockerfile +14 -0
  7. data/Gemfile +3 -1
  8. data/Guardfile +19 -0
  9. data/LICENSE.txt +201 -0
  10. data/README.md +46 -18
  11. data/Rakefile +13 -1
  12. data/docs/.gitignore +5 -0
  13. data/docs/CNAME +1 -0
  14. data/docs/Gemfile +16 -0
  15. data/docs/LICENSE +201 -0
  16. data/docs/Procfile +2 -0
  17. data/docs/README.md +24 -0
  18. data/docs/Rakefile +38 -0
  19. data/docs/_config.yml +71 -0
  20. data/docs/_docs/auto-context.md +47 -0
  21. data/docs/_docs/ci/cloudbuild.md +69 -0
  22. data/docs/_docs/config.md +9 -0
  23. data/docs/_docs/config/docker.md +70 -0
  24. data/docs/_docs/config/env.md +58 -0
  25. data/docs/_docs/config/kubectl.md +61 -0
  26. data/docs/_docs/contributing.md +98 -0
  27. data/docs/_docs/dsl.md +66 -0
  28. data/docs/_docs/dsl/multiple-resources.md +114 -0
  29. data/docs/_docs/dsl/resources.md +12 -0
  30. data/docs/_docs/dsl/resources/backend_config.md +45 -0
  31. data/docs/_docs/dsl/resources/config_map.md +84 -0
  32. data/docs/_docs/dsl/resources/daemon_set.md +58 -0
  33. data/docs/_docs/dsl/resources/deployment.md +137 -0
  34. data/docs/_docs/dsl/resources/generic.md +58 -0
  35. data/docs/_docs/dsl/resources/ingress.md +103 -0
  36. data/docs/_docs/dsl/resources/managed_certificate.md +39 -0
  37. data/docs/_docs/dsl/resources/namespace.md +34 -0
  38. data/docs/_docs/dsl/resources/network_policy.md +111 -0
  39. data/docs/_docs/dsl/resources/pod.md +82 -0
  40. data/docs/_docs/dsl/resources/role.md +44 -0
  41. data/docs/_docs/dsl/resources/role_binding.md +55 -0
  42. data/docs/_docs/dsl/resources/secret.md +87 -0
  43. data/docs/_docs/dsl/resources/service.md +60 -0
  44. data/docs/_docs/dsl/resources/service_account.md +37 -0
  45. data/docs/_docs/extra-env.md +23 -0
  46. data/docs/_docs/extra-env/dsl.md +86 -0
  47. data/docs/_docs/extra-env/yaml.md +67 -0
  48. data/docs/_docs/helpers.md +19 -0
  49. data/docs/_docs/intro.md +15 -0
  50. data/docs/_docs/intro/concepts.md +37 -0
  51. data/docs/_docs/intro/how-kubes-works.md +29 -0
  52. data/docs/_docs/intro/install.md +6 -0
  53. data/docs/_docs/intro/ordering.md +63 -0
  54. data/docs/_docs/intro/ordering/custom.md +25 -0
  55. data/docs/_docs/intro/structure.md +43 -0
  56. data/docs/_docs/kustomize.md +54 -0
  57. data/docs/_docs/layering.md +8 -0
  58. data/docs/_docs/layering/dsl.md +5 -0
  59. data/docs/_docs/layering/merge.md +96 -0
  60. data/docs/_docs/layering/yaml.md +5 -0
  61. data/docs/_docs/learn/dsl.md +5 -0
  62. data/docs/_docs/learn/dsl/change.md +16 -0
  63. data/docs/_docs/learn/dsl/cluster.md +5 -0
  64. data/docs/_docs/learn/dsl/delete.md +32 -0
  65. data/docs/_docs/learn/dsl/deploy.md +66 -0
  66. data/docs/_docs/learn/dsl/install.md +5 -0
  67. data/docs/_docs/learn/dsl/new-project.md +34 -0
  68. data/docs/_docs/learn/dsl/next-steps.md +5 -0
  69. data/docs/_docs/learn/dsl/review-project.md +63 -0
  70. data/docs/_docs/learn/dsl/update.md +53 -0
  71. data/docs/_docs/learn/yaml.md +5 -0
  72. data/docs/_docs/learn/yaml/change.md +17 -0
  73. data/docs/_docs/learn/yaml/cluster.md +5 -0
  74. data/docs/_docs/learn/yaml/delete.md +32 -0
  75. data/docs/_docs/learn/yaml/deploy.md +67 -0
  76. data/docs/_docs/learn/yaml/install.md +5 -0
  77. data/docs/_docs/learn/yaml/new-project.md +37 -0
  78. data/docs/_docs/learn/yaml/next-steps.md +5 -0
  79. data/docs/_docs/learn/yaml/review-project.md +108 -0
  80. data/docs/_docs/learn/yaml/update.md +54 -0
  81. data/docs/_docs/next-steps.md +13 -0
  82. data/docs/_docs/patterns.md +7 -0
  83. data/docs/_docs/patterns/clock-web-worker.md +71 -0
  84. data/docs/_docs/resources.md +11 -0
  85. data/docs/_docs/resources/base.md +33 -0
  86. data/docs/_docs/resources/role.md +41 -0
  87. data/docs/_docs/resources/shared.md +36 -0
  88. data/docs/_docs/yaml.md +41 -0
  89. data/docs/_includes/commands.html +131 -0
  90. data/docs/_includes/content.html +25 -0
  91. data/docs/_includes/dsl/methods.md +1 -0
  92. data/docs/_includes/dsl/rolling_deployment.md +1 -0
  93. data/docs/_includes/dsl/suffix_hash.md +8 -0
  94. data/docs/_includes/example.html +12 -0
  95. data/docs/_includes/footer.html +37 -0
  96. data/docs/_includes/google_analytics.html +10 -0
  97. data/docs/_includes/header.html +31 -0
  98. data/docs/_includes/intro/install.md +15 -0
  99. data/docs/_includes/js.html +3 -0
  100. data/docs/_includes/kubes-steps.md +3 -0
  101. data/docs/_includes/layering/layers.md +64 -0
  102. data/docs/_includes/learn/cluster.md +22 -0
  103. data/docs/_includes/learn/next-steps.md +6 -0
  104. data/docs/_includes/learn/review.md +27 -0
  105. data/docs/_includes/learn/start.md +3 -0
  106. data/docs/_includes/reference.md +3 -0
  107. data/docs/_includes/sidebar.html +118 -0
  108. data/docs/_layouts/default.html +35 -0
  109. data/docs/_reference/kubes-apply.md +24 -0
  110. data/docs/_reference/kubes-clean.md +22 -0
  111. data/docs/_reference/kubes-compile.md +22 -0
  112. data/docs/_reference/kubes-completion.md +42 -0
  113. data/docs/_reference/kubes-completion_script.md +25 -0
  114. data/docs/_reference/kubes-delete.md +23 -0
  115. data/docs/_reference/kubes-deploy.md +35 -0
  116. data/docs/_reference/kubes-docker-build.md +20 -0
  117. data/docs/_reference/kubes-docker-help.md +15 -0
  118. data/docs/_reference/kubes-docker-push.md +20 -0
  119. data/docs/_reference/kubes-docker.md +25 -0
  120. data/docs/_reference/kubes-init.md +26 -0
  121. data/docs/_reference/kubes-version.md +21 -0
  122. data/docs/_sass/bootstrap-overrides.scss +17 -0
  123. data/docs/_sass/buttons.scss +62 -0
  124. data/docs/_sass/caret.scss +39 -0
  125. data/docs/_sass/content.scss +21 -0
  126. data/docs/_sass/cta.scss +39 -0
  127. data/docs/_sass/default.scss +103 -0
  128. data/docs/_sass/footer.scss +66 -0
  129. data/docs/_sass/masthead.scss +77 -0
  130. data/docs/_sass/mixins.scss +79 -0
  131. data/docs/_sass/sidebar.scss +107 -0
  132. data/docs/_sass/syntax.scss +89 -0
  133. data/docs/_sass/table.scss +30 -0
  134. data/docs/_sass/theme.scss +292 -0
  135. data/docs/_sass/variables.scss +24 -0
  136. data/docs/bin/build +4 -0
  137. data/docs/bin/rerun +2 -0
  138. data/docs/bin/web +8 -0
  139. data/docs/css/main.scss +24 -0
  140. data/docs/docs.md +7 -0
  141. data/docs/getting-started.md +12 -0
  142. data/docs/img/logos/boltops-logo-full.png +0 -0
  143. data/docs/img/logos/boltops-logo.png +0 -0
  144. data/docs/img/logos/filler-logo.png +0 -0
  145. data/docs/img/logos/kubes-black.png +0 -0
  146. data/docs/img/logos/kubes-sign.png +0 -0
  147. data/docs/index.html +34 -0
  148. data/docs/js/app.js +39414 -0
  149. data/docs/opal/app.rb +16 -0
  150. data/docs/opal/pager.rb +90 -0
  151. data/docs/opal/sidebar.rb +94 -0
  152. data/docs/opal/sidebar/expander.rb +51 -0
  153. data/docs/reference.md +15 -0
  154. data/docs/support.md +19 -0
  155. data/docs/vendor/bootstrap/css/bootstrap-grid.css +3719 -0
  156. data/docs/vendor/bootstrap/css/bootstrap-grid.css.map +1 -0
  157. data/docs/vendor/bootstrap/css/bootstrap-grid.min.css +7 -0
  158. data/docs/vendor/bootstrap/css/bootstrap-grid.min.css.map +1 -0
  159. data/docs/vendor/bootstrap/css/bootstrap-reboot.css +331 -0
  160. data/docs/vendor/bootstrap/css/bootstrap-reboot.css.map +1 -0
  161. data/docs/vendor/bootstrap/css/bootstrap-reboot.min.css +8 -0
  162. data/docs/vendor/bootstrap/css/bootstrap-reboot.min.css.map +1 -0
  163. data/docs/vendor/bootstrap/css/bootstrap.css +10038 -0
  164. data/docs/vendor/bootstrap/css/bootstrap.css.map +1 -0
  165. data/docs/vendor/bootstrap/css/bootstrap.min.css +7 -0
  166. data/docs/vendor/bootstrap/css/bootstrap.min.css.map +1 -0
  167. data/docs/vendor/bootstrap/js/bootstrap.bundle.js +7013 -0
  168. data/docs/vendor/bootstrap/js/bootstrap.bundle.js.map +1 -0
  169. data/docs/vendor/bootstrap/js/bootstrap.bundle.min.js +7 -0
  170. data/docs/vendor/bootstrap/js/bootstrap.bundle.min.js.map +1 -0
  171. data/docs/vendor/bootstrap/js/bootstrap.js +4435 -0
  172. data/docs/vendor/bootstrap/js/bootstrap.js.map +1 -0
  173. data/docs/vendor/bootstrap/js/bootstrap.min.js +7 -0
  174. data/docs/vendor/bootstrap/js/bootstrap.min.js.map +1 -0
  175. data/docs/vendor/font-awesome/css/font-awesome.css +2337 -0
  176. data/docs/vendor/font-awesome/css/font-awesome.min.css +4 -0
  177. data/docs/vendor/font-awesome/fonts/FontAwesome.otf +0 -0
  178. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  179. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.svg +2671 -0
  180. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  181. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  182. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  183. data/docs/vendor/font-awesome/less/animated.less +34 -0
  184. data/docs/vendor/font-awesome/less/bordered-pulled.less +25 -0
  185. data/docs/vendor/font-awesome/less/core.less +12 -0
  186. data/docs/vendor/font-awesome/less/fixed-width.less +6 -0
  187. data/docs/vendor/font-awesome/less/font-awesome.less +18 -0
  188. data/docs/vendor/font-awesome/less/icons.less +789 -0
  189. data/docs/vendor/font-awesome/less/larger.less +13 -0
  190. data/docs/vendor/font-awesome/less/list.less +19 -0
  191. data/docs/vendor/font-awesome/less/mixins.less +60 -0
  192. data/docs/vendor/font-awesome/less/path.less +15 -0
  193. data/docs/vendor/font-awesome/less/rotated-flipped.less +20 -0
  194. data/docs/vendor/font-awesome/less/screen-reader.less +5 -0
  195. data/docs/vendor/font-awesome/less/stacked.less +20 -0
  196. data/docs/vendor/font-awesome/less/variables.less +799 -0
  197. data/docs/vendor/font-awesome/scss/_animated.scss +34 -0
  198. data/docs/vendor/font-awesome/scss/_bordered-pulled.scss +25 -0
  199. data/docs/vendor/font-awesome/scss/_core.scss +12 -0
  200. data/docs/vendor/font-awesome/scss/_fixed-width.scss +6 -0
  201. data/docs/vendor/font-awesome/scss/_icons.scss +789 -0
  202. data/docs/vendor/font-awesome/scss/_larger.scss +13 -0
  203. data/docs/vendor/font-awesome/scss/_list.scss +19 -0
  204. data/docs/vendor/font-awesome/scss/_mixins.scss +60 -0
  205. data/docs/vendor/font-awesome/scss/_path.scss +15 -0
  206. data/docs/vendor/font-awesome/scss/_rotated-flipped.scss +20 -0
  207. data/docs/vendor/font-awesome/scss/_screen-reader.scss +5 -0
  208. data/docs/vendor/font-awesome/scss/_stacked.scss +20 -0
  209. data/docs/vendor/font-awesome/scss/_variables.scss +799 -0
  210. data/docs/vendor/font-awesome/scss/font-awesome.scss +18 -0
  211. data/docs/vendor/jquery/jquery.js +10598 -0
  212. data/docs/vendor/jquery/jquery.min.js +2 -0
  213. data/docs/vendor/jquery/jquery.min.map +1 -0
  214. data/docs/vendor/jquery/jquery.slim.js +8495 -0
  215. data/docs/vendor/jquery/jquery.slim.min.js +2 -0
  216. data/docs/vendor/jquery/jquery.slim.min.map +1 -0
  217. data/docs/vendor/simple-line-icons/css/simple-line-icons.css +778 -0
  218. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.eot +0 -0
  219. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.svg +200 -0
  220. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.ttf +0 -0
  221. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.woff +0 -0
  222. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.woff2 +0 -0
  223. data/docs/vendor/simple-line-icons/less/simple-line-icons.less +982 -0
  224. data/docs/vendor/simple-line-icons/scss/simple-line-icons.scss +979 -0
  225. data/exe/kubes +14 -0
  226. data/kubes.gemspec +29 -19
  227. data/lib/kubes.rb +21 -1
  228. data/lib/kubes/args/custom.rb +30 -0
  229. data/lib/kubes/args/dsl.rb +14 -0
  230. data/lib/kubes/auth.rb +21 -0
  231. data/lib/kubes/auth/ecr.rb +55 -0
  232. data/lib/kubes/autoloader.rb +21 -0
  233. data/lib/kubes/aws_services.rb +14 -0
  234. data/lib/kubes/cli.rb +93 -0
  235. data/lib/kubes/cli/apply.rb +9 -0
  236. data/lib/kubes/cli/base.rb +9 -0
  237. data/lib/kubes/cli/build.rb +8 -0
  238. data/lib/kubes/cli/clean.rb +9 -0
  239. data/lib/kubes/cli/compile.rb +8 -0
  240. data/lib/kubes/cli/delete.rb +11 -0
  241. data/lib/kubes/cli/deploy.rb +13 -0
  242. data/lib/kubes/cli/describe.rb +8 -0
  243. data/lib/kubes/cli/docker.rb +20 -0
  244. data/lib/kubes/cli/get.rb +8 -0
  245. data/lib/kubes/cli/help.rb +11 -0
  246. data/lib/kubes/cli/help/completion.md +20 -0
  247. data/lib/kubes/cli/help/completion_script.md +3 -0
  248. data/lib/kubes/cli/help/deploy.md +10 -0
  249. data/lib/kubes/cli/init.rb +69 -0
  250. data/lib/kubes/cli/sequence.rb +27 -0
  251. data/lib/kubes/command.rb +100 -0
  252. data/lib/kubes/compiler.rb +71 -0
  253. data/lib/kubes/compiler/decorator.rb +17 -0
  254. data/lib/kubes/compiler/decorator/base.rb +16 -0
  255. data/lib/kubes/compiler/decorator/compile.rb +12 -0
  256. data/lib/kubes/compiler/decorator/resources/base.rb +13 -0
  257. data/lib/kubes/compiler/decorator/resources/container.rb +76 -0
  258. data/lib/kubes/compiler/decorator/resources/container/mapping.rb +28 -0
  259. data/lib/kubes/compiler/decorator/resources/deployment.rb +10 -0
  260. data/lib/kubes/compiler/decorator/resources/pod.rb +10 -0
  261. data/lib/kubes/compiler/decorator/resources/secret.rb +23 -0
  262. data/lib/kubes/compiler/decorator/write.rb +14 -0
  263. data/lib/kubes/compiler/dsl/core/base.rb +27 -0
  264. data/lib/kubes/compiler/dsl/core/blocks.rb +55 -0
  265. data/lib/kubes/compiler/dsl/core/fields.rb +78 -0
  266. data/lib/kubes/compiler/dsl/core/files.rb +28 -0
  267. data/lib/kubes/compiler/dsl/core/helpers.rb +19 -0
  268. data/lib/kubes/compiler/dsl/core/parser.rb +43 -0
  269. data/lib/kubes/compiler/dsl/syntax/backend_config.rb +10 -0
  270. data/lib/kubes/compiler/dsl/syntax/cluster_role.rb +4 -0
  271. data/lib/kubes/compiler/dsl/syntax/cluster_role_binding.rb +4 -0
  272. data/lib/kubes/compiler/dsl/syntax/config_map.rb +20 -0
  273. data/lib/kubes/compiler/dsl/syntax/daemon_set.rb +23 -0
  274. data/lib/kubes/compiler/dsl/syntax/deployment.rb +160 -0
  275. data/lib/kubes/compiler/dsl/syntax/ingress.rb +41 -0
  276. data/lib/kubes/compiler/dsl/syntax/managed_certificate.rb +18 -0
  277. data/lib/kubes/compiler/dsl/syntax/namespace.rb +13 -0
  278. data/lib/kubes/compiler/dsl/syntax/network_policy.rb +47 -0
  279. data/lib/kubes/compiler/dsl/syntax/pod.rb +81 -0
  280. data/lib/kubes/compiler/dsl/syntax/resource.rb +70 -0
  281. data/lib/kubes/compiler/dsl/syntax/role.rb +40 -0
  282. data/lib/kubes/compiler/dsl/syntax/role_binding.rb +43 -0
  283. data/lib/kubes/compiler/dsl/syntax/secret.rb +22 -0
  284. data/lib/kubes/compiler/dsl/syntax/service.rb +68 -0
  285. data/lib/kubes/compiler/dsl/syntax/service_account.rb +20 -0
  286. data/lib/kubes/compiler/layering.rb +39 -0
  287. data/lib/kubes/compiler/shared/helpers.rb +31 -0
  288. data/lib/kubes/compiler/strategy.rb +27 -0
  289. data/lib/kubes/compiler/strategy/base.rb +13 -0
  290. data/lib/kubes/compiler/strategy/dsl.rb +32 -0
  291. data/lib/kubes/compiler/strategy/erb.rb +42 -0
  292. data/lib/kubes/compiler/strategy/pass.rb +9 -0
  293. data/lib/kubes/compiler/strategy/result.rb +26 -0
  294. data/lib/kubes/compiler/util/normalize.rb +11 -0
  295. data/lib/kubes/compiler/util/yaml_dump.rb +23 -0
  296. data/lib/kubes/completer.rb +159 -0
  297. data/lib/kubes/completer/script.rb +6 -0
  298. data/lib/kubes/completer/script.sh +10 -0
  299. data/lib/kubes/config.rb +82 -0
  300. data/lib/kubes/core.rb +32 -0
  301. data/lib/kubes/docker/args/default.rb +39 -0
  302. data/lib/kubes/docker/base.rb +88 -0
  303. data/lib/kubes/docker/build.rb +22 -0
  304. data/lib/kubes/docker/push.rb +33 -0
  305. data/lib/kubes/hooks/builder.rb +41 -0
  306. data/lib/kubes/hooks/dsl.rb +19 -0
  307. data/lib/kubes/kubectl.rb +87 -0
  308. data/lib/kubes/kubectl/args/base.rb +12 -0
  309. data/lib/kubes/kubectl/args/kustomize.rb +28 -0
  310. data/lib/kubes/kubectl/args/standard.rb +32 -0
  311. data/lib/kubes/kubectl/batch.rb +49 -0
  312. data/lib/kubes/kubectl/decider.rb +15 -0
  313. data/lib/kubes/kubectl/kustomize.rb +13 -0
  314. data/lib/kubes/kubectl/ordering.rb +27 -0
  315. data/lib/kubes/logger.rb +26 -0
  316. data/lib/kubes/logging.rb +7 -0
  317. data/lib/kubes/util/consider.rb +9 -0
  318. data/lib/kubes/util/sh.rb +43 -0
  319. data/lib/kubes/util/sure.rb +17 -0
  320. data/lib/kubes/util/time.rb +14 -0
  321. data/lib/kubes/version.rb +1 -1
  322. data/lib/templates/base/.kubes/config.rb.tt +9 -0
  323. data/lib/templates/base/.kubes/config/env/dev.rb +6 -0
  324. data/lib/templates/base/.kubes/config/env/prod.rb +6 -0
  325. data/lib/templates/docker/Dockerfile +4 -0
  326. data/lib/templates/dsl/.kubes/resources/base/all.rb.tt +2 -0
  327. data/lib/templates/dsl/.kubes/resources/shared/namespace.rb.tt +2 -0
  328. data/lib/templates/dsl/.kubes/resources/web/deployment.rb +10 -0
  329. data/lib/templates/dsl/.kubes/resources/web/deployment/dev.rb +1 -0
  330. data/lib/templates/dsl/.kubes/resources/web/deployment/prod.rb +1 -0
  331. data/lib/templates/dsl/.kubes/resources/web/service.rb +8 -0
  332. data/lib/templates/yaml/.kubes/resources/base/all.yaml.tt +2 -0
  333. data/lib/templates/yaml/.kubes/resources/base/deployment.yaml.tt +11 -0
  334. data/lib/templates/yaml/.kubes/resources/shared/namespace.yaml.tt +6 -0
  335. data/lib/templates/yaml/.kubes/resources/web/deployment.yaml.tt +19 -0
  336. data/lib/templates/yaml/.kubes/resources/web/deployment/dev.yaml +2 -0
  337. data/lib/templates/yaml/.kubes/resources/web/deployment/prod.yaml +2 -0
  338. data/lib/templates/yaml/.kubes/resources/web/service.yaml.tt +14 -0
  339. data/spec/cli_spec.rb +8 -0
  340. data/spec/fixtures/artifacts/demo-web/deployment.yaml +26 -0
  341. data/spec/fixtures/artifacts/demo-web/service.yaml +16 -0
  342. data/spec/fixtures/blocks/deployments.rb +9 -0
  343. data/spec/fixtures/decorators/deployment/configMap/envFrom.yaml +27 -0
  344. data/spec/fixtures/decorators/deployment/configMap/valueFrom.yaml +30 -0
  345. data/spec/fixtures/decorators/deployment/configMap/volumes.yaml +34 -0
  346. data/spec/fixtures/decorators/deployment/secret/envFrom.yaml +27 -0
  347. data/spec/fixtures/decorators/deployment/secret/valueFrom.yaml +30 -0
  348. data/spec/fixtures/decorators/deployment/secret/volumes.yaml +34 -0
  349. data/spec/fixtures/decorators/pod/configMap/envFrom.yaml +12 -0
  350. data/spec/fixtures/decorators/pod/configMap/valueFrom.yaml +16 -0
  351. data/spec/fixtures/decorators/pod/configMap/volumes.yaml +19 -0
  352. data/spec/fixtures/decorators/pod/secret/envFrom.yaml +12 -0
  353. data/spec/fixtures/decorators/pod/secret/valueFrom.yaml +16 -0
  354. data/spec/fixtures/decorators/pod/secret/volumes.yaml +19 -0
  355. data/spec/fixtures/deployments/minimum.rb +5 -0
  356. data/spec/fixtures/deployments/props.rb +7 -0
  357. data/spec/fixtures/deployments/setter/container.rb +11 -0
  358. data/spec/fixtures/deployments/setter/containers.rb +14 -0
  359. data/spec/fixtures/deployments/setter/metadata.rb +15 -0
  360. data/spec/fixtures/deployments/setter/sidecar.rb +12 -0
  361. data/spec/fixtures/deployments/setter/spec.rb +10 -0
  362. data/spec/fixtures/multiple-files/deployment-1.rb +4 -0
  363. data/spec/fixtures/multiple-files/deployment-2.rb +4 -0
  364. data/spec/fixtures/project/.gitignore +1 -0
  365. data/spec/fixtures/project/.kubes/resources/deployment.rb +32 -0
  366. data/spec/fixtures/project/.kubes/resources/foobar.rb +0 -0
  367. data/spec/fixtures/project/.kubes/resources/service.rb +3 -0
  368. data/spec/fixtures/services/minimum.rb +3 -0
  369. data/spec/fixtures/syntax/network_policy.rb +3 -0
  370. data/spec/fixtures/syntax/pod.rb +1 -0
  371. data/spec/kubes/compiler/decorator/resources/deployment_spec.rb +92 -0
  372. data/spec/kubes/compiler/decorator/resources/pod_spec.rb +92 -0
  373. data/spec/kubes/compiler/strategy/dsl_spec.rb +36 -0
  374. data/spec/kubes/compiler_spec.rb +10 -0
  375. data/spec/kubes/dsl/daemon_set.rb +11 -0
  376. data/spec/kubes/dsl/deployment_spec.rb +60 -0
  377. data/spec/kubes/dsl/network_policy_spec.rb +14 -0
  378. data/spec/kubes/dsl/pod_spec.rb +11 -0
  379. data/spec/kubes/dsl/service_spec.rb +12 -0
  380. data/spec/kubes/kubectl/batch_spec.rb +24 -0
  381. data/spec/spec_helper.rb +34 -0
  382. metadata +607 -22
  383. data/bin/console +0 -14
  384. data/bin/setup +0 -8
@@ -0,0 +1,137 @@
1
+ ---
2
+ title: Deployment
3
+ categories: dsl
4
+ ---
5
+
6
+ DSL builds Kubernetes YAML files with a reasonable default structure. Each part of the structure can be customized and overridden.
7
+
8
+ ## Basics
9
+
10
+ .kubes/resources/web/deployment.rb:
11
+
12
+ ```ruby
13
+ name "demo-web"
14
+ labels(role: "web")
15
+ namespace "default"
16
+ replicas 2
17
+ image "nginx"
18
+ ```
19
+
20
+ Produces:
21
+
22
+ .kubes/output/web/deployment.yaml:
23
+
24
+ ```yaml
25
+ apiVersion: apps/v1
26
+ kind: Deployment
27
+ metadata:
28
+ name: demo-web
29
+ labels:
30
+ app: demo
31
+ namespace: default
32
+ spec:
33
+ replicas: 2
34
+ selector:
35
+ matchLabels:
36
+ app: demo
37
+ template:
38
+ metadata:
39
+ labels:
40
+ app: demo
41
+ containers:
42
+ - name: demo-web
43
+ image: nginx
44
+ ```
45
+
46
+ ## More Customizations
47
+
48
+ You can override any of the attributes within the deployment structure. You have first-class citizen access to the DSL helpers methods like template and strategy methods that set reasonable defaults.
49
+
50
+ Examples:
51
+
52
+ ```ruby
53
+ spec(
54
+ replicas: replicas,
55
+ selector: {matchLabels: labels},
56
+ strategy: strategy,
57
+ template: template,
58
+ )
59
+ ```
60
+
61
+ If you only have a single container:
62
+
63
+ ```ruby
64
+ container(
65
+ name: name,
66
+ image: "nginx",
67
+ ports: [
68
+ containerPort: 80
69
+ ]
70
+ )
71
+ ```
72
+
73
+ For multiple containers:
74
+
75
+ ```ruby
76
+ containers([
77
+ name: name,
78
+ image: "nginx",
79
+ ports: [
80
+ containerPort: 80
81
+ ]
82
+ ])
83
+ ```
84
+
85
+ Refer to the source code [syntax/deployment.rb](https://github.com/boltops-tools/kubes/blob/master/lib/kubes/compiler/dsl/syntax/deployment.rb) for more methods available.
86
+
87
+ ## DSL Methods
88
+
89
+ Here's a list of more common methods:
90
+
91
+ Top-level and special fields:
92
+
93
+ * container
94
+ * containers
95
+ * matchLabels
96
+ * maxSurge
97
+ * maxUnavailable
98
+ * sidecar
99
+ * templateMetadata
100
+ * templateSpec
101
+
102
+ deployment.spec fields:
103
+
104
+ * minReadySeconds
105
+ * progressDeadlineSeconds
106
+ * replicas
107
+ * revisionHistoryLimit
108
+ * selector
109
+ * strategy
110
+ * template
111
+
112
+ deployment.spec.template.spec.containers fields:
113
+
114
+ * args
115
+ * command
116
+ * env
117
+ * envFrom
118
+ * image
119
+ * imagePullPolicy
120
+ * lifecycle
121
+ * livenessProbe
122
+ * containerName
123
+ * ports
124
+ * readinessProbe
125
+ * volumeDevices
126
+ * volumeMounts
127
+ * workingDir
128
+
129
+ deployment.spec.template.spec.containers.ports fields:
130
+
131
+ * containerPort
132
+ * hostIP
133
+ * hostPort
134
+ * portName: Note this field doesn't match the original field name. It's more qualified.
135
+ * protocol
136
+
137
+ {% include dsl/methods.md name="deployment" %}
@@ -0,0 +1,58 @@
1
+ ---
2
+ title: Generic
3
+ categories: dsl
4
+ ---
5
+
6
+ The generic DSL allows you to create any Kubernetes resource kind with the Kubes DSL. It is useful for resources with no pretty Kubes DSL wrappers yet. It still has some pretty powerful helper methods.
7
+
8
+ ## Example 1
9
+
10
+ Here's an example of an example of a make-believe SomeKind resource.
11
+
12
+ .kubes/resources/web/some_kind.rb
13
+
14
+ ```ruby
15
+ name "some-kind"
16
+ labels(role: "web")
17
+ spec(
18
+ spec1: "v1"
19
+ )
20
+ field(:data,
21
+ k1: "v1",
22
+ k2: "v2"
23
+ )
24
+ ```
25
+
26
+ Produces:
27
+
28
+ .kubes/output/web/some_kind.yaml
29
+
30
+ ```yaml
31
+ data:
32
+ k1: v1
33
+ k2: v2
34
+ kind: SomeKind
35
+ metadata:
36
+ name: some-kind
37
+ labels:
38
+ role: web
39
+ spec:
40
+ spec1: v1
41
+ ```
42
+
43
+ ## DSL Methods
44
+
45
+ Here's a list of common methods:
46
+
47
+ Top-level and special fields:
48
+
49
+ * apiVersion
50
+ * kind
51
+ * metadata
52
+ * resource
53
+ * spec
54
+ * annotations
55
+ * labels
56
+ * namespace
57
+
58
+ {% include dsl/methods.md name="resource" %}
@@ -0,0 +1,103 @@
1
+ ---
2
+ title: Ingress
3
+ categories: dsl
4
+ ---
5
+
6
+ ## Example 1
7
+
8
+ Here's an example of an ingress.
9
+
10
+ .kubes/resources/web/ingress.rb
11
+
12
+ ```ruby
13
+ name "demo-web-ingress"
14
+ namespace "default"
15
+
16
+ serviceName "demo-web"
17
+ servicePort 80
18
+ ```
19
+
20
+ Produces:
21
+
22
+ .kubes/output/web/ingress.yaml
23
+
24
+ ```yaml
25
+ ---
26
+ apiVersion: networking.k8s.io/v1beta1
27
+ kind: Ingress
28
+ metadata:
29
+ name: demo-web-ingress
30
+ namespace: demo
31
+ spec:
32
+ rules:
33
+ - http:
34
+ paths:
35
+ - path: "/*"
36
+ backend:
37
+ serviceName: demo-web
38
+ servicePort: 80
39
+ ```
40
+
41
+ ## Example 2
42
+
43
+ .kubes/resources/web/ingress.rb
44
+
45
+ ```ruby
46
+ name "demo-web-ingress"
47
+
48
+ paths([{
49
+ path: "/*",
50
+ backend: {
51
+ serviceName: "hello-world",
52
+ servicePort: 60000,
53
+ },
54
+ },{
55
+ path: "/kube",
56
+ backend: {
57
+ serviceName: "hello-kubernetes",
58
+ servicePort: 80,
59
+ },
60
+ }])
61
+ ```
62
+
63
+ Produces:
64
+
65
+ .kubes/output/web/ingress.yaml
66
+
67
+ ```yaml
68
+ ---
69
+ apiVersion: networking.k8s.io/v1beta1
70
+ kind: Ingress
71
+ metadata:
72
+ name: demo-web-ingress
73
+ spec:
74
+ rules:
75
+ - http:
76
+ paths:
77
+ - path: "/*"
78
+ backend:
79
+ serviceName: hello-world
80
+ servicePort: 60000
81
+ - path: "/kube"
82
+ backend:
83
+ serviceName: hello-kubernetes
84
+ servicePort: 80
85
+ ```
86
+
87
+ ## DSL Methods
88
+
89
+ Here's a list of more common methods:
90
+
91
+ Top-level and special fields:
92
+
93
+ * paths
94
+ * serviceName
95
+ * servicePort
96
+
97
+ ingress.spec fields
98
+
99
+ * backend
100
+ * rules
101
+ * tls
102
+
103
+ {% include dsl/methods.md name="ingress" %}
@@ -0,0 +1,39 @@
1
+ ---
2
+ title: ManagedCertificate
3
+ categories: dsl
4
+ ---
5
+
6
+ Here's an example of a ManagedCertificate.
7
+
8
+ .kubes/resources/web/managed_certificate.rb
9
+
10
+ ```ruby
11
+ name "cert1"
12
+ domains(["cert1.example.com"])
13
+ ```
14
+
15
+ Produces:
16
+
17
+ .kubes/output/web/managed_certificate.yaml
18
+
19
+ ```yaml
20
+ ---
21
+ apiVersion: networking.gke.io/v1beta2
22
+ kind: ManagedCertificate
23
+ metadata:
24
+ name: cert1
25
+ spec:
26
+ domains:
27
+ - cert1.example.com
28
+ ```
29
+
30
+ ## DSL Methods
31
+
32
+ Here's a list of more common methods:
33
+
34
+ Top-level and special fields:
35
+
36
+ * domain
37
+ * domains
38
+
39
+ {% include dsl/methods.md name="managed_certificate" %}
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: Namespace
3
+ categories: dsl
4
+ ---
5
+
6
+ ## Example
7
+
8
+ Here's an example of a Namespace.
9
+
10
+ .kubes/resources/shared/namespace.rb
11
+
12
+ ```ruby
13
+ name "demo"
14
+ labels(app: "demo") # useful with NetworkPolicy
15
+ ```
16
+
17
+ Produces:
18
+
19
+ .kubes/output/shared/namespace.yaml
20
+
21
+ ```yaml
22
+ apiVersion: v1
23
+ kind: Namespace
24
+ metadata:
25
+ name: demo
26
+ labels:
27
+ app: demo
28
+ ```
29
+
30
+ ## DSL Methods
31
+
32
+ Here's the source of the namespace resource.
33
+
34
+ {% include dsl/methods.md name="namespace" %}
@@ -0,0 +1,111 @@
1
+ ---
2
+ title: NetworkPolicy
3
+ categories: dsl
4
+ ---
5
+
6
+ ## Example
7
+
8
+ Here's an example of a NetworkPolicy.
9
+
10
+ .kubes/resources/web/network_policy.rb
11
+
12
+ ```ruby
13
+ name "web"
14
+ labels(app: "backend")
15
+ namespace "backend"
16
+
17
+ matchLabels(app: "backend", role: "web")
18
+ fromNamespace(app: "frontend")
19
+ fromPod(app: "backend")
20
+ ```
21
+
22
+ Produces:
23
+
24
+ .kubes/output/web/network_policy.yaml
25
+
26
+ ```yaml
27
+ apiVersion: networking.k8s.io/v1
28
+ kind: NetworkPolicy
29
+ metadata:
30
+ name: web
31
+ labels:
32
+ app: backend
33
+ namespace: backend
34
+ spec:
35
+ podSelector:
36
+ matchLabels:
37
+ app: backend
38
+ role: web
39
+ ingress:
40
+ - from:
41
+ - namespaceSelector:
42
+ matchLabels:
43
+ app: frontend
44
+ - podSelector:
45
+ matchLabels:
46
+ app: backend
47
+ ```
48
+
49
+ Note, the behavior of the from is an *or* since the namespaceSelector and podSelector are separate items.
50
+
51
+ ## Example 2
52
+
53
+ If you need more control over the ingress selectors, you can use the `from` method. Here's an example:
54
+
55
+ .kubes/resources/web/network_policy.rb
56
+
57
+ ```ruby
58
+ name "web"
59
+ labels(app: "backend")
60
+ namespace "backend"
61
+
62
+ matchLabels(app: "backend", role: "web")
63
+ from([
64
+ { namespaceSelector: { matchLabels: { app: "frontend" } } },
65
+ { namespaceSelector: { matchLabels: { app: "backend" } } }
66
+ ])
67
+ ```
68
+
69
+ Produces:
70
+
71
+ .kubes/output/web/network_policy.yaml
72
+
73
+ ```yaml
74
+ apiVersion: networking.k8s.io/v1
75
+ kind: NetworkPolicy
76
+ metadata:
77
+ name: web
78
+ labels:
79
+ app: backend
80
+ namespace: backend
81
+ spec:
82
+ podSelector:
83
+ matchLabels:
84
+ app: backend
85
+ role: web
86
+ ingress:
87
+ - from:
88
+ - namespaceSelector:
89
+ matchLabels:
90
+ app: frontend
91
+ - namespaceSelector:
92
+ matchLabels:
93
+ app: backend
94
+ ```
95
+
96
+ This will allow traffic from pods in either the frontend or backend namespaces to the backend pods.
97
+
98
+ ## DSL Methods
99
+
100
+ Here's a list of more common methods:
101
+
102
+ * fromNamespace
103
+ * fromPod
104
+ * fromIpBlock
105
+ * toNamespace
106
+ * toPod
107
+ * toIpBlock
108
+ * from
109
+ * to
110
+
111
+ {% include dsl/methods.md name="network_policy" %}