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,33 @@
1
+ ---
2
+ title: New Project
3
+ ---
4
+
5
+ If you already a project with an existing Dockerfile, you can use that. If you do not, kubes generates a starter Dockerfile that runs nginx. For this tutorial, we'll start with an empty folder.
6
+
7
+ mkdir demo
8
+ cd demo
9
+
10
+ For this tutorial, we'll use an ECR repo, though any repo will work.
11
+
12
+ Let's generate a starter project:
13
+
14
+ $ REPO=$(aws ecr describe-repositories --repository-name demo | jq -r '.repositories[].repositoryUri')
15
+ $ kubes init --app demo --repo $REPO --type dsl
16
+ create .kubes/config.rb
17
+ create .kubes/config/env/dev.rb
18
+ create .kubes/config/env/prod.rb
19
+ create .kubes/resources/base/all.rb
20
+ create .kubes/resources/web/deployment.rb
21
+ create .kubes/resources/web/deployment/dev.rb
22
+ create .kubes/resources/web/deployment/prod.rb
23
+ create .kubes/resources/web/service.rb
24
+ Initialized .kubes folder
25
+ $
26
+
27
+ The `--type=dsl` option tells Kubes to generate DSL format files. To learn more about the generated structure, here are the [Structure Docs]({% link _docs/intro/structure.md %}).
28
+
29
+ Let's explore some of the generated files.
30
+
31
+ {% include learn/review.md %}
32
+
33
+ Next, we'll review the resources.
@@ -0,0 +1,5 @@
1
+ ---
2
+ title: Next Steps
3
+ ---
4
+
5
+ {% include learn/next-steps.md %}
@@ -0,0 +1,52 @@
1
+ ---
2
+ title: Review Project
3
+ ---
4
+
5
+ Let's review the resources.
6
+
7
+ ## Deployment Resource
8
+
9
+ The `web/deployment.rb` file is a little more interesting:
10
+
11
+ .kubes/resources/web/deployment.rb
12
+
13
+ ```ruby
14
+ name "demo-web"
15
+ labels(role: "web")
16
+ namespace "default"
17
+
18
+ replicas 1
19
+ image built_image # IE: user/demo:kubes-2020-06-13T19-55-16-43afc6e
20
+ ```
21
+
22
+ The DSL form is more concise than the YAML form. Also, notice the use of the `built_image` helper. The `built_image` is a kubes helper method that refers to the latest Docker image built. This spares you from updating the image manually.
23
+
24
+ ## Base Resource
25
+
26
+ Also let's check the files in the base folder.
27
+
28
+ .kubes/resources/base/all.rb
29
+
30
+ ```ruby
31
+ namespace "default"
32
+ labels(app: "demo")
33
+ ```
34
+
35
+ The base folder files are processed first as a part of [Kubes Layering]({% link _docs/layering.md %}). This allows you to define common fields and keep your code DRY.
36
+
37
+ Next, let's look at `service.rb`
38
+
39
+ .kubes/resources/web/service.rb
40
+
41
+ ```ruby
42
+ name "demo-web"
43
+ labels(role: "web")
44
+
45
+ # Optional since default port is 80
46
+ # port 80
47
+ # targetPort 80
48
+ ```
49
+
50
+ Service is also pretty simple. Though the DSL may seem simple, it allows you to fully control the generated YAML. You can learn more about the DSL form at: [Deployment DSL Docs]({% link _docs/dsl/resources/deployment.md %})
51
+
52
+ Next, we'll deploy the app.
@@ -0,0 +1,53 @@
1
+ ---
2
+ title: Update App
3
+ ---
4
+
5
+ Let's update the app. In this case, we don't need to update the Docker image, so we'll use the `apply` command, which does not run the Docker build phase.
6
+
7
+ kubes apply
8
+
9
+ Here's what the output looks like:
10
+
11
+ $ kubes apply
12
+ Compiled .kubes/resources files
13
+ => kubectl apply -f .kubes/output/web/service.yaml
14
+ service/demo-web unchanged
15
+ => kubectl apply -f .kubes/output/web/deployment.yaml
16
+ deployment.apps/demo-web configured
17
+ $
18
+
19
+ The change has been deployed. Let's double check it:
20
+
21
+ kubes get
22
+
23
+ Example output:
24
+
25
+ $ kubes get
26
+ => kubectl get --recursive -f .kubes/output
27
+ NAME READY UP-TO-DATE AVAILABLE AGE
28
+ deployment.apps/demo-web 3/3 3 3 3m34s
29
+
30
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
31
+ service/demo-web ClusterIP 172.16.173.96 <none> 80/TCP 3m35s
32
+
33
+ Let's also use the `kubectl get` command:
34
+
35
+ $ kubectl get all
36
+ NAME READY STATUS RESTARTS AGE
37
+ pod/demo-web-6f867f469f-5qhn6 1/1 Running 0 3m37s
38
+ pod/demo-web-6f867f469f-cqmpd 1/1 Running 0 7s
39
+ pod/demo-web-6f867f469f-slnsw 1/1 Running 0 108s
40
+
41
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
42
+ service/demo-web ClusterIP 172.16.173.96 <none> 80/TCP 3m38s
43
+
44
+ NAME READY UP-TO-DATE AVAILABLE AGE
45
+ deployment.apps/demo-web 3/3 3 3 3m37s
46
+
47
+ NAME DESIRED CURRENT READY AGE
48
+ replicaset.apps/demo-web-6f867f469f 3 3 3 3m37s
49
+ $
50
+
51
+ We can see that there are now 3 replicas running.
52
+
53
+ Next, we'll delete the app.
@@ -0,0 +1,5 @@
1
+ ---
2
+ title: Getting Started with YAML
3
+ ---
4
+
5
+ {% include learn/start.md type="YAML" %}
@@ -0,0 +1,17 @@
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.yaml`.
6
+
7
+ .kubes/resources/web/deployment/dev.yaml
8
+
9
+ ```yaml
10
+ ---
11
+ spec:
12
+ replicas: 3 # <= CHANGED
13
+ ```
14
+
15
+ This demonstrates Kubes [Layering support]({% link _docs/layering.md %}). We can make changes to only the `KUBES_DEV` environment.
16
+
17
+ 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,62 @@
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 7s
39
+
40
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
41
+ service/demo-web ClusterIP 172.16.201.77 <none> 80/TCP 7s
42
+ $
43
+
44
+ Let's also use the `kubectl get` command:
45
+
46
+ $ kubectl get all
47
+ NAME READY STATUS RESTARTS AGE
48
+ pod/demo-web-5cb4f9fb77-lgczj 1/1 Running 0 3m48s
49
+
50
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
51
+ service/demo-web ClusterIP 172.16.201.77 <none> 80/TCP 3m49s
52
+
53
+ NAME READY UP-TO-DATE AVAILABLE AGE
54
+ deployment.apps/demo-web 1/1 1 1 3m49s
55
+
56
+ NAME DESIRED CURRENT READY AGE
57
+ replicaset.apps/demo-web-5cb4f9fb77 1 1 1 3m49s
58
+ $
59
+
60
+ We can see that the deployment and service got created.
61
+
62
+ Next, we'll make a change.
@@ -0,0 +1,5 @@
1
+ ---
2
+ title: Install Kubes
3
+ ---
4
+
5
+ {% include intro/install.md %}
@@ -0,0 +1,36 @@
1
+ ---
2
+ title: New Project
3
+ ---
4
+
5
+ If you already a project with an existing Dockerfile, you can use that. If you do not, kubes generates a starter Dockerfile that runs nginx. For this tutorial, we'll start with an empty folder.
6
+
7
+ mkdir demo
8
+ cd demo
9
+
10
+ For this tutorial, we'll use an ECR repo, though any repo will work.
11
+
12
+ Let's generate a starter project:
13
+
14
+ $ REPO=$(aws ecr describe-repositories --repository-name demo | jq -r '.repositories[].repositoryUri')
15
+ $ kubes init --app demo --repo $REPO
16
+ create Dockerfile
17
+ create .kubes/config.rb
18
+ create .kubes/config/env/dev.rb
19
+ create .kubes/config/env/prod.rb
20
+ create .kubes/resources/base/all.yaml
21
+ create .kubes/resources/base/deployment.yaml
22
+ create .kubes/resources/web/deployment.yaml
23
+ create .kubes/resources/web/deployment/dev.yaml
24
+ create .kubes/resources/web/deployment/prod.yaml
25
+ create .kubes/resources/web/service.yaml
26
+ Initialized .kubes folder
27
+ Updated .gitignore
28
+ $
29
+
30
+ To learn more about the generated structure, here are the [Structure Docs]({% link _docs/intro/structure.md %}).
31
+
32
+ Let's explore some of the generated files.
33
+
34
+ {% include learn/review.md %}
35
+
36
+ Next, we'll review the resources.
@@ -0,0 +1,5 @@
1
+ ---
2
+ title: Next Steps
3
+ ---
4
+
5
+ {% include learn/next-steps.md %}
@@ -0,0 +1,97 @@
1
+ ---
2
+ title: Review Project
3
+ ---
4
+
5
+ Let's review the resources.
6
+
7
+ ## Deployment Resource
8
+
9
+ The `web/deployment.yaml` file is a little more interesting:
10
+
11
+ .kubes/resources/web/deployment.yaml
12
+
13
+ ```yaml
14
+ apiVersion: apps/v1
15
+ kind: Deployment
16
+ metadata:
17
+ name: demo-web
18
+ labels:
19
+ role: web
20
+ spec:
21
+ replicas: 1
22
+ selector:
23
+ matchLabels:
24
+ role: web
25
+ strategy:
26
+ rollingUpdate:
27
+ maxSurge: 25
28
+ maxUnavailable: 25
29
+ type: RollingUpdate
30
+ template:
31
+ metadata:
32
+ labels:
33
+ role: web
34
+ spec:
35
+ containers:
36
+ - name: demo
37
+ image: <%= built_image %>
38
+ ```
39
+
40
+ Notice the `<%= built_image %>`. Kubes processes the YAML files with ERB templating and replaces these tags. The `built_image` is a kubes helper method that refers to the latest Docker image built by Kubes. This spares you updating the image manually.
41
+
42
+ ## Base Resource
43
+
44
+ Also let's check the files in the base folder.
45
+
46
+ .kubes/resources/base/all.yaml
47
+
48
+ ```yaml
49
+ metadata:
50
+ namespace: default
51
+ ```
52
+
53
+ .kubes/resources/base/deployment.yaml
54
+
55
+ ```yaml
56
+ metadata:
57
+ labels:
58
+ app: demo
59
+ spec:
60
+ selector:
61
+ matchLabels:
62
+ app: demo
63
+ template:
64
+ metadata:
65
+ labels:
66
+ app: demo
67
+ ```
68
+
69
+ The base folder files are processed first as a part of [Kubes Layering]({% link _docs/layering.md %}). This allows you to define common fields and keep your code DRY.
70
+
71
+ ## Service Resource
72
+
73
+ Next, let's look at `service.yaml`
74
+
75
+ .kubes/resources/web/service.yaml
76
+
77
+ ```yaml
78
+ apiVersion: v1
79
+ kind: Service
80
+ metadata:
81
+ name: demo-web
82
+ labels:
83
+ app: demo
84
+ namespace: default
85
+ spec:
86
+ ports:
87
+ - port: 80
88
+ protocol: TCP
89
+ targetPort: 8080
90
+ selector:
91
+ app: demo
92
+ type: ClusterIP
93
+ ```
94
+
95
+ There's no use of ERB templating here.
96
+
97
+ Next, we'll deploy the app.
@@ -0,0 +1,54 @@
1
+ ---
2
+ title: Update App
3
+ ---
4
+
5
+ Let's update the app. In this case, we don't need to update the Docker image, so we'll use the `apply` command, which does not run the Docker build phase.
6
+
7
+ kubes apply
8
+
9
+ Here's what the output looks like:
10
+
11
+ $ kubes apply
12
+ Compiled .kubes/resources files
13
+ => kubectl apply -f .kubes/output/web/service.yaml
14
+ service/demo-web unchanged
15
+ => kubectl apply -f .kubes/output/web/deployment.yaml
16
+ deployment.apps/demo-web configured
17
+ $
18
+
19
+ The change has been deployed. Let's double check it:
20
+
21
+ kubes get
22
+
23
+ Example output:
24
+
25
+ $ kubes get
26
+ => kubectl get --recursive -f .kubes/output
27
+ NAME READY UP-TO-DATE AVAILABLE AGE
28
+ deployment.apps/demo-web 3/3 3 3 6m5s
29
+
30
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
31
+ service/demo-web ClusterIP 172.16.201.77 <none> 80/TCP 6m5s
32
+ $
33
+
34
+ Let's also use the `kubectl get` command:
35
+
36
+ $ kubectl get all
37
+ NAME READY STATUS RESTARTS AGE
38
+ pod/demo-web-5cb4f9fb77-6c7vc 1/1 Running 0 3s
39
+ pod/demo-web-5cb4f9fb77-lgczj 1/1 Running 0 5m25s
40
+ pod/demo-web-5cb4f9fb77-ls28f 1/1 Running 0 3s
41
+
42
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
43
+ service/demo-web ClusterIP 172.16.201.77 <none> 80/TCP 5m26s
44
+
45
+ NAME READY UP-TO-DATE AVAILABLE AGE
46
+ deployment.apps/demo-web 3/3 3 3 5m26s
47
+
48
+ NAME DESIRED CURRENT READY AGE
49
+ replicaset.apps/demo-web-5cb4f9fb77 3 3 3 5m26s
50
+ $
51
+
52
+ We can see that there are now 3 replicas running.
53
+
54
+ Next, we'll delete the app.