kubes 0.1.0 → 0.2.0

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 (379) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +15 -7
  3. data/.rspec +3 -0
  4. data/CHANGELOG.md +10 -0
  5. data/Gemfile +3 -1
  6. data/Guardfile +19 -0
  7. data/LICENSE.txt +201 -0
  8. data/README.md +46 -18
  9. data/Rakefile +13 -1
  10. data/docs/.gitignore +5 -0
  11. data/docs/CNAME +1 -0
  12. data/docs/Gemfile +16 -0
  13. data/docs/LICENSE +201 -0
  14. data/docs/Procfile +2 -0
  15. data/docs/README.md +24 -0
  16. data/docs/Rakefile +38 -0
  17. data/docs/_config.yml +71 -0
  18. data/docs/_docs/auto-context.md +47 -0
  19. data/docs/_docs/config.md +9 -0
  20. data/docs/_docs/config/docker.md +70 -0
  21. data/docs/_docs/config/env.md +58 -0
  22. data/docs/_docs/config/kubectl.md +61 -0
  23. data/docs/_docs/contributing.md +98 -0
  24. data/docs/_docs/dsl.md +66 -0
  25. data/docs/_docs/dsl/multiple-resources.md +114 -0
  26. data/docs/_docs/dsl/resources.md +12 -0
  27. data/docs/_docs/dsl/resources/backend_config.md +45 -0
  28. data/docs/_docs/dsl/resources/config_map.md +84 -0
  29. data/docs/_docs/dsl/resources/daemon_set.md +58 -0
  30. data/docs/_docs/dsl/resources/deployment.md +142 -0
  31. data/docs/_docs/dsl/resources/generic.md +58 -0
  32. data/docs/_docs/dsl/resources/ingress.md +103 -0
  33. data/docs/_docs/dsl/resources/managed_certificate.md +39 -0
  34. data/docs/_docs/dsl/resources/namespace.md +34 -0
  35. data/docs/_docs/dsl/resources/network_policy.md +45 -0
  36. data/docs/_docs/dsl/resources/pod.md +82 -0
  37. data/docs/_docs/dsl/resources/role.md +44 -0
  38. data/docs/_docs/dsl/resources/role_binding.md +55 -0
  39. data/docs/_docs/dsl/resources/secret.md +87 -0
  40. data/docs/_docs/dsl/resources/service.md +60 -0
  41. data/docs/_docs/dsl/resources/service_account.md +37 -0
  42. data/docs/_docs/extra-env.md +23 -0
  43. data/docs/_docs/extra-env/dsl.md +86 -0
  44. data/docs/_docs/extra-env/yaml.md +67 -0
  45. data/docs/_docs/helpers.md +18 -0
  46. data/docs/_docs/intro.md +15 -0
  47. data/docs/_docs/intro/concepts.md +37 -0
  48. data/docs/_docs/intro/how-kubes-works.md +29 -0
  49. data/docs/_docs/intro/install.md +6 -0
  50. data/docs/_docs/intro/ordering.md +63 -0
  51. data/docs/_docs/intro/ordering/custom.md +25 -0
  52. data/docs/_docs/intro/structure.md +43 -0
  53. data/docs/_docs/kustomize.md +54 -0
  54. data/docs/_docs/layering.md +8 -0
  55. data/docs/_docs/layering/dsl.md +5 -0
  56. data/docs/_docs/layering/merge.md +96 -0
  57. data/docs/_docs/layering/yaml.md +5 -0
  58. data/docs/_docs/learn/dsl.md +5 -0
  59. data/docs/_docs/learn/dsl/change.md +16 -0
  60. data/docs/_docs/learn/dsl/cluster.md +5 -0
  61. data/docs/_docs/learn/dsl/delete.md +30 -0
  62. data/docs/_docs/learn/dsl/deploy.md +61 -0
  63. data/docs/_docs/learn/dsl/install.md +5 -0
  64. data/docs/_docs/learn/dsl/new-project.md +33 -0
  65. data/docs/_docs/learn/dsl/next-steps.md +5 -0
  66. data/docs/_docs/learn/dsl/review-project.md +52 -0
  67. data/docs/_docs/learn/dsl/update.md +53 -0
  68. data/docs/_docs/learn/yaml.md +5 -0
  69. data/docs/_docs/learn/yaml/change.md +17 -0
  70. data/docs/_docs/learn/yaml/cluster.md +5 -0
  71. data/docs/_docs/learn/yaml/delete.md +30 -0
  72. data/docs/_docs/learn/yaml/deploy.md +62 -0
  73. data/docs/_docs/learn/yaml/install.md +5 -0
  74. data/docs/_docs/learn/yaml/new-project.md +36 -0
  75. data/docs/_docs/learn/yaml/next-steps.md +5 -0
  76. data/docs/_docs/learn/yaml/review-project.md +97 -0
  77. data/docs/_docs/learn/yaml/update.md +54 -0
  78. data/docs/_docs/next-steps.md +13 -0
  79. data/docs/_docs/patterns.md +7 -0
  80. data/docs/_docs/patterns/clock-web-worker.md +71 -0
  81. data/docs/_docs/resources.md +11 -0
  82. data/docs/_docs/resources/base.md +33 -0
  83. data/docs/_docs/resources/role.md +41 -0
  84. data/docs/_docs/resources/shared.md +36 -0
  85. data/docs/_docs/yaml.md +46 -0
  86. data/docs/_includes/commands.html +131 -0
  87. data/docs/_includes/content.html +25 -0
  88. data/docs/_includes/dsl/methods.md +1 -0
  89. data/docs/_includes/dsl/rolling_deployment.md +1 -0
  90. data/docs/_includes/dsl/suffix_hash.md +8 -0
  91. data/docs/_includes/example.html +12 -0
  92. data/docs/_includes/footer.html +37 -0
  93. data/docs/_includes/google_analytics.html +10 -0
  94. data/docs/_includes/header.html +31 -0
  95. data/docs/_includes/intro/install.md +15 -0
  96. data/docs/_includes/js.html +3 -0
  97. data/docs/_includes/kubes-steps.md +3 -0
  98. data/docs/_includes/layering/layers.md +64 -0
  99. data/docs/_includes/learn/cluster.md +22 -0
  100. data/docs/_includes/learn/next-steps.md +6 -0
  101. data/docs/_includes/learn/review.md +25 -0
  102. data/docs/_includes/learn/start.md +3 -0
  103. data/docs/_includes/reference.md +3 -0
  104. data/docs/_includes/sidebar.html +113 -0
  105. data/docs/_layouts/default.html +35 -0
  106. data/docs/_reference/kubes-apply.md +24 -0
  107. data/docs/_reference/kubes-clean.md +22 -0
  108. data/docs/_reference/kubes-compile.md +22 -0
  109. data/docs/_reference/kubes-completion.md +42 -0
  110. data/docs/_reference/kubes-completion_script.md +25 -0
  111. data/docs/_reference/kubes-delete.md +23 -0
  112. data/docs/_reference/kubes-deploy.md +35 -0
  113. data/docs/_reference/kubes-docker-build.md +20 -0
  114. data/docs/_reference/kubes-docker-help.md +15 -0
  115. data/docs/_reference/kubes-docker-push.md +20 -0
  116. data/docs/_reference/kubes-docker.md +25 -0
  117. data/docs/_reference/kubes-init.md +26 -0
  118. data/docs/_reference/kubes-version.md +21 -0
  119. data/docs/_sass/bootstrap-overrides.scss +17 -0
  120. data/docs/_sass/buttons.scss +62 -0
  121. data/docs/_sass/caret.scss +39 -0
  122. data/docs/_sass/content.scss +21 -0
  123. data/docs/_sass/cta.scss +39 -0
  124. data/docs/_sass/default.scss +103 -0
  125. data/docs/_sass/footer.scss +66 -0
  126. data/docs/_sass/masthead.scss +77 -0
  127. data/docs/_sass/mixins.scss +79 -0
  128. data/docs/_sass/sidebar.scss +107 -0
  129. data/docs/_sass/syntax.scss +89 -0
  130. data/docs/_sass/table.scss +30 -0
  131. data/docs/_sass/theme.scss +292 -0
  132. data/docs/_sass/variables.scss +24 -0
  133. data/docs/bin/build +4 -0
  134. data/docs/bin/rerun +2 -0
  135. data/docs/bin/web +8 -0
  136. data/docs/css/main.scss +24 -0
  137. data/docs/docs.md +7 -0
  138. data/docs/getting-started.md +12 -0
  139. data/docs/img/logos/boltops-logo-full.png +0 -0
  140. data/docs/img/logos/boltops-logo.png +0 -0
  141. data/docs/img/logos/filler-logo.png +0 -0
  142. data/docs/img/logos/kubes-black.png +0 -0
  143. data/docs/img/logos/kubes-sign.png +0 -0
  144. data/docs/index.html +34 -0
  145. data/docs/js/app.js +39414 -0
  146. data/docs/opal/app.rb +16 -0
  147. data/docs/opal/pager.rb +90 -0
  148. data/docs/opal/sidebar.rb +94 -0
  149. data/docs/opal/sidebar/expander.rb +51 -0
  150. data/docs/reference.md +15 -0
  151. data/docs/support.md +19 -0
  152. data/docs/vendor/bootstrap/css/bootstrap-grid.css +3719 -0
  153. data/docs/vendor/bootstrap/css/bootstrap-grid.css.map +1 -0
  154. data/docs/vendor/bootstrap/css/bootstrap-grid.min.css +7 -0
  155. data/docs/vendor/bootstrap/css/bootstrap-grid.min.css.map +1 -0
  156. data/docs/vendor/bootstrap/css/bootstrap-reboot.css +331 -0
  157. data/docs/vendor/bootstrap/css/bootstrap-reboot.css.map +1 -0
  158. data/docs/vendor/bootstrap/css/bootstrap-reboot.min.css +8 -0
  159. data/docs/vendor/bootstrap/css/bootstrap-reboot.min.css.map +1 -0
  160. data/docs/vendor/bootstrap/css/bootstrap.css +10038 -0
  161. data/docs/vendor/bootstrap/css/bootstrap.css.map +1 -0
  162. data/docs/vendor/bootstrap/css/bootstrap.min.css +7 -0
  163. data/docs/vendor/bootstrap/css/bootstrap.min.css.map +1 -0
  164. data/docs/vendor/bootstrap/js/bootstrap.bundle.js +7013 -0
  165. data/docs/vendor/bootstrap/js/bootstrap.bundle.js.map +1 -0
  166. data/docs/vendor/bootstrap/js/bootstrap.bundle.min.js +7 -0
  167. data/docs/vendor/bootstrap/js/bootstrap.bundle.min.js.map +1 -0
  168. data/docs/vendor/bootstrap/js/bootstrap.js +4435 -0
  169. data/docs/vendor/bootstrap/js/bootstrap.js.map +1 -0
  170. data/docs/vendor/bootstrap/js/bootstrap.min.js +7 -0
  171. data/docs/vendor/bootstrap/js/bootstrap.min.js.map +1 -0
  172. data/docs/vendor/font-awesome/css/font-awesome.css +2337 -0
  173. data/docs/vendor/font-awesome/css/font-awesome.min.css +4 -0
  174. data/docs/vendor/font-awesome/fonts/FontAwesome.otf +0 -0
  175. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  176. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.svg +2671 -0
  177. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  178. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  179. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  180. data/docs/vendor/font-awesome/less/animated.less +34 -0
  181. data/docs/vendor/font-awesome/less/bordered-pulled.less +25 -0
  182. data/docs/vendor/font-awesome/less/core.less +12 -0
  183. data/docs/vendor/font-awesome/less/fixed-width.less +6 -0
  184. data/docs/vendor/font-awesome/less/font-awesome.less +18 -0
  185. data/docs/vendor/font-awesome/less/icons.less +789 -0
  186. data/docs/vendor/font-awesome/less/larger.less +13 -0
  187. data/docs/vendor/font-awesome/less/list.less +19 -0
  188. data/docs/vendor/font-awesome/less/mixins.less +60 -0
  189. data/docs/vendor/font-awesome/less/path.less +15 -0
  190. data/docs/vendor/font-awesome/less/rotated-flipped.less +20 -0
  191. data/docs/vendor/font-awesome/less/screen-reader.less +5 -0
  192. data/docs/vendor/font-awesome/less/stacked.less +20 -0
  193. data/docs/vendor/font-awesome/less/variables.less +799 -0
  194. data/docs/vendor/font-awesome/scss/_animated.scss +34 -0
  195. data/docs/vendor/font-awesome/scss/_bordered-pulled.scss +25 -0
  196. data/docs/vendor/font-awesome/scss/_core.scss +12 -0
  197. data/docs/vendor/font-awesome/scss/_fixed-width.scss +6 -0
  198. data/docs/vendor/font-awesome/scss/_icons.scss +789 -0
  199. data/docs/vendor/font-awesome/scss/_larger.scss +13 -0
  200. data/docs/vendor/font-awesome/scss/_list.scss +19 -0
  201. data/docs/vendor/font-awesome/scss/_mixins.scss +60 -0
  202. data/docs/vendor/font-awesome/scss/_path.scss +15 -0
  203. data/docs/vendor/font-awesome/scss/_rotated-flipped.scss +20 -0
  204. data/docs/vendor/font-awesome/scss/_screen-reader.scss +5 -0
  205. data/docs/vendor/font-awesome/scss/_stacked.scss +20 -0
  206. data/docs/vendor/font-awesome/scss/_variables.scss +799 -0
  207. data/docs/vendor/font-awesome/scss/font-awesome.scss +18 -0
  208. data/docs/vendor/jquery/jquery.js +10598 -0
  209. data/docs/vendor/jquery/jquery.min.js +2 -0
  210. data/docs/vendor/jquery/jquery.min.map +1 -0
  211. data/docs/vendor/jquery/jquery.slim.js +8495 -0
  212. data/docs/vendor/jquery/jquery.slim.min.js +2 -0
  213. data/docs/vendor/jquery/jquery.slim.min.map +1 -0
  214. data/docs/vendor/simple-line-icons/css/simple-line-icons.css +778 -0
  215. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.eot +0 -0
  216. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.svg +200 -0
  217. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.ttf +0 -0
  218. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.woff +0 -0
  219. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.woff2 +0 -0
  220. data/docs/vendor/simple-line-icons/less/simple-line-icons.less +982 -0
  221. data/docs/vendor/simple-line-icons/scss/simple-line-icons.scss +979 -0
  222. data/exe/kubes +14 -0
  223. data/kubes.gemspec +29 -19
  224. data/lib/kubes.rb +21 -1
  225. data/lib/kubes/args/custom.rb +30 -0
  226. data/lib/kubes/args/dsl.rb +14 -0
  227. data/lib/kubes/auth.rb +21 -0
  228. data/lib/kubes/auth/ecr.rb +55 -0
  229. data/lib/kubes/autoloader.rb +21 -0
  230. data/lib/kubes/aws_services.rb +14 -0
  231. data/lib/kubes/cli.rb +93 -0
  232. data/lib/kubes/cli/apply.rb +9 -0
  233. data/lib/kubes/cli/base.rb +9 -0
  234. data/lib/kubes/cli/build.rb +8 -0
  235. data/lib/kubes/cli/clean.rb +9 -0
  236. data/lib/kubes/cli/compile.rb +8 -0
  237. data/lib/kubes/cli/delete.rb +11 -0
  238. data/lib/kubes/cli/deploy.rb +13 -0
  239. data/lib/kubes/cli/describe.rb +8 -0
  240. data/lib/kubes/cli/docker.rb +20 -0
  241. data/lib/kubes/cli/get.rb +8 -0
  242. data/lib/kubes/cli/help.rb +11 -0
  243. data/lib/kubes/cli/help/completion.md +20 -0
  244. data/lib/kubes/cli/help/completion_script.md +3 -0
  245. data/lib/kubes/cli/help/deploy.md +10 -0
  246. data/lib/kubes/cli/init.rb +69 -0
  247. data/lib/kubes/cli/sequence.rb +27 -0
  248. data/lib/kubes/command.rb +100 -0
  249. data/lib/kubes/compiler.rb +71 -0
  250. data/lib/kubes/compiler/decorator.rb +17 -0
  251. data/lib/kubes/compiler/decorator/base.rb +16 -0
  252. data/lib/kubes/compiler/decorator/compile.rb +12 -0
  253. data/lib/kubes/compiler/decorator/resources/base.rb +13 -0
  254. data/lib/kubes/compiler/decorator/resources/container.rb +76 -0
  255. data/lib/kubes/compiler/decorator/resources/container/mapping.rb +28 -0
  256. data/lib/kubes/compiler/decorator/resources/deployment.rb +10 -0
  257. data/lib/kubes/compiler/decorator/resources/pod.rb +10 -0
  258. data/lib/kubes/compiler/decorator/resources/secret.rb +23 -0
  259. data/lib/kubes/compiler/decorator/write.rb +14 -0
  260. data/lib/kubes/compiler/dsl/core/base.rb +27 -0
  261. data/lib/kubes/compiler/dsl/core/blocks.rb +55 -0
  262. data/lib/kubes/compiler/dsl/core/fields.rb +78 -0
  263. data/lib/kubes/compiler/dsl/core/files.rb +28 -0
  264. data/lib/kubes/compiler/dsl/core/helpers.rb +4 -0
  265. data/lib/kubes/compiler/dsl/core/parser.rb +43 -0
  266. data/lib/kubes/compiler/dsl/syntax/backend_config.rb +10 -0
  267. data/lib/kubes/compiler/dsl/syntax/cluster_role.rb +4 -0
  268. data/lib/kubes/compiler/dsl/syntax/cluster_role_binding.rb +4 -0
  269. data/lib/kubes/compiler/dsl/syntax/config_map.rb +20 -0
  270. data/lib/kubes/compiler/dsl/syntax/daemon_set.rb +23 -0
  271. data/lib/kubes/compiler/dsl/syntax/deployment.rb +163 -0
  272. data/lib/kubes/compiler/dsl/syntax/ingress.rb +41 -0
  273. data/lib/kubes/compiler/dsl/syntax/managed_certificate.rb +18 -0
  274. data/lib/kubes/compiler/dsl/syntax/namespace.rb +13 -0
  275. data/lib/kubes/compiler/dsl/syntax/network_policy.rb +30 -0
  276. data/lib/kubes/compiler/dsl/syntax/pod.rb +81 -0
  277. data/lib/kubes/compiler/dsl/syntax/resource.rb +70 -0
  278. data/lib/kubes/compiler/dsl/syntax/role.rb +40 -0
  279. data/lib/kubes/compiler/dsl/syntax/role_binding.rb +43 -0
  280. data/lib/kubes/compiler/dsl/syntax/secret.rb +22 -0
  281. data/lib/kubes/compiler/dsl/syntax/service.rb +68 -0
  282. data/lib/kubes/compiler/dsl/syntax/service_account.rb +20 -0
  283. data/lib/kubes/compiler/layering.rb +39 -0
  284. data/lib/kubes/compiler/shared/helpers.rb +30 -0
  285. data/lib/kubes/compiler/strategy.rb +27 -0
  286. data/lib/kubes/compiler/strategy/base.rb +13 -0
  287. data/lib/kubes/compiler/strategy/dsl.rb +32 -0
  288. data/lib/kubes/compiler/strategy/erb.rb +42 -0
  289. data/lib/kubes/compiler/strategy/pass.rb +9 -0
  290. data/lib/kubes/compiler/strategy/result.rb +26 -0
  291. data/lib/kubes/compiler/util/normalize.rb +11 -0
  292. data/lib/kubes/compiler/util/yaml_dump.rb +23 -0
  293. data/lib/kubes/completer.rb +159 -0
  294. data/lib/kubes/completer/script.rb +6 -0
  295. data/lib/kubes/completer/script.sh +10 -0
  296. data/lib/kubes/config.rb +82 -0
  297. data/lib/kubes/core.rb +32 -0
  298. data/lib/kubes/docker/args/default.rb +39 -0
  299. data/lib/kubes/docker/base.rb +88 -0
  300. data/lib/kubes/docker/build.rb +33 -0
  301. data/lib/kubes/docker/push.rb +33 -0
  302. data/lib/kubes/hooks/builder.rb +41 -0
  303. data/lib/kubes/hooks/dsl.rb +19 -0
  304. data/lib/kubes/kubectl.rb +87 -0
  305. data/lib/kubes/kubectl/args/base.rb +12 -0
  306. data/lib/kubes/kubectl/args/kustomize.rb +28 -0
  307. data/lib/kubes/kubectl/args/standard.rb +32 -0
  308. data/lib/kubes/kubectl/batch.rb +49 -0
  309. data/lib/kubes/kubectl/decider.rb +15 -0
  310. data/lib/kubes/kubectl/kustomize.rb +13 -0
  311. data/lib/kubes/kubectl/ordering.rb +27 -0
  312. data/lib/kubes/logger.rb +26 -0
  313. data/lib/kubes/logging.rb +7 -0
  314. data/lib/kubes/util/consider.rb +9 -0
  315. data/lib/kubes/util/sh.rb +43 -0
  316. data/lib/kubes/util/sure.rb +17 -0
  317. data/lib/kubes/util/time.rb +14 -0
  318. data/lib/kubes/version.rb +1 -1
  319. data/lib/templates/base/.kubes/config.rb.tt +9 -0
  320. data/lib/templates/base/.kubes/config/env/dev.rb +6 -0
  321. data/lib/templates/base/.kubes/config/env/prod.rb +6 -0
  322. data/lib/templates/docker/Dockerfile +4 -0
  323. data/lib/templates/dsl/.kubes/resources/base/all.rb.tt +2 -0
  324. data/lib/templates/dsl/.kubes/resources/web/deployment.rb.tt +7 -0
  325. data/lib/templates/dsl/.kubes/resources/web/deployment/dev.rb +1 -0
  326. data/lib/templates/dsl/.kubes/resources/web/deployment/prod.rb +1 -0
  327. data/lib/templates/dsl/.kubes/resources/web/service.rb.tt +8 -0
  328. data/lib/templates/yaml/.kubes/resources/base/all.yaml.tt +2 -0
  329. data/lib/templates/yaml/.kubes/resources/base/deployment.yaml.tt +11 -0
  330. data/lib/templates/yaml/.kubes/resources/web/deployment.yaml.tt +24 -0
  331. data/lib/templates/yaml/.kubes/resources/web/deployment/dev.yaml +2 -0
  332. data/lib/templates/yaml/.kubes/resources/web/deployment/prod.yaml +2 -0
  333. data/lib/templates/yaml/.kubes/resources/web/service.yaml.tt +14 -0
  334. data/spec/cli_spec.rb +8 -0
  335. data/spec/fixtures/artifacts/demo-web/deployment.yaml +26 -0
  336. data/spec/fixtures/artifacts/demo-web/service.yaml +16 -0
  337. data/spec/fixtures/blocks/deployments.rb +9 -0
  338. data/spec/fixtures/decorators/deployment/configMap/envFrom.yaml +27 -0
  339. data/spec/fixtures/decorators/deployment/configMap/valueFrom.yaml +30 -0
  340. data/spec/fixtures/decorators/deployment/configMap/volumes.yaml +34 -0
  341. data/spec/fixtures/decorators/deployment/secret/envFrom.yaml +27 -0
  342. data/spec/fixtures/decorators/deployment/secret/valueFrom.yaml +30 -0
  343. data/spec/fixtures/decorators/deployment/secret/volumes.yaml +34 -0
  344. data/spec/fixtures/decorators/pod/configMap/envFrom.yaml +12 -0
  345. data/spec/fixtures/decorators/pod/configMap/valueFrom.yaml +16 -0
  346. data/spec/fixtures/decorators/pod/configMap/volumes.yaml +19 -0
  347. data/spec/fixtures/decorators/pod/secret/envFrom.yaml +12 -0
  348. data/spec/fixtures/decorators/pod/secret/valueFrom.yaml +16 -0
  349. data/spec/fixtures/decorators/pod/secret/volumes.yaml +19 -0
  350. data/spec/fixtures/deployments/minimum.rb +5 -0
  351. data/spec/fixtures/deployments/props.rb +7 -0
  352. data/spec/fixtures/deployments/setter/container.rb +11 -0
  353. data/spec/fixtures/deployments/setter/containers.rb +14 -0
  354. data/spec/fixtures/deployments/setter/metadata.rb +15 -0
  355. data/spec/fixtures/deployments/setter/sidecar.rb +12 -0
  356. data/spec/fixtures/deployments/setter/spec.rb +10 -0
  357. data/spec/fixtures/multiple-files/deployment-1.rb +4 -0
  358. data/spec/fixtures/multiple-files/deployment-2.rb +4 -0
  359. data/spec/fixtures/project/.gitignore +1 -0
  360. data/spec/fixtures/project/.kubes/resources/deployment.rb +32 -0
  361. data/spec/fixtures/project/.kubes/resources/foobar.rb +0 -0
  362. data/spec/fixtures/project/.kubes/resources/service.rb +3 -0
  363. data/spec/fixtures/services/minimum.rb +3 -0
  364. data/spec/fixtures/syntax/network_policy.rb +3 -0
  365. data/spec/fixtures/syntax/pod.rb +1 -0
  366. data/spec/kubes/compiler/decorator/resources/deployment_spec.rb +92 -0
  367. data/spec/kubes/compiler/decorator/resources/pod_spec.rb +92 -0
  368. data/spec/kubes/compiler/strategy/dsl_spec.rb +36 -0
  369. data/spec/kubes/compiler_spec.rb +10 -0
  370. data/spec/kubes/dsl/daemon_set.rb +11 -0
  371. data/spec/kubes/dsl/deployment_spec.rb +60 -0
  372. data/spec/kubes/dsl/network_policy_spec.rb +14 -0
  373. data/spec/kubes/dsl/pod_spec.rb +11 -0
  374. data/spec/kubes/dsl/service_spec.rb +12 -0
  375. data/spec/kubes/kubectl/batch_spec.rb +24 -0
  376. data/spec/spec_helper.rb +34 -0
  377. metadata +602 -22
  378. data/bin/console +0 -14
  379. data/bin/setup +0 -8
