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,6 @@
1
+ ---
2
+ title: Installation
3
+ ---
4
+
5
+ {% include intro/install.md %}
6
+
@@ -0,0 +1,63 @@
1
+ ---
2
+ title: Ordering
3
+ ---
4
+
5
+ Generally, Kubes will apply resources in order so dependent resources are created first. If needed, you can completely customize the order: [Custom Ordering]({% link _docs/intro/ordering/custom.md %}).
6
+
7
+ ## Apply
8
+
9
+ Here's an example that shows it creating the service and deployment first, and then the ingress last.
10
+
11
+ $ kubes apply
12
+ Compiled .kubes/resources files
13
+ Deploying kubes files
14
+ => kubectl apply -f .kubes/output/web/service.yaml
15
+ service/demo-web created
16
+ => kubectl apply -f .kubes/output/web/deployment.yaml
17
+ deployment.apps/demo-web created
18
+ => kubectl apply -f .kubes/output/web/ingress.yaml
19
+ ingress.networking.k8s.io/demo-web created
20
+ $
21
+
22
+ ## Delete
23
+
24
+ Kubes will delete in the reverse order.
25
+
26
+ $ kubes delete -y
27
+ Compiled .kubes/resources files
28
+ => kubectl delete -f .kubes/output/web/ingress.yaml
29
+ ingress.networking.k8s.io "demo-web" deleted
30
+ => kubectl delete -f .kubes/output/web/deployment.yaml
31
+ deployment.apps "demo-web" deleted
32
+ => kubectl delete -f .kubes/output/web/service.yaml
33
+ service "demo-web" deleted
34
+ $
35
+
36
+ ## Shared Resources First
37
+
38
+ Resources in the `shared` folder will be applied first. Example:
39
+
40
+ .kubes
41
+ └── resources
42
+ ├── clock
43
+ │ └── deployment.yaml
44
+ ├── web
45
+ │ ├── deployment.yaml
46
+ │ └── service.yaml
47
+ └── shared
48
+ ├── config_map.yaml
49
+ └── secret.yaml
50
+
51
+ Results in:
52
+
53
+ $ kubes apply
54
+ => kubectl apply -f .kubes/output/shared/secret.yaml
55
+ secret/demo-secret created
56
+ => kubectl apply -f .kubes/output/clock/deployment.yaml
57
+ deployment.apps/demo-clock created
58
+ => kubectl apply -f .kubes/output/web/service.yaml
59
+ service/demo-web created
60
+ => kubectl apply -f .kubes/output/web/deployment.yaml
61
+ deployment.apps/demo-web created
62
+ $
63
+
@@ -0,0 +1,25 @@
1
+ ---
2
+ title: Custom Ordering
3
+ ---
4
+
5
+ You can override the ordering with the `kinds` and `roles` option under the `config.kubectl.order` key. It is fully configurable. Here's an example of overriding the default ordering.
6
+
7
+ .kubes/config.rb:
8
+
9
+ ```ruby
10
+ Kubes.configure do |config|
11
+ config.kubectl.order.roles = %w[
12
+ shared
13
+ web
14
+ worker
15
+ clock
16
+ ]
17
+ config.kubectl.order.kinds = [
18
+ "Namespace",
19
+ # ...
20
+ "Deployment",
21
+ ]
22
+ end
23
+ ```
24
+
25
+ Items not listed in the list are sorted at the end and in alphabetical order. Refer to the source [ordering.rb](https://github.com/boltops-tools/kubes/blob/master/lib/kubes/config.rb#L50) for the default ordering.
@@ -0,0 +1,43 @@
1
+ ---
2
+ title: Kubes Structure
3
+ ---
4
+
5
+ Here's what a .kubes folder structure can look like this:
6
+
7
+ .kubes
8
+ ├── config
9
+ │ ├── docker
10
+ │ │ ├── args.rb
11
+ │ │ └── hooks.rb
12
+ │ ├── env
13
+ │ │ ├── dev.rb
14
+ │ │ └── prod.rb
15
+ │ └── kubectl
16
+ │ ├── args.rb
17
+ │ └── hooks.rb
18
+ ├── config.rb
19
+ ├── output
20
+ ├── resources
21
+ │ ├── base
22
+ │ │ └── all.yaml
23
+ │ ├── clock
24
+ │ │ └── deployment.yaml
25
+ │ ├── shared
26
+ │ │ ├── config_map.yaml
27
+ │ │ └── secret.yaml
28
+ │ ├── web
29
+ │ │ ├── deployment.yaml
30
+ │ │ └── service.yaml
31
+ │ └── worker
32
+ │ └── deployment.yaml
33
+ └── state
34
+
35
+ Name | Description
36
+ --- | ---
37
+ base | The base folder is processed first and can be used to define common fields and resources. Learn more on the [Layering Docs]({% link _docs/layering.md %}).
38
+ config | The config folder can be used to configure behavior of Kubes. The [docker]({% link _docs/config/docker.md %}) config is used to customize the docker command. The [env]({% link _docs/config/env.md %}) config is used to override `config.rb` settings on a `KUBES_ENV` basis. The [kubectl]({% link _docs/config/kubectl.md %}) config is used to customize the kubectl command.
39
+ config.rb | The main thing to configure here is the repo to push the docker image to.
40
+ output | Where kubes builds and writes the Kubernetes YAML to.
41
+ resources | Where you define your Kubernetes resources.
42
+ shared | The shared folder is where you can put shared resources. This folder gets applied first. More info: [Ordering]({% link _docs/intro/ordering.md %}).
43
+ state | Temporary state info that stores the built Docker image name.
@@ -0,0 +1,54 @@
1
+ ---
2
+ title: Kustomize Support
3
+ ---
4
+
5
+ Kubes supports Kustomize. So if you're a kustomization user, you can use it with Kubes.
6
+
7
+ ## Structure
8
+
9
+ If there are any kustomization.yaml files in your `.kubes/resources` folder, Kubes kustomize mode is automatically enabled. Example structure:
10
+
11
+ .kubes/resources
12
+ ├── base
13
+ │ ├── deployment.yaml
14
+ │ ├── kustomization.yaml
15
+ │ └── service.yaml
16
+ └── overlays
17
+ ├── dev
18
+ │ └── kustomization.yaml
19
+ └── prod
20
+ └── kustomization.yaml
21
+
22
+ ## Deploy
23
+
24
+ In Kustomize mode, Kubes will call `kubectl apply -k`. Here's an example:
25
+
26
+ kubes deploy overlays/dev
27
+
28
+ Will call:
29
+
30
+ kubectl apply -k .kubes/output/overlays/dev
31
+
32
+ With Kubes kustomize mode, an argument to the kubes commands are generally required. The argument is the folder within the `.kubes/resources` folder.
33
+
34
+ ## Environments
35
+
36
+ To deploy different kustomize environments using different overlays:
37
+
38
+ kubes deploy overlays/prod
39
+
40
+ This results in:
41
+
42
+ kubectl apply -k .kubes/output/overlays/prod
43
+
44
+ ## Get
45
+
46
+ To check created resources.
47
+
48
+ kubes get overlays/dev
49
+
50
+ ## Compile
51
+
52
+ With kustomize mode, all files in `.kubes/resources` are compiled and written to `.kubes/output`.
53
+
54
+ Also, no Kubes layering is performed, as kustomization overlays should be used instead.
@@ -0,0 +1,8 @@
1
+ ---
2
+ title: Layering
3
+ ---
4
+
5
+ Kubes supports layering files together so you can use the same Kubernetes files to build multiple environments like dev and prod.
6
+
7
+ * [YAML Layering]({% link _docs/layering/yaml.md %})
8
+ * [DSL Layering]({% link _docs/layering/dsl.md %})
@@ -0,0 +1,5 @@
1
+ ---
2
+ title: DSL Layering
3
+ ---
4
+
5
+ {% include layering/layers.md ext="rb" %}
@@ -0,0 +1,96 @@
1
+ ---
2
+ title: DSL Merge Behavior
3
+ ---
4
+
5
+ Generally, the merge should behave as expected. For example, map or Hash fields are merged together from multiple layers. Strings are simply replaced.
6
+
7
+ ## Hash Example
8
+
9
+ .kubes/resources/base/all.rb
10
+
11
+ ```ruby
12
+ labels(app: "demo")
13
+ # ...
14
+ ```
15
+
16
+ .kubes/resources/base/all/env.rb
17
+
18
+ ```ruby
19
+ labels(env: Kubes.env)
20
+ # ...
21
+ ```
22
+
23
+ .kubes/resources/web/deployment.rb
24
+
25
+ ```ruby
26
+ labels(role: "web")
27
+ # ...
28
+ ```
29
+
30
+ Layering results in:
31
+
32
+ .kubes/output/web/deployment.yaml
33
+
34
+ ```yaml
35
+ metadata:
36
+ labels:
37
+ app: demo
38
+ env: dev
39
+ role: web
40
+ # ...
41
+ ```
42
+
43
+ ## Hash Merge Behavior Override
44
+
45
+ You can override the merge behavior with the `_mode` key.
46
+
47
+ .kubes/resources/web/deployment.rb
48
+
49
+ ```ruby
50
+ labels(role: "web", _mode: "reset")
51
+ # ...
52
+ ```
53
+
54
+ This will completely reset the labels and result in:
55
+
56
+ ```yaml
57
+ metadata:
58
+ labels:
59
+ role: web
60
+ # ...
61
+ ```
62
+
63
+ ## String Example
64
+
65
+ The merging of simple String is a straightforward replacement.
66
+
67
+ .kubes/resources/web/deployment.rb
68
+
69
+ ```ruby
70
+ image built_image # IE: user/demo:kubes-2020-06-13T19-55-16-43afc6e
71
+ # ...
72
+ ```
73
+
74
+ .kubes/resources/web/deployment/prod.rb
75
+
76
+ ```ruby
77
+ image "nginx:prod-v1"
78
+ # ...
79
+ ```
80
+
81
+ Results in:
82
+
83
+ .kubes/output/web/deployment.yaml
84
+
85
+ ```yaml
86
+ spec:
87
+ # ...
88
+ template:
89
+ spec:
90
+ containers:
91
+ - image: nginx:prod-v1
92
+ name: demo-web
93
+ # ...
94
+ ```
95
+
96
+ {% include dsl/methods.md name="backend_config" %}
@@ -0,0 +1,5 @@
1
+ ---
2
+ title: YAML Layering
3
+ ---
4
+
5
+ {% include layering/layers.md ext="yaml" %}
@@ -0,0 +1,5 @@
1
+ ---
2
+ title: Getting Started with DSL
3
+ ---
4
+
5
+ {% include learn/start.md type="DSL" %}
@@ -0,0 +1,16 @@
1
+ ---
2
+ title: Change Project
3
+ ---
4
+
5
+ Let's make a simple change. We'll adjust the number of replicas to 3. We do this in `deployment/dev.rb`.
6
+
7
+ .kubes/resources/web/deployment/dev.rb
8
+
9
+ ```ruby
10
+ ---
11
+ replicas 3 # <= CHANGED
12
+ ```
13
+
14
+ This demonstrates Kubes [Layering support]({% link _docs/layering.md %}). We can make changes to only the `KUBES_DEV` environment.
15
+
16
+ Next, we'll deploy this update.
@@ -0,0 +1,5 @@
1
+ ---
2
+ title: Cluster Setup
3
+ ---
4
+
5
+ {% include learn/cluster.md %}
@@ -0,0 +1,30 @@
1
+ ---
2
+ title: Delete App
3
+ ---
4
+
5
+ Let's now delete the app and clean up:
6
+
7
+ kubes delete
8
+
9
+ You will be prompted to confirm before deletion. Here's out the output looks like:
10
+
11
+ $ kubes delete
12
+ This will delete resources. Are you sure? (y/N) y
13
+ Compiled .kubes/resources files
14
+ => kubectl delete -f .kubes/output/web/service.yaml
15
+ service "demo-web" deleted
16
+ => kubectl delete -f .kubes/output/web/deployment.yaml
17
+ deployment.apps "demo-web" deleted
18
+ $
19
+
20
+ Let's double-check that the resources have been deleted:
21
+
22
+ $ kubectl get all
23
+ No resources found.
24
+ $
25
+
26
+ Tip: If you want to delete without the prompt, you can use the `-y` option:
27
+
28
+ kubes delete -y
29
+
30
+ Next, we'll look at some next steps.
@@ -0,0 +1,61 @@
1
+ ---
2
+ title: Deploy App
3
+ ---
4
+
5
+ Let's deploy
6
+
7
+ kubes deploy
8
+
9
+ You'll see output like this:
10
+
11
+ $ kubes deploy
12
+ => docker build -t 111111111111.dkr.ecr.us-west-2.amazonaws.com/demo:kubes-2020-06-19T04-19-13 -f Dockerfile .
13
+ => docker push 111111111111.dkr.ecr.us-west-2.amazonaws.com/demo:kubes-2020-06-19T04-19-13
14
+ Pushed 111111111111.dkr.ecr.us-west-2.amazonaws.com/demo:kubes-2020-06-19T04-19-13 docker image.
15
+ Docker push took 15s.
16
+ Compiled .kubes/resources files
17
+ => kubectl apply -f .kubes/output/web/service.yaml
18
+ service/demo-web created
19
+ => kubectl apply -f .kubes/output/web/deployment.yaml
20
+ deployment.apps/demo-web created
21
+ $
22
+
23
+ What did Kubes do?
24
+
25
+ {% include kubes-steps.md %}
26
+
27
+ ## Check Resources
28
+
29
+ Let's check for the created resource on the Kubernetes cluster:
30
+
31
+ kubes get
32
+
33
+ Example output:
34
+
35
+ $ kubes get
36
+ => kubectl get --recursive -f .kubes/output
37
+ NAME READY UP-TO-DATE AVAILABLE AGE
38
+ deployment.apps/demo-web 1/1 1 1 10s
39
+
40
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
41
+ service/demo-web ClusterIP 172.16.173.96 <none> 80/TCP 11s
42
+
43
+ Let's also use the `kubectl get` command:
44
+
45
+ $ kubectl get all
46
+ NAME READY STATUS RESTARTS AGE
47
+ pod/demo-web-6f867f469f-5qhn6 1/1 Running 0 16s
48
+
49
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
50
+ service/demo-web ClusterIP 172.16.173.96 <none> 80/TCP 17s
51
+
52
+ NAME READY UP-TO-DATE AVAILABLE AGE
53
+ deployment.apps/demo-web 1/1 1 1 16s
54
+
55
+ NAME DESIRED CURRENT READY AGE
56
+ replicaset.apps/demo-web-6f867f469f 1 1 1 16s
57
+ $
58
+
59
+ We can see that the deployment and service got created.
60
+
61
+ Next, we'll make a change.
@@ -0,0 +1,5 @@
1
+ ---
2
+ title: Install Kubes
3
+ ---
4
+
5
+ {% include intro/install.md %}