kubes 0.1.0 → 0.2.4

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 (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,37 @@
1
+ ---
2
+ title: New Project
3
+ ---
4
+
5
+ If you already a project with an existing Dockerfile, you can use that. If you do not, kubes generates a starter Dockerfile that runs nginx. For this tutorial, we'll start with an empty folder.
6
+
7
+ mkdir demo
8
+ cd demo
9
+
10
+ For this tutorial, we'll use an ECR repo, though any repo will work.
11
+
12
+ Let's generate a starter project:
13
+
14
+ $ REPO=$(aws ecr describe-repositories --repository-name demo | jq -r '.repositories[].repositoryUri')
15
+ $ kubes init --app demo --repo $REPO
16
+ create Dockerfile
17
+ create .kubes/config.rb
18
+ create .kubes/config/env/dev.rb
19
+ create .kubes/config/env/prod.rb
20
+ create .kubes/resources/base/all.yaml
21
+ create .kubes/resources/base/deployment.yaml
22
+ create .kubes/resources/shared/namespace.yaml
23
+ create .kubes/resources/web/deployment.yaml
24
+ create .kubes/resources/web/deployment/dev.yaml
25
+ create .kubes/resources/web/deployment/prod.yaml
26
+ create .kubes/resources/web/service.yaml
27
+ Initialized .kubes folder
28
+ Updated .gitignore
29
+ $
30
+
31
+ To learn more about the generated structure, here are the [Structure Docs]({% link _docs/intro/structure.md %}).
32
+
33
+ Let's explore some of the generated files.
34
+
35
+ {% include learn/review.md %}
36
+
37
+ Next, we'll review the resources.
@@ -0,0 +1,5 @@
1
+ ---
2
+ title: Next Steps
3
+ ---
4
+
5
+ {% include learn/next-steps.md %}
@@ -0,0 +1,108 @@
1
+ ---
2
+ title: Review Project
3
+ ---
4
+
5
+ Let's review the resources.
6
+
7
+ ## Namespace
8
+
9
+ We'll create a namespace for the app resources:
10
+
11
+ .kubes/resources/shared/namespace.yaml
12
+
13
+ ```yaml
14
+ apiVersion: v1
15
+ kind: Namespace
16
+ metadata:
17
+ name: demo
18
+ labels:
19
+ app: demo
20
+ ```
21
+
22
+ ## Deployment
23
+
24
+ The `web/deployment.yaml` file is a little more interesting:
25
+
26
+ .kubes/resources/web/deployment.yaml
27
+
28
+ ```yaml
29
+ apiVersion: apps/v1
30
+ kind: Deployment
31
+ metadata:
32
+ name: web
33
+ labels:
34
+ role: web
35
+ spec:
36
+ replicas: 1
37
+ selector:
38
+ matchLabels:
39
+ role: web
40
+ template:
41
+ metadata:
42
+ labels:
43
+ role: web
44
+ spec:
45
+ containers:
46
+ - name: web
47
+ image: <%= built_image %>
48
+ ```
49
+
50
+ Notice the `<%= built_image %>`. Kubes processes the YAML files with ERB templating and replaces these tags. The `built_image` is a kubes helper method that refers to the latest Docker image built by Kubes. This spares you updating the image manually.
51
+
52
+ ## Base Folder
53
+
54
+ Also let's check the files in the base folder.
55
+
56
+ .kubes/resources/base/all.yaml
57
+
58
+ ```yaml
59
+ metadata:
60
+ namespace: demo
61
+ ```
62
+
63
+ .kubes/resources/base/deployment.yaml
64
+
65
+ ```yaml
66
+ metadata:
67
+ labels:
68
+ app: demo
69
+ spec:
70
+ selector:
71
+ matchLabels:
72
+ app: demo
73
+ template:
74
+ metadata:
75
+ labels:
76
+ app: demo
77
+ ```
78
+
79
+ The base folder files are processed first as a part of [Kubes Layering]({% link _docs/layering.md %}). This allows you to define common fields and keep your code DRY.
80
+
81
+ The `all.yaml` means all resources will use the demo namespace. The `deployment.yaml` adds common labels to all deployment resource kinds.
82
+
83
+ ## Service Resource
84
+
85
+ Next, let's look at `service.yaml`
86
+
87
+ .kubes/resources/web/service.yaml
88
+
89
+ ```yaml
90
+ apiVersion: v1
91
+ kind: Service
92
+ metadata:
93
+ name: web
94
+ labels:
95
+ role: web
96
+ spec:
97
+ ports:
98
+ - port: 80
99
+ protocol: TCP
100
+ targetPort: <%= dockerfile_port %>
101
+ selector:
102
+ role: web
103
+ type: ClusterIP
104
+ ```
105
+
106
+ The `dockerfile_port` helper returns the EXPOSE port in the Dockerfile. This spares you updating this manually, you only have to update the Dockerfile.
107
+
108
+ Next, we'll deploy the app.
@@ -0,0 +1,54 @@
1
+ ---
2
+ title: Update App
3
+ ---
4
+
5
+ Let's update the app. In this case, we don't need to update the Docker image, so we'll use the `apply` command, which does not run the Docker build phase.
6
+
7
+ kubes apply
8
+
9
+ Here's what the output looks like. Note, the namespace is not shown for conciseness.
10
+
11
+ $ kubes apply
12
+ Compiled .kubes/resources files
13
+ => kubectl apply -f .kubes/output/web/service.yaml
14
+ service/demo-web unchanged
15
+ => kubectl apply -f .kubes/output/web/deployment.yaml
16
+ deployment.apps/demo-web configured
17
+ $
18
+
19
+ The change has been deployed. Let's double check it:
20
+
21
+ kubes get
22
+
23
+ Example output:
24
+
25
+ $ kubes get
26
+ => kubectl get --recursive -f .kubes/output
27
+ NAME READY UP-TO-DATE AVAILABLE AGE
28
+ deployment.apps/demo-web 3/3 3 3 6m5s
29
+
30
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
31
+ service/demo-web ClusterIP 172.16.201.77 <none> 80/TCP 6m5s
32
+ $
33
+
34
+ Let's also use the `kubectl get` command:
35
+
36
+ $ kubectl get all
37
+ NAME READY STATUS RESTARTS AGE
38
+ pod/demo-web-5cb4f9fb77-6c7vc 1/1 Running 0 3s
39
+ pod/demo-web-5cb4f9fb77-lgczj 1/1 Running 0 5m25s
40
+ pod/demo-web-5cb4f9fb77-ls28f 1/1 Running 0 3s
41
+
42
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
43
+ service/demo-web ClusterIP 172.16.201.77 <none> 80/TCP 5m26s
44
+
45
+ NAME READY UP-TO-DATE AVAILABLE AGE
46
+ deployment.apps/demo-web 3/3 3 3 5m26s
47
+
48
+ NAME DESIRED CURRENT READY AGE
49
+ replicaset.apps/demo-web-5cb4f9fb77 3 3 3 5m26s
50
+ $
51
+
52
+ We can see that there are now 3 replicas running.
53
+
54
+ Next, we'll delete the app.
@@ -0,0 +1,13 @@
1
+ ---
2
+ title: Next Steps
3
+ ---
4
+
5
+ Hopefully, you have a good feel for how kubes works now. From here, there are a few resources that can help you continue along:
6
+
7
+ * Check out the [kubes](https://github.com/boltops-tools/kubes) repo on GitHub
8
+ * ⭐️ the kubes project on GitHub
9
+ * Write a blog post about kubes
10
+ * Post on your favorite discussion about kubes
11
+ * Contribute a pull request
12
+
13
+ Everyone can contribute to making kubes better, including the documentation. These docs are the kubes repo located the [docs folder](https://github.com/boltops-tools/tree/master/docs). Please fork the project and open a pull request! We love your pull requests. Contributions are encouraged and welcomed!
@@ -0,0 +1,7 @@
1
+ ---
2
+ title: Patterns
3
+ ---
4
+
5
+ We'll cover some common deployment patterns here:
6
+
7
+ * [Clock Web Worker]({% link _docs/patterns/clock-web-worker.md %})
@@ -0,0 +1,71 @@
1
+ ---
2
+ title: Clock Web Worker Pattern
3
+ ---
4
+
5
+ A common pattern is to use the same code to run different types of processes like clock, web, worker. Kubes is flexible enough to support this pattern.
6
+
7
+ Note, often the clock process is also called a scheduler.
8
+
9
+ ## Structure
10
+
11
+ Here's a structure that achieves this pattern with Kubes:
12
+
13
+ .kubes/resources
14
+ ├── clock
15
+ │ └── deployment.rb
16
+ ├── web
17
+ │ ├── deployment.rb
18
+ │ └── service.rb
19
+ └── worker
20
+ └── deployment.rb
21
+
22
+ ## Source Code
23
+
24
+ .kubes/resources/demo-clock/deployment.rb
25
+
26
+ ```ruby
27
+ name "demo-clock"
28
+ namespace "default"
29
+ labels(role: "web")
30
+
31
+ replicas 1
32
+ image built_image # IE: user/demo-clock:kubes-2020-06-13T19-55-16-43afc6e
33
+ command "bin/clock"
34
+ ```
35
+
36
+ .kubes/resources/web/deployment.rb
37
+
38
+ ```ruby
39
+ name "demo-web"
40
+ namespace "default"
41
+ labels(role: "web")
42
+
43
+ replicas 1
44
+ image built_image # IE: user/demo-clock:kubes-2020-06-13T19-55-16-43afc6e
45
+ ```
46
+
47
+ .kubes/resources/demo-worker/deployment.rb
48
+
49
+ ```ruby
50
+ name "demo-worker"
51
+ namespace "default"
52
+ labels(role: "web")
53
+
54
+ replicas 2
55
+ image built_image # IE: user/demo-clock:kubes-2020-06-13T19-55-16-43afc6e
56
+ command "bin/worker"
57
+ ```
58
+
59
+ ## Deploy All-At-Once
60
+
61
+ To deploy all 3 process types:
62
+
63
+ kubes deploy
64
+
65
+ ## Deploy Selectively
66
+
67
+ To deploy selectively:
68
+
69
+ kubes deploy clock
70
+ kubes deploy web
71
+ kubes deploy worker
@@ -0,0 +1,11 @@
1
+ ---
2
+ title: Resources
3
+ ---
4
+
5
+ You define your Kubernetes resources in the `.kubes/resources` folder. Kubes categories items within this folder in 3 main buckets:
6
+
7
+ * [Role-Based Resource]({% link _docs/resources/role.md %}): Role-based resources. This is your main project resources group in roles.
8
+ * [Base Folder]({% link _docs/resources/base.md %}): The base folder contains definitions for common fields that is used for [Layering]({% link _docs/layering.md %}).
9
+ * [Shared Resources]({% link _docs/resources/shared.md %}): Shared resources that are meant to be created first and shared by other resources.
10
+
11
+ In the next sections, we'll cover how these resources are used.
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: Base
3
+ ---
4
+
5
+ The base folder is used for purely layering.
6
+
7
+ ## Structure
8
+
9
+ Here's an example structure, so we can understand how layering works with the base folder.
10
+
11
+ .kubes/resources/
12
+ ├── base
13
+ │ ├── all.rb
14
+ │ └── deployment.rb
15
+ └── web
16
+ ├── deployment.rb
17
+ └── service.rb
18
+
19
+ ## Layering
20
+
21
+ Kubes process the files in the `base` folder first, then it process your [role-based resources]({% link _docs/resources/role.md %}) like web. So:
22
+
23
+ kubes deploy web deployment
24
+
25
+ Will layer:
26
+
27
+ 1. .kubes/resources/base/all.rb
28
+ 2. .kubes/resources/base/deployment.rb
29
+ 3. .kubes/resources/web/deployment.rb
30
+
31
+ More details on layering can be found in the [Layering Docs]({% link _docs/layering.md %}).
32
+
33
+ Remember files in the base are used just for layering.
@@ -0,0 +1,41 @@
1
+ ---
2
+ title: Role-Based Resources
3
+ ---
4
+
5
+ Role-based resources are your main project's resources. Kubes groups resources together under a "role".
6
+
7
+ ## Example Structure
8
+
9
+ Here's an example structure to help explain how role-based resources work.
10
+
11
+ .kubes
12
+ └── resources
13
+ ├── clock
14
+ │ └── deployment.yaml
15
+ ├── web
16
+ │ ├── deployment.yaml
17
+ │ └── service.yaml
18
+ └── worker
19
+ └── deployment.yaml
20
+
21
+ ## Resource Roles
22
+
23
+ Here the resource roles are:
24
+
25
+ 1. clock
26
+ 2. web
27
+ 3. worker
28
+
29
+ You can freely add more roles if needed. This structure is flexible enough to account for most use-cases.
30
+
31
+ ## Deploy
32
+
33
+ You can deploy specific roles like so:
34
+
35
+ kubes deploy clock
36
+ kubes deploy web
37
+ kubes deploy worker
38
+
39
+ Or you can deploy all roles at once:
40
+
41
+ kubes deploy
@@ -0,0 +1,36 @@
1
+ ---
2
+ title: Shared
3
+ ---
4
+
5
+ The `shared` folder purpose is to provide a place for Kubernetes resources that are shared between roles.
6
+
7
+ ## Example Structure
8
+
9
+ Here's an example structure to help explain how shared resources work.
10
+
11
+ .kubes/resources
12
+ ├── clock
13
+ │ └── deployment.rb
14
+ ├── shared
15
+ │ └── secret.rb
16
+ └── web
17
+ ├── deployment.rb
18
+ └── service.rb
19
+
20
+ ## Deploy
21
+
22
+ When you deploy with Kubes, it will run `kubectl apply` on the shared resources first and then your [role-based resources]({% link _docs/resources/role.md %}) like clock and web. Example:
23
+
24
+ $ kubes apply
25
+ Deploying kubes resources
26
+ => kubectl apply -f .kubes/output/shared/secret.yaml
27
+ secret/demo-secret created
28
+ => kubectl apply -f .kubes/output/clock/deployment.yaml
29
+ deployment.apps/demo-clock created
30
+ => kubectl apply -f .kubes/output/web/service.yaml
31
+ service/demo-web created
32
+ => kubectl apply -f .kubes/output/web/deployment.yaml
33
+ deployment.apps/demo-web created
34
+ $
35
+
36
+ Kubes will order the creation of shared resources first. You can override the default ordering with an [Order config]({% link _docs/intro/ordering/custom.md %}).
@@ -0,0 +1,41 @@
1
+ ---
2
+ title: Kubes YAML
3
+ ---
4
+
5
+ You can write your Kubernetes resources in YAML format.
6
+
7
+ .kubes
8
+ └── resources
9
+ └── web
10
+ ├── deployment.yaml
11
+ └── service.yaml
12
+
13
+ ## YAML and Templating
14
+
15
+ Kubes provides a little extra power for the YAML format. The YAML files are processed through an ERB templating language. So you have dynamic control. Here's an example with `Kubes.env` and the `built_image` helper.
16
+
17
+ .kubes/resources/web/deployment.yaml
18
+
19
+ ```yaml
20
+ ---
21
+ apiVersion: apps/v1
22
+ kind: Deployment
23
+ metadata:
24
+ name: demo-web
25
+ labels:
26
+ app: demo
27
+ namespace: default
28
+ spec:
29
+ replicas: <%= Kubes.env == "prod" ? 2 : 1 %>
30
+ selector:
31
+ matchLabels:
32
+ app: demo
33
+ template:
34
+ metadata:
35
+ labels:
36
+ app: demo
37
+ spec:
38
+ containers:
39
+ - name: demo-web
40
+ image: <%= built_image %>
41
+ ```