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,87 @@
1
+ ---
2
+ title: Secret
3
+ categories: dsl
4
+ ---
5
+
6
+ ## Example
7
+
8
+ Here's an example of a Secret.
9
+
10
+ .kubes/resources/shared/secret.rb
11
+
12
+ ```ruby
13
+ name "demo-secret"
14
+ data(
15
+ username: base64("user"),
16
+ password: base64("pass"),
17
+ )
18
+ ```
19
+
20
+ Produces:
21
+
22
+ .kubes/output/shared/service.yaml
23
+
24
+ ```yaml
25
+ apiVersion: v1
26
+ kind: Secret
27
+ metadata:
28
+ name: demo-secret-cfbd534f91
29
+ labels:
30
+ app: demo
31
+ namespace: default
32
+ data:
33
+ username: dXNlcg==
34
+ password: cGFzcw==
35
+ ```
36
+
37
+ ## Suffix Hash
38
+
39
+ {% include dsl/rolling_deployment.md kind="Secret" %}
40
+
41
+ .kubes/output/web/deployment.yaml:
42
+
43
+ ```yaml
44
+ # ..
45
+ spec:
46
+ template:
47
+ spec:
48
+ containers:
49
+ - name: demo-shared
50
+ image: nginx
51
+ envFrom:
52
+ - secretRef:
53
+ name: demo-secret-cfbd534f91
54
+ ```
55
+
56
+ {% include dsl/suffix_hash.md %}
57
+
58
+ ## Files Helper
59
+
60
+ You can use a `files` helper to load secrets values from one or more files.
61
+
62
+
63
+ .kubes/resources/shared/secret.rb
64
+
65
+ ```ruby
66
+ name "demo-secret"
67
+ files("files/secrets.txt")
68
+ ```
69
+
70
+ The `files/secrets.txt` should be in the same folder as the `secret.rb` definition. Example:
71
+
72
+ .kubes/resources/shared/files/secret.txt
73
+
74
+ SECRET1=value1
75
+ SECRET2=value2
76
+
77
+ You do not have to worry about base64 encoding the values. Kubes automatically base64 encodes the values.
78
+
79
+ ## DSL Methods
80
+
81
+ Here's a list of more common methods:
82
+
83
+ * data
84
+ * stringData
85
+ * type
86
+
87
+ {% include dsl/methods.md name="secret" %}
@@ -0,0 +1,60 @@
1
+ ---
2
+ title: Service
3
+ categories: dsl
4
+ ---
5
+
6
+ ## Example
7
+
8
+ Here's an example of a Service.
9
+
10
+ .kubes/resources/web/service.rb
11
+
12
+ ```ruby
13
+ name "demo-web"
14
+ labels(role: "web")
15
+ namespace "default"
16
+
17
+ # Optional since these are the defaults
18
+ # port 80
19
+ # targetPort 80
20
+ #
21
+ # type "NodePort"
22
+ ```
23
+
24
+ Produces:
25
+
26
+ .kubes/output/web/service.yaml
27
+
28
+ ```yaml
29
+ ---
30
+ apiVersion: v1
31
+ kind: Service
32
+ metadata:
33
+ name: demo-web
34
+ labels:
35
+ app: demo
36
+ namespace: demo
37
+ spec:
38
+ ports:
39
+ - port: 80
40
+ protocol: TCP
41
+ targetPort: 8080
42
+ selector:
43
+ app: demo
44
+ type: NodePort
45
+ ```
46
+
47
+ ## DSL Methods
48
+
49
+ Here's a list of more common methods:
50
+
51
+ * nodePort
52
+ * port
53
+ * portName: Note this field doesn't match the original field name. It's more qualified.
54
+ * ports
55
+ * protocol
56
+ * selector
57
+ * targetPort
58
+ * type
59
+
60
+ {% include dsl/methods.md name="service" %}
@@ -0,0 +1,37 @@
1
+ ---
2
+ title: ServiceAccount
3
+ categories: dsl
4
+ ---
5
+
6
+ ## Example
7
+
8
+ Here's an example of a ServiceAccount.
9
+
10
+ .kubes/resources/shared/service_account.rb
11
+
12
+ ```ruby
13
+ name "demo"
14
+ ```
15
+
16
+ Produces:
17
+
18
+ .kubes/output/shared/service_account.yaml
19
+
20
+ ```yaml
21
+ apiVersion: v1
22
+ kind: ServiceAccount
23
+ metadata:
24
+ name: demo
25
+ ```
26
+
27
+ ## DSL Methods
28
+
29
+ Here's a list of more common methods:
30
+
31
+ Top-level methods:
32
+
33
+ * automountServiceAccountToken
34
+ * imagePullSecrets
35
+ * secrets
36
+
37
+ {% include dsl/methods.md name="service_account" %}
@@ -0,0 +1,23 @@
1
+ ---
2
+ title: Extra Environments
3
+ ---
4
+
5
+ Kubes adds the concept of extra environments. Let say, you have a demo-web app with a deployment and service.
6
+
7
+ .kubes/resources
8
+ └── web
9
+ ├── deployment.rb
10
+ └── service.rb
11
+
12
+ You can create additional environments using the same resource files with a few minor changes.
13
+
14
+ * [DSL Example]({% link _docs/extra-env/dsl.md %})
15
+ * [YAML Example]({% link _docs/extra-env/yaml.md %})
16
+
17
+ ## Deploy
18
+
19
+ Then to create an additional environment, it's simple:
20
+
21
+ KUBES_EXTRA=2 kubes deploy
22
+ KUBES_EXTRA=3 kubes deploy
23
+ # etc
@@ -0,0 +1,86 @@
1
+ ---
2
+ title: DSL Example
3
+ ---
4
+
5
+ Kubes provides helper methods to make creating extra environments easy: `with_extra`. We'll create extra environments under different namespaces.
6
+
7
+ Here's how you achieve extra environments with the DSL form:
8
+
9
+ .kubes/resources/web/deployment.rb
10
+
11
+ ```ruby
12
+ name "demo-web"
13
+ labels(role: "web")
14
+ namespace with_extra("default")
15
+
16
+ replicas 1
17
+ image built_image # IE: user/demo-web:kubes-2020-06-13T19-55-16-43afc6e
18
+ ```
19
+
20
+ .kubes/resources/web/service.rb
21
+
22
+ ```ruby
23
+ name "demo-web"
24
+ labels(role: "web")
25
+ namespace with_extra("default")
26
+ ```
27
+
28
+ The `name` helper accounts for `KUBES_EXTRA` and appends the value.
29
+
30
+ ## Deployment
31
+
32
+ Then to create an additional environment, it's simple:
33
+
34
+ kubectl create ns default-2
35
+ KUBES_EXTRA=2 kubes deploy
36
+
37
+ To check on the resources:
38
+
39
+ kubectl get all -n default-2
40
+
41
+ ## Using Different Name Instead
42
+
43
+ The example on this page uses the `with_extra` helper to create the deployment and service in another namespace. Another approach is to use the same namespace but different names based on `KUBES_EXTRA`. We also used the `extra` helper here, which is the `KUBES_EXTRA` value. Examples:
44
+
45
+ .kubes/resources/web/deployment.rb
46
+
47
+ ```ruby
48
+ name with_extra("demo-web")
49
+ labels(app: name, extra: extra)
50
+ namespace "default"
51
+
52
+ replicas 1
53
+ image built_image # IE: user/demo-web:kubes-2020-06-13T19-55-16-43afc6e
54
+ ```
55
+
56
+ .kubes/resources/web/service.rb
57
+
58
+ ```ruby
59
+ name with_extra("demo-web")
60
+ labels(app: name, extra: extra)
61
+ namespace "default"
62
+ ```
63
+
64
+ Adding label with the `extra` key is optional, but helps with filtering the resources.
65
+
66
+ kubectl get all -l extra=2
67
+ kubectl get all -l extra=3
68
+
69
+ Example:
70
+
71
+ $ kubectl get all -l extra=2
72
+ NAME READY STATUS RESTARTS AGE
73
+ pod/demo-web-2-5f8b8cbcdc-dmbjj 1/1 Running 0 78s
74
+ pod/demo-web-2-5f8b8cbcdc-kg8hf 1/1 Running 0 78s
75
+
76
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
77
+ service/demo-web-2 NodePort 172.16.158.166 <none> 80:30148/TCP 78s
78
+
79
+ NAME READY UP-TO-DATE AVAILABLE AGE
80
+ deployment.apps/demo-web-2 2/2 2 2 78s
81
+
82
+ NAME DESIRED CURRENT READY AGE
83
+ replicaset.apps/demo-web-2-5f8b8cbcdc 2 2 2 79s
84
+ $
85
+
86
+ The `extra` and `with_extra` helper methods provide flexibility to create these extra environments with either approach.
@@ -0,0 +1,67 @@
1
+ ---
2
+ title: YAML Example
3
+ ---
4
+
5
+ Kubes provides helper methods to make creating extra environments easy: `with_extra`. We'll create extra environments under different namespaces.
6
+
7
+ Here's how you achieve extra environments with the YAML form:
8
+
9
+ .kubes/resources/web/deployment.rb
10
+
11
+ ```ruby
12
+ ---
13
+ apiVersion: apps/v1
14
+ kind: Deployment
15
+ metadata:
16
+ name: demo-web
17
+ labels:
18
+ app: demo
19
+ namespace: <%= with_extra("default") %>
20
+ spec:
21
+ replicas: 2
22
+ selector:
23
+ matchLabels:
24
+ app: demo
25
+ template:
26
+ metadata:
27
+ labels:
28
+ app: demo
29
+ spec:
30
+ containers:
31
+ - image: <%= built_image %>
32
+ name: demo-web
33
+ ```
34
+
35
+ .kubes/resources/web/service.rb
36
+
37
+ ```ruby
38
+ ---
39
+ apiVersion: v1
40
+ kind: Service
41
+ metadata:
42
+ name: demo-web
43
+ labels:
44
+ app: demo
45
+ namespace: <%= with_extra("default") %>
46
+ spec:
47
+ ports:
48
+ - port: 80
49
+ protocol: TCP
50
+ targetPort: 8080
51
+ selector:
52
+ app: demo
53
+ type: NodePort
54
+ ```
55
+
56
+ It's important to use the `with_extra` helper to set the namesapce. The helper accounts for `KUBES_EXTRA` and appends the value.
57
+
58
+ ## Deployment
59
+
60
+ Then to create an additional environment, it's simple:
61
+
62
+ kubectl create ns default-2
63
+ KUBES_EXTRA=2 kubes deploy
64
+
65
+ To check on the resources:
66
+
67
+ kubectl get all -n default-2
@@ -0,0 +1,18 @@
1
+ ---
2
+ title: Helpers
3
+ ---
4
+
5
+ Kubes provides some helper methods to help write Kubernetes YAML files. Here's a list of the helper methods. These are available whether you write your resources in YAML or DSL.
6
+
7
+ Helper | Description
8
+ --- | ---
9
+ built_image | Method refers to the latest Docker image built by Kubes. This spares you from having to update the image manually in the deployment resource.
10
+ with_extra | Appends the `KUBES_ENV` value to a string if it's set. It's covered in the [Extra Env Docs]({% link _docs/extra-env.md %}).
11
+ extra | The `KUBES_ENV` value.
12
+
13
+ Here's also the source code with the helpers: [helpers.rb](https://github.com/boltops-tools/kubes/blob/master/lib/kubes/compiler/shared/helpers.rb).
14
+
15
+
16
+ ## DSL Specific Methods
17
+
18
+ Each DSL resource has it's own specific methods. Refer to the [DSL Docs]({% link _docs/dsl.md %}) for their methods.
@@ -0,0 +1,15 @@
1
+ ---
2
+ title: What is Kubes?
3
+ ---
4
+
5
+ {% include reference.md %}
6
+
7
+ ## Features:
8
+
9
+ * Automation: [Builds the Docker image]({% link _docs/config/docker.md %}) and updates the compiled YAML files
10
+ * Syntactic Sugar: Use an [ERB/YAML]({% link _docs/yaml.md %}) or a [DSL]({% link _docs/dsl.md %}) to write your Kubernetes YAML files. You can use a mix of DSL and YAML definitions in the `.kubes/resources` folder.
11
+ * Layering: Use the same Kubernetes YAML to build multiple environments like dev and prod with [layering]({% link _docs/layering.md %}).
12
+ * CLI Customizations: You can customize the [cli args]({% link _docs/config/kubectl.md %}). You can also run hooks before and after kubectl commands.
13
+ * Automated Suffix Hashes: Automatically appends a suffix hash to ConfigMap and Secret resources. More details in [ConfigMap]({% link _docs/dsl/resources/config_map.md %}) and [Secret]({% link _docs/dsl/resources/secret.md %}) docs.
14
+ * Kustomize Support: If you’re a kustomization user, you can use it with Kubes. More details in [Kustomize Support Docs]({% link _docs/kustomize.md %}).
15
+ * Auto Context Switching: Map dev to a specific kubectl context and prod to another kubectl context and Kubes can switch them automatically so you won't have to remember. More details in [Auto Context Docs]({% link _docs/auto-context.md %}).
@@ -0,0 +1,37 @@
1
+ ---
2
+ title: Kubes Concepts
3
+ ---
4
+
5
+ ## Resources Files
6
+
7
+ The `.kubes/resources` where you organized Kubernetes resources. Different subfolders within the resources folder represent your app. Example:
8
+
9
+ .kubes
10
+ └── resources
11
+ ├── clock
12
+ │ └── deployment.yaml
13
+ ├── worker
14
+ │ └── deployment.yaml
15
+ └── web
16
+ ├── deployment.yaml
17
+ └── service.yaml
18
+
19
+ Each folder contains your Kubernetes deployment definition, either in [YAML]({% link _docs/yaml.md %}) or [DSL]({% link _docs/dsl.md %}) form. Both can be used together.
20
+
21
+ ## Conventions Over Configuration
22
+
23
+ Kubes uses Conventions Over Configuration structure to remove boilerplate setup and mental overhead.
24
+
25
+ You can deploy just the demo-web app
26
+
27
+ kubes deploy web
28
+
29
+ Or you can deploy all 3 with:
30
+
31
+ kubes deploy
32
+
33
+ The deploy command automatically builds the Docker image and replaces the image in the YAML file with the latest built image.
34
+
35
+ ## Layering
36
+
37
+ Kubes supports layering files together so you can use the same Kubernetes files to build multiple environments like dev and prod. More details in the [Layering Docs]({% link _docs/layering.md %}).
@@ -0,0 +1,29 @@
1
+ ---
2
+ title: How Kubes Works
3
+ ---
4
+
5
+ Kubes is pretty straightforward. Kubes first builds the Docker image. Then it compiles Kubernetes YAML files. Lastly, it merely calls out to `kubectl`.
6
+
7
+ In fact, you can use Kubes to build the files first, and then run `kubectl` directly. Example:
8
+
9
+ kubes docker build
10
+ kubes docker push
11
+ kubes compile # compiles the .kubes/resources files to .kubes/output
12
+
13
+ Now, use `kubectl` directly. This will apply all the files:
14
+
15
+ kubectl apply --recursive -f .kubes/output
16
+
17
+ You can also selectively apply specific files:
18
+
19
+ kubectl apply -f .kubes/output/web/deployment.yaml
20
+ kubectl apply -f .kubes/output/web/service.yaml
21
+
22
+ You can also apply with kubes. This will compile the files automatically also.
23
+
24
+ kubes apply
25
+
26
+ The deploy command, does all 3 steps: builds the docker image, compiles the `.kubes/resources` files, and runs kubectl apply.
27
+
28
+ kubes deploy
29
+