@@ -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,46 @@
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
+ strategy:
34
+ rollingUpdate:
35
+ maxSurge: 25
36
+ maxUnavailable: 25
37
+ type: RollingUpdate
38
+ template:
39
+ metadata:
40
+ labels:
41
+ app: demo
42
+ spec:
43
+ containers:
44
+ - name: demo-web
45
+ image: <%= built_image %>
46
+ ```
@@ -0,0 +1,131 @@
1
+ <section class="features" id="features">
2
+ <div class="container">
3
+ <div class="section-heading text-center">
4
+ <h2>The Code</h2>
5
+ <p class="text-muted">Easy to learn</p>
6
+ <hr>
7
+ </div>
8
+ <div class="row">
9
+ <div class="col-lg-12">
10
+ <div class="container-fluid">
11
+ <div class="row">
12
+ <div class="col-lg-6">
13
+ <h3>Commands</h3>
14
+ <div class="commands">
15
+ {% highlight sh %}
16
+ kubes init
17
+ kubes docker build
18
+ kubes docker push
19
+ kubes compile
20
+ kubes deploy
21
+ kubes apply
22
+ kubes get
23
+ kubes delete -y
24
+ {% endhighlight %}
25
+ </div>
26
+ </div>
27
+ <div class="col-lg-6">
28
+ <h3>Structure</h3>
29
+ <div class="commands">
30
+ {% highlight sh %}
31
+ .kubes
32
+ └── resources
33
+ ├── clock
34
+ │ └── deployment.yaml
35
+ ├── worker
36
+ │ └── deployment.yaml
37
+ └── web
38
+ ├── deployment.yaml
39
+ └── service.yaml
40
+ {% endhighlight %}
41
+ </div>
42
+ </div>
43
+ </div>
44
+ <div class="row">
45
+ <div class="col-lg-6">
46
+ <h3>Init Generator</h3>
47
+ <div class="commands">
48
+ {% highlight sh %}
49
+ $ kubes init --app demo --repo user/repo ⎈ (gke-dev/demo)
50
+ create .kubes/config.rb
51
+ create .kubes/config/env/dev.rb
52
+ create .kubes/config/env/prod.rb
53
+ create .kubes/resources/web/deployment.yaml
54
+ create .kubes/resources/web/deployment/dev.yaml
55
+ create .kubes/resources/web/deployment/prod.yaml
56
+ create .kubes/resources/web/service.yaml
57
+ Initialized .kubes folder
58
+ Updated .gitignore
59
+ $
60
+ {% endhighlight %}
61
+ </div>
62
+ </div>
63
+ <div class="col-lg-6">
64
+ <h3>Deploy</h3>
65
+ <div class="commands">
66
+ {% highlight sh %}
67
+ $ kubes deploy
68
+ => docker build -t user/demo-web:kubes-2020-06-19T00-20-28-1ef4db6 -f Dockerfile .
69
+ Successfully built 1c5b10652c36
70
+ => docker push user/demo-web:kubes-2020-06-19T00-20-28-1ef4db6
71
+ Compiled .kubes/resources files
72
+ Deploying kubes files
73
+ => kubectl apply -f .kubes/output/web/service.yaml
74
+ service/demo-web created
75
+ => kubectl apply -f .kubes/output/web/deployment.yaml
76
+ deployment.apps/demo-web created
77
+ => kubectl apply -f .kubes/output/web/ingress.yaml
78
+ ingress.networking.k8s.io/demo-web created
79
+ $
80
+ {% endhighlight %}
81
+ </div>
82
+ </div>
83
+ </div>
84
+ <div class="row">
85
+ <div class="col-lg-6">
86
+ <h3>YAML</h3>
87
+ <div class="commands">
88
+ {% highlight yaml %}
89
+ ---
90
+ apiVersion: apps/v1
91
+ kind: Deployment
92
+ metadata:
93
+ name: demo-web
94
+ labels:
95
+ app: demo
96
+ namespace: default
97
+ spec:
98
+ replicas: 2
99
+ selector:
100
+ matchLabels:
101
+ app: demo
102
+ template:
103
+ metadata:
104
+ labels:
105
+ app: demo
106
+ spec:
107
+ containers:
108
+ - name: demo-web
109
+ image: <%= built_image %>
110
+ {% endhighlight %}
111
+ </div>
112
+ </div>
113
+ <div class="col-lg-6">
114
+ <h3>DSL</h3>
115
+ <div class="commands">
116
+ {% highlight ruby %}
117
+ name "demo-web"
118
+ namespace "default"
119
+ labels(role: "web")
120
+
121
+ replicas 2
122
+ image built_image # IE: user/demo-web:kubes-2020-06-13T19-55-16-43afc6e
123
+ {% endhighlight %}
124
+ </div>
125
+ </div>
126
+ </div>
127
+ </div>
128
+ </div>
129
+ </div>
130
+ </div>
131
+ </section>
@@ -0,0 +1,25 @@
1
+ {% if page.sidebar == false %}
2
+
3
+ {{ content }}
4
+
5
+ {% else %}
6
+
7
+ <div class="d-flex" id="wrapper">
8
+ {% include sidebar.html %}
9
+ <div id="content">
10
+ <div class="menu-top-bar">
11
+ <div id="menu-toggle">
12
+ <div class="bar1"></div>
13
+ <div class="bar2"></div>
14
+ <div class="bar3"></div>
15
+ </div>
16
+ </div>
17
+
18
+ <div class="container-fluid">
19
+ <h1>{{ page.title }}</h1>
20
+ {{ content }}
21
+ </div>
22
+ </div>
23
+ </div>
24
+
25
+ {% endif %}
@@ -0,0 +1 @@
1
+ For a full list of the available methods, refer to the source itself [syntax/{{ include.name }}.rb](https://github.com/boltops-tools/kubes/blob/master/lib/kubes/compiler/dsl/syntax/{{ include.name }}.rb).
@@ -0,0 +1 @@
1
+ A suffix hash based on the contents of the {{ include.kind }} is automatically appended to the {{ include.kind }} name. {{ include.kind }}s used in Deployment and Pod containers fields that use the same name will also have the suffix automatically appended. This is done to trigger a rolling deployment. Here's an example an deployment output with the hashed name.
@@ -0,0 +1,8 @@
1
+ You can disable the auto hasher behavior with:
2
+
3
+ ```ruby
4
+ Kubes.configure do |config|
5
+ # ...
6
+ config.suffix_hash = false
7
+ end
8
+ ```
@@ -0,0 +1,12 @@
1
+ <section id="timeline">
2
+ <div class="container">
3
+ <div class="row">
4
+ <div class="col-lg-12 text-center">
5
+ <h2 class="section-heading">TODO</h2>
6
+ </div>
7
+ </div>
8
+ <div class="row justify-content-center">
9
+ <img src="/img/home/TODO.png" />
10
+ </div>
11
+ </div>
12
+ </section>