kubes 0.1.0 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. checksums.yaml +5 -5
  2. data/.dockerignore +4 -0
  3. data/.gitignore +15 -7
  4. data/.rspec +3 -0
  5. data/CHANGELOG.md +22 -0
  6. data/Dockerfile +14 -0
  7. data/Gemfile +3 -1
  8. data/Guardfile +19 -0
  9. data/LICENSE.txt +201 -0
  10. data/README.md +46 -18
  11. data/Rakefile +13 -1
  12. data/docs/.gitignore +5 -0
  13. data/docs/CNAME +1 -0
  14. data/docs/Gemfile +16 -0
  15. data/docs/LICENSE +201 -0
  16. data/docs/Procfile +2 -0
  17. data/docs/README.md +24 -0
  18. data/docs/Rakefile +38 -0
  19. data/docs/_config.yml +71 -0
  20. data/docs/_docs/auto-context.md +47 -0
  21. data/docs/_docs/ci/cloudbuild.md +69 -0
  22. data/docs/_docs/config.md +9 -0
  23. data/docs/_docs/config/docker.md +70 -0
  24. data/docs/_docs/config/env.md +58 -0
  25. data/docs/_docs/config/kubectl.md +61 -0
  26. data/docs/_docs/contributing.md +98 -0
  27. data/docs/_docs/dsl.md +66 -0
  28. data/docs/_docs/dsl/multiple-resources.md +114 -0
  29. data/docs/_docs/dsl/resources.md +12 -0
  30. data/docs/_docs/dsl/resources/backend_config.md +45 -0
  31. data/docs/_docs/dsl/resources/config_map.md +84 -0
  32. data/docs/_docs/dsl/resources/daemon_set.md +58 -0
  33. data/docs/_docs/dsl/resources/deployment.md +137 -0
  34. data/docs/_docs/dsl/resources/generic.md +58 -0
  35. data/docs/_docs/dsl/resources/ingress.md +103 -0
  36. data/docs/_docs/dsl/resources/managed_certificate.md +39 -0
  37. data/docs/_docs/dsl/resources/namespace.md +34 -0
  38. data/docs/_docs/dsl/resources/network_policy.md +111 -0
  39. data/docs/_docs/dsl/resources/pod.md +82 -0
  40. data/docs/_docs/dsl/resources/role.md +44 -0
  41. data/docs/_docs/dsl/resources/role_binding.md +55 -0
  42. data/docs/_docs/dsl/resources/secret.md +87 -0
  43. data/docs/_docs/dsl/resources/service.md +60 -0
  44. data/docs/_docs/dsl/resources/service_account.md +37 -0
  45. data/docs/_docs/extra-env.md +23 -0
  46. data/docs/_docs/extra-env/dsl.md +86 -0
  47. data/docs/_docs/extra-env/yaml.md +67 -0
  48. data/docs/_docs/helpers.md +19 -0
  49. data/docs/_docs/intro.md +15 -0
  50. data/docs/_docs/intro/concepts.md +37 -0
  51. data/docs/_docs/intro/how-kubes-works.md +29 -0
  52. data/docs/_docs/intro/install.md +6 -0
  53. data/docs/_docs/intro/ordering.md +63 -0
  54. data/docs/_docs/intro/ordering/custom.md +25 -0
  55. data/docs/_docs/intro/structure.md +43 -0
  56. data/docs/_docs/kustomize.md +54 -0
  57. data/docs/_docs/layering.md +8 -0
  58. data/docs/_docs/layering/dsl.md +5 -0
  59. data/docs/_docs/layering/merge.md +96 -0
  60. data/docs/_docs/layering/yaml.md +5 -0
  61. data/docs/_docs/learn/dsl.md +5 -0
  62. data/docs/_docs/learn/dsl/change.md +16 -0
  63. data/docs/_docs/learn/dsl/cluster.md +5 -0
  64. data/docs/_docs/learn/dsl/delete.md +32 -0
  65. data/docs/_docs/learn/dsl/deploy.md +66 -0
  66. data/docs/_docs/learn/dsl/install.md +5 -0
  67. data/docs/_docs/learn/dsl/new-project.md +34 -0
  68. data/docs/_docs/learn/dsl/next-steps.md +5 -0
  69. data/docs/_docs/learn/dsl/review-project.md +63 -0
  70. data/docs/_docs/learn/dsl/update.md +53 -0
  71. data/docs/_docs/learn/yaml.md +5 -0
  72. data/docs/_docs/learn/yaml/change.md +17 -0
  73. data/docs/_docs/learn/yaml/cluster.md +5 -0
  74. data/docs/_docs/learn/yaml/delete.md +32 -0
  75. data/docs/_docs/learn/yaml/deploy.md +67 -0
  76. data/docs/_docs/learn/yaml/install.md +5 -0
  77. data/docs/_docs/learn/yaml/new-project.md +37 -0
  78. data/docs/_docs/learn/yaml/next-steps.md +5 -0
  79. data/docs/_docs/learn/yaml/review-project.md +108 -0
  80. data/docs/_docs/learn/yaml/update.md +54 -0
  81. data/docs/_docs/next-steps.md +13 -0
  82. data/docs/_docs/patterns.md +7 -0
  83. data/docs/_docs/patterns/clock-web-worker.md +71 -0
  84. data/docs/_docs/resources.md +11 -0
  85. data/docs/_docs/resources/base.md +33 -0
  86. data/docs/_docs/resources/role.md +41 -0
  87. data/docs/_docs/resources/shared.md +36 -0
  88. data/docs/_docs/yaml.md +41 -0
  89. data/docs/_includes/commands.html +131 -0
  90. data/docs/_includes/content.html +25 -0
  91. data/docs/_includes/dsl/methods.md +1 -0
  92. data/docs/_includes/dsl/rolling_deployment.md +1 -0
  93. data/docs/_includes/dsl/suffix_hash.md +8 -0
  94. data/docs/_includes/example.html +12 -0
  95. data/docs/_includes/footer.html +37 -0
  96. data/docs/_includes/google_analytics.html +10 -0
  97. data/docs/_includes/header.html +31 -0
  98. data/docs/_includes/intro/install.md +15 -0
  99. data/docs/_includes/js.html +3 -0
  100. data/docs/_includes/kubes-steps.md +3 -0
  101. data/docs/_includes/layering/layers.md +64 -0
  102. data/docs/_includes/learn/cluster.md +22 -0
  103. data/docs/_includes/learn/next-steps.md +6 -0
  104. data/docs/_includes/learn/review.md +27 -0
  105. data/docs/_includes/learn/start.md +3 -0
  106. data/docs/_includes/reference.md +3 -0
  107. data/docs/_includes/sidebar.html +118 -0
  108. data/docs/_layouts/default.html +35 -0
  109. data/docs/_reference/kubes-apply.md +24 -0
  110. data/docs/_reference/kubes-clean.md +22 -0
  111. data/docs/_reference/kubes-compile.md +22 -0
  112. data/docs/_reference/kubes-completion.md +42 -0
  113. data/docs/_reference/kubes-completion_script.md +25 -0
  114. data/docs/_reference/kubes-delete.md +23 -0
  115. data/docs/_reference/kubes-deploy.md +35 -0
  116. data/docs/_reference/kubes-docker-build.md +20 -0
  117. data/docs/_reference/kubes-docker-help.md +15 -0
  118. data/docs/_reference/kubes-docker-push.md +20 -0
  119. data/docs/_reference/kubes-docker.md +25 -0
  120. data/docs/_reference/kubes-init.md +26 -0
  121. data/docs/_reference/kubes-version.md +21 -0
  122. data/docs/_sass/bootstrap-overrides.scss +17 -0
  123. data/docs/_sass/buttons.scss +62 -0
  124. data/docs/_sass/caret.scss +39 -0
  125. data/docs/_sass/content.scss +21 -0
  126. data/docs/_sass/cta.scss +39 -0
  127. data/docs/_sass/default.scss +103 -0
  128. data/docs/_sass/footer.scss +66 -0
  129. data/docs/_sass/masthead.scss +77 -0
  130. data/docs/_sass/mixins.scss +79 -0
  131. data/docs/_sass/sidebar.scss +107 -0
  132. data/docs/_sass/syntax.scss +89 -0
  133. data/docs/_sass/table.scss +30 -0
  134. data/docs/_sass/theme.scss +292 -0
  135. data/docs/_sass/variables.scss +24 -0
  136. data/docs/bin/build +4 -0
  137. data/docs/bin/rerun +2 -0
  138. data/docs/bin/web +8 -0
  139. data/docs/css/main.scss +24 -0
  140. data/docs/docs.md +7 -0
  141. data/docs/getting-started.md +12 -0
  142. data/docs/img/logos/boltops-logo-full.png +0 -0
  143. data/docs/img/logos/boltops-logo.png +0 -0
  144. data/docs/img/logos/filler-logo.png +0 -0
  145. data/docs/img/logos/kubes-black.png +0 -0
  146. data/docs/img/logos/kubes-sign.png +0 -0
  147. data/docs/index.html +34 -0
  148. data/docs/js/app.js +39414 -0
  149. data/docs/opal/app.rb +16 -0
  150. data/docs/opal/pager.rb +90 -0
  151. data/docs/opal/sidebar.rb +94 -0
  152. data/docs/opal/sidebar/expander.rb +51 -0
  153. data/docs/reference.md +15 -0
  154. data/docs/support.md +19 -0
  155. data/docs/vendor/bootstrap/css/bootstrap-grid.css +3719 -0
  156. data/docs/vendor/bootstrap/css/bootstrap-grid.css.map +1 -0
  157. data/docs/vendor/bootstrap/css/bootstrap-grid.min.css +7 -0
  158. data/docs/vendor/bootstrap/css/bootstrap-grid.min.css.map +1 -0
  159. data/docs/vendor/bootstrap/css/bootstrap-reboot.css +331 -0
  160. data/docs/vendor/bootstrap/css/bootstrap-reboot.css.map +1 -0
  161. data/docs/vendor/bootstrap/css/bootstrap-reboot.min.css +8 -0
  162. data/docs/vendor/bootstrap/css/bootstrap-reboot.min.css.map +1 -0
  163. data/docs/vendor/bootstrap/css/bootstrap.css +10038 -0
  164. data/docs/vendor/bootstrap/css/bootstrap.css.map +1 -0
  165. data/docs/vendor/bootstrap/css/bootstrap.min.css +7 -0
  166. data/docs/vendor/bootstrap/css/bootstrap.min.css.map +1 -0
  167. data/docs/vendor/bootstrap/js/bootstrap.bundle.js +7013 -0
  168. data/docs/vendor/bootstrap/js/bootstrap.bundle.js.map +1 -0
  169. data/docs/vendor/bootstrap/js/bootstrap.bundle.min.js +7 -0
  170. data/docs/vendor/bootstrap/js/bootstrap.bundle.min.js.map +1 -0
  171. data/docs/vendor/bootstrap/js/bootstrap.js +4435 -0
  172. data/docs/vendor/bootstrap/js/bootstrap.js.map +1 -0
  173. data/docs/vendor/bootstrap/js/bootstrap.min.js +7 -0
  174. data/docs/vendor/bootstrap/js/bootstrap.min.js.map +1 -0
  175. data/docs/vendor/font-awesome/css/font-awesome.css +2337 -0
  176. data/docs/vendor/font-awesome/css/font-awesome.min.css +4 -0
  177. data/docs/vendor/font-awesome/fonts/FontAwesome.otf +0 -0
  178. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  179. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.svg +2671 -0
  180. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  181. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  182. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  183. data/docs/vendor/font-awesome/less/animated.less +34 -0
  184. data/docs/vendor/font-awesome/less/bordered-pulled.less +25 -0
  185. data/docs/vendor/font-awesome/less/core.less +12 -0
  186. data/docs/vendor/font-awesome/less/fixed-width.less +6 -0
  187. data/docs/vendor/font-awesome/less/font-awesome.less +18 -0
  188. data/docs/vendor/font-awesome/less/icons.less +789 -0
  189. data/docs/vendor/font-awesome/less/larger.less +13 -0
  190. data/docs/vendor/font-awesome/less/list.less +19 -0
  191. data/docs/vendor/font-awesome/less/mixins.less +60 -0
  192. data/docs/vendor/font-awesome/less/path.less +15 -0
  193. data/docs/vendor/font-awesome/less/rotated-flipped.less +20 -0
  194. data/docs/vendor/font-awesome/less/screen-reader.less +5 -0
  195. data/docs/vendor/font-awesome/less/stacked.less +20 -0
  196. data/docs/vendor/font-awesome/less/variables.less +799 -0
  197. data/docs/vendor/font-awesome/scss/_animated.scss +34 -0
  198. data/docs/vendor/font-awesome/scss/_bordered-pulled.scss +25 -0
  199. data/docs/vendor/font-awesome/scss/_core.scss +12 -0
  200. data/docs/vendor/font-awesome/scss/_fixed-width.scss +6 -0
  201. data/docs/vendor/font-awesome/scss/_icons.scss +789 -0
  202. data/docs/vendor/font-awesome/scss/_larger.scss +13 -0
  203. data/docs/vendor/font-awesome/scss/_list.scss +19 -0
  204. data/docs/vendor/font-awesome/scss/_mixins.scss +60 -0
  205. data/docs/vendor/font-awesome/scss/_path.scss +15 -0
  206. data/docs/vendor/font-awesome/scss/_rotated-flipped.scss +20 -0
  207. data/docs/vendor/font-awesome/scss/_screen-reader.scss +5 -0
  208. data/docs/vendor/font-awesome/scss/_stacked.scss +20 -0
  209. data/docs/vendor/font-awesome/scss/_variables.scss +799 -0
  210. data/docs/vendor/font-awesome/scss/font-awesome.scss +18 -0
  211. data/docs/vendor/jquery/jquery.js +10598 -0
  212. data/docs/vendor/jquery/jquery.min.js +2 -0
  213. data/docs/vendor/jquery/jquery.min.map +1 -0
  214. data/docs/vendor/jquery/jquery.slim.js +8495 -0
  215. data/docs/vendor/jquery/jquery.slim.min.js +2 -0
  216. data/docs/vendor/jquery/jquery.slim.min.map +1 -0
  217. data/docs/vendor/simple-line-icons/css/simple-line-icons.css +778 -0
  218. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.eot +0 -0
  219. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.svg +200 -0
  220. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.ttf +0 -0
  221. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.woff +0 -0
  222. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.woff2 +0 -0
  223. data/docs/vendor/simple-line-icons/less/simple-line-icons.less +982 -0
  224. data/docs/vendor/simple-line-icons/scss/simple-line-icons.scss +979 -0
  225. data/exe/kubes +14 -0
  226. data/kubes.gemspec +29 -19
  227. data/lib/kubes.rb +21 -1
  228. data/lib/kubes/args/custom.rb +30 -0
  229. data/lib/kubes/args/dsl.rb +14 -0
  230. data/lib/kubes/auth.rb +21 -0
  231. data/lib/kubes/auth/ecr.rb +55 -0
  232. data/lib/kubes/autoloader.rb +21 -0
  233. data/lib/kubes/aws_services.rb +14 -0
  234. data/lib/kubes/cli.rb +93 -0
  235. data/lib/kubes/cli/apply.rb +9 -0
  236. data/lib/kubes/cli/base.rb +9 -0
  237. data/lib/kubes/cli/build.rb +8 -0
  238. data/lib/kubes/cli/clean.rb +9 -0
  239. data/lib/kubes/cli/compile.rb +8 -0
  240. data/lib/kubes/cli/delete.rb +11 -0
  241. data/lib/kubes/cli/deploy.rb +13 -0
  242. data/lib/kubes/cli/describe.rb +8 -0
  243. data/lib/kubes/cli/docker.rb +20 -0
  244. data/lib/kubes/cli/get.rb +8 -0
  245. data/lib/kubes/cli/help.rb +11 -0
  246. data/lib/kubes/cli/help/completion.md +20 -0
  247. data/lib/kubes/cli/help/completion_script.md +3 -0
  248. data/lib/kubes/cli/help/deploy.md +10 -0
  249. data/lib/kubes/cli/init.rb +69 -0
  250. data/lib/kubes/cli/sequence.rb +27 -0
  251. data/lib/kubes/command.rb +100 -0
  252. data/lib/kubes/compiler.rb +71 -0
  253. data/lib/kubes/compiler/decorator.rb +17 -0
  254. data/lib/kubes/compiler/decorator/base.rb +16 -0
  255. data/lib/kubes/compiler/decorator/compile.rb +12 -0
  256. data/lib/kubes/compiler/decorator/resources/base.rb +13 -0
  257. data/lib/kubes/compiler/decorator/resources/container.rb +76 -0
  258. data/lib/kubes/compiler/decorator/resources/container/mapping.rb +28 -0
  259. data/lib/kubes/compiler/decorator/resources/deployment.rb +10 -0
  260. data/lib/kubes/compiler/decorator/resources/pod.rb +10 -0
  261. data/lib/kubes/compiler/decorator/resources/secret.rb +23 -0
  262. data/lib/kubes/compiler/decorator/write.rb +14 -0
  263. data/lib/kubes/compiler/dsl/core/base.rb +27 -0
  264. data/lib/kubes/compiler/dsl/core/blocks.rb +55 -0
  265. data/lib/kubes/compiler/dsl/core/fields.rb +78 -0
  266. data/lib/kubes/compiler/dsl/core/files.rb +28 -0
  267. data/lib/kubes/compiler/dsl/core/helpers.rb +19 -0
  268. data/lib/kubes/compiler/dsl/core/parser.rb +43 -0
  269. data/lib/kubes/compiler/dsl/syntax/backend_config.rb +10 -0
  270. data/lib/kubes/compiler/dsl/syntax/cluster_role.rb +4 -0
  271. data/lib/kubes/compiler/dsl/syntax/cluster_role_binding.rb +4 -0
  272. data/lib/kubes/compiler/dsl/syntax/config_map.rb +20 -0
  273. data/lib/kubes/compiler/dsl/syntax/daemon_set.rb +23 -0
  274. data/lib/kubes/compiler/dsl/syntax/deployment.rb +160 -0
  275. data/lib/kubes/compiler/dsl/syntax/ingress.rb +41 -0
  276. data/lib/kubes/compiler/dsl/syntax/managed_certificate.rb +18 -0
  277. data/lib/kubes/compiler/dsl/syntax/namespace.rb +13 -0
  278. data/lib/kubes/compiler/dsl/syntax/network_policy.rb +47 -0
  279. data/lib/kubes/compiler/dsl/syntax/pod.rb +81 -0
  280. data/lib/kubes/compiler/dsl/syntax/resource.rb +70 -0
  281. data/lib/kubes/compiler/dsl/syntax/role.rb +40 -0
  282. data/lib/kubes/compiler/dsl/syntax/role_binding.rb +43 -0
  283. data/lib/kubes/compiler/dsl/syntax/secret.rb +22 -0
  284. data/lib/kubes/compiler/dsl/syntax/service.rb +68 -0
  285. data/lib/kubes/compiler/dsl/syntax/service_account.rb +20 -0
  286. data/lib/kubes/compiler/layering.rb +39 -0
  287. data/lib/kubes/compiler/shared/helpers.rb +31 -0
  288. data/lib/kubes/compiler/strategy.rb +27 -0
  289. data/lib/kubes/compiler/strategy/base.rb +13 -0
  290. data/lib/kubes/compiler/strategy/dsl.rb +32 -0
  291. data/lib/kubes/compiler/strategy/erb.rb +42 -0
  292. data/lib/kubes/compiler/strategy/pass.rb +9 -0
  293. data/lib/kubes/compiler/strategy/result.rb +26 -0
  294. data/lib/kubes/compiler/util/normalize.rb +11 -0
  295. data/lib/kubes/compiler/util/yaml_dump.rb +23 -0
  296. data/lib/kubes/completer.rb +159 -0
  297. data/lib/kubes/completer/script.rb +6 -0
  298. data/lib/kubes/completer/script.sh +10 -0
  299. data/lib/kubes/config.rb +82 -0
  300. data/lib/kubes/core.rb +32 -0
  301. data/lib/kubes/docker/args/default.rb +39 -0
  302. data/lib/kubes/docker/base.rb +88 -0
  303. data/lib/kubes/docker/build.rb +22 -0
  304. data/lib/kubes/docker/push.rb +33 -0
  305. data/lib/kubes/hooks/builder.rb +41 -0
  306. data/lib/kubes/hooks/dsl.rb +19 -0
  307. data/lib/kubes/kubectl.rb +87 -0
  308. data/lib/kubes/kubectl/args/base.rb +12 -0
  309. data/lib/kubes/kubectl/args/kustomize.rb +28 -0
  310. data/lib/kubes/kubectl/args/standard.rb +32 -0
  311. data/lib/kubes/kubectl/batch.rb +49 -0
  312. data/lib/kubes/kubectl/decider.rb +15 -0
  313. data/lib/kubes/kubectl/kustomize.rb +13 -0
  314. data/lib/kubes/kubectl/ordering.rb +27 -0
  315. data/lib/kubes/logger.rb +26 -0
  316. data/lib/kubes/logging.rb +7 -0
  317. data/lib/kubes/util/consider.rb +9 -0
  318. data/lib/kubes/util/sh.rb +43 -0
  319. data/lib/kubes/util/sure.rb +17 -0
  320. data/lib/kubes/util/time.rb +14 -0
  321. data/lib/kubes/version.rb +1 -1
  322. data/lib/templates/base/.kubes/config.rb.tt +9 -0
  323. data/lib/templates/base/.kubes/config/env/dev.rb +6 -0
  324. data/lib/templates/base/.kubes/config/env/prod.rb +6 -0
  325. data/lib/templates/docker/Dockerfile +4 -0
  326. data/lib/templates/dsl/.kubes/resources/base/all.rb.tt +2 -0
  327. data/lib/templates/dsl/.kubes/resources/shared/namespace.rb.tt +2 -0
  328. data/lib/templates/dsl/.kubes/resources/web/deployment.rb +10 -0
  329. data/lib/templates/dsl/.kubes/resources/web/deployment/dev.rb +1 -0
  330. data/lib/templates/dsl/.kubes/resources/web/deployment/prod.rb +1 -0
  331. data/lib/templates/dsl/.kubes/resources/web/service.rb +8 -0
  332. data/lib/templates/yaml/.kubes/resources/base/all.yaml.tt +2 -0
  333. data/lib/templates/yaml/.kubes/resources/base/deployment.yaml.tt +11 -0
  334. data/lib/templates/yaml/.kubes/resources/shared/namespace.yaml.tt +6 -0
  335. data/lib/templates/yaml/.kubes/resources/web/deployment.yaml.tt +19 -0
  336. data/lib/templates/yaml/.kubes/resources/web/deployment/dev.yaml +2 -0
  337. data/lib/templates/yaml/.kubes/resources/web/deployment/prod.yaml +2 -0
  338. data/lib/templates/yaml/.kubes/resources/web/service.yaml.tt +14 -0
  339. data/spec/cli_spec.rb +8 -0
  340. data/spec/fixtures/artifacts/demo-web/deployment.yaml +26 -0
  341. data/spec/fixtures/artifacts/demo-web/service.yaml +16 -0
  342. data/spec/fixtures/blocks/deployments.rb +9 -0
  343. data/spec/fixtures/decorators/deployment/configMap/envFrom.yaml +27 -0
  344. data/spec/fixtures/decorators/deployment/configMap/valueFrom.yaml +30 -0
  345. data/spec/fixtures/decorators/deployment/configMap/volumes.yaml +34 -0
  346. data/spec/fixtures/decorators/deployment/secret/envFrom.yaml +27 -0
  347. data/spec/fixtures/decorators/deployment/secret/valueFrom.yaml +30 -0
  348. data/spec/fixtures/decorators/deployment/secret/volumes.yaml +34 -0
  349. data/spec/fixtures/decorators/pod/configMap/envFrom.yaml +12 -0
  350. data/spec/fixtures/decorators/pod/configMap/valueFrom.yaml +16 -0
  351. data/spec/fixtures/decorators/pod/configMap/volumes.yaml +19 -0
  352. data/spec/fixtures/decorators/pod/secret/envFrom.yaml +12 -0
  353. data/spec/fixtures/decorators/pod/secret/valueFrom.yaml +16 -0
  354. data/spec/fixtures/decorators/pod/secret/volumes.yaml +19 -0
  355. data/spec/fixtures/deployments/minimum.rb +5 -0
  356. data/spec/fixtures/deployments/props.rb +7 -0
  357. data/spec/fixtures/deployments/setter/container.rb +11 -0
  358. data/spec/fixtures/deployments/setter/containers.rb +14 -0
  359. data/spec/fixtures/deployments/setter/metadata.rb +15 -0
  360. data/spec/fixtures/deployments/setter/sidecar.rb +12 -0
  361. data/spec/fixtures/deployments/setter/spec.rb +10 -0
  362. data/spec/fixtures/multiple-files/deployment-1.rb +4 -0
  363. data/spec/fixtures/multiple-files/deployment-2.rb +4 -0
  364. data/spec/fixtures/project/.gitignore +1 -0
  365. data/spec/fixtures/project/.kubes/resources/deployment.rb +32 -0
  366. data/spec/fixtures/project/.kubes/resources/foobar.rb +0 -0
  367. data/spec/fixtures/project/.kubes/resources/service.rb +3 -0
  368. data/spec/fixtures/services/minimum.rb +3 -0
  369. data/spec/fixtures/syntax/network_policy.rb +3 -0
  370. data/spec/fixtures/syntax/pod.rb +1 -0
  371. data/spec/kubes/compiler/decorator/resources/deployment_spec.rb +92 -0
  372. data/spec/kubes/compiler/decorator/resources/pod_spec.rb +92 -0
  373. data/spec/kubes/compiler/strategy/dsl_spec.rb +36 -0
  374. data/spec/kubes/compiler_spec.rb +10 -0
  375. data/spec/kubes/dsl/daemon_set.rb +11 -0
  376. data/spec/kubes/dsl/deployment_spec.rb +60 -0
  377. data/spec/kubes/dsl/network_policy_spec.rb +14 -0
  378. data/spec/kubes/dsl/pod_spec.rb +11 -0
  379. data/spec/kubes/dsl/service_spec.rb +12 -0
  380. data/spec/kubes/kubectl/batch_spec.rb +24 -0
  381. data/spec/spec_helper.rb +34 -0
  382. metadata +607 -22
  383. data/bin/console +0 -14
  384. data/bin/setup +0 -8
@@ -0,0 +1,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,32 @@
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
+ => kubectl delete -f .kubes/output/shared/namespace.yaml
19
+ namespace "demo" deleted
20
+ $
21
+
22
+ Let's double-check that the resources have been deleted:
23
+
24
+ $ kubectl get all
25
+ No resources found.
26
+ $
27
+
28
+ Tip: If you want to delete without the prompt, you can use the `-y` option:
29
+
30
+ kubes delete -y
31
+
32
+ Next, we'll look at some next steps.
@@ -0,0 +1,66 @@
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/shared/namespace.yaml
18
+ namespace/demo created
19
+ => kubectl apply -f .kubes/output/web/service.yaml
20
+ service/demo-web created
21
+ => kubectl apply -f .kubes/output/web/deployment.yaml
22
+ deployment.apps/demo-web created
23
+ $
24
+
25
+ What did Kubes do?
26
+
27
+ {% include kubes-steps.md %}
28
+
29
+ ## Check Resources
30
+
31
+ Let's check for the created resource on the Kubernetes cluster:
32
+
33
+ kubes get
34
+
35
+ Example output:
36
+
37
+ $ kubes get
38
+ => kubectl get --recursive -f .kubes/output
39
+ NAME STATUS AGE
40
+ namespace/demo Active 10s
41
+
42
+ NAME READY UP-TO-DATE AVAILABLE AGE
43
+ deployment.apps/demo-web 1/1 1 1 10s
44
+
45
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
46
+ service/demo-web ClusterIP 172.16.173.96 <none> 80/TCP 11s
47
+
48
+ Let's also use the `kubectl get` command:
49
+
50
+ $ kubectl get all
51
+ NAME READY STATUS RESTARTS AGE
52
+ pod/demo-web-6f867f469f-5qhn6 1/1 Running 0 16s
53
+
54
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
55
+ service/demo-web ClusterIP 172.16.173.96 <none> 80/TCP 17s
56
+
57
+ NAME READY UP-TO-DATE AVAILABLE AGE
58
+ deployment.apps/demo-web 1/1 1 1 16s
59
+
60
+ NAME DESIRED CURRENT READY AGE
61
+ replicaset.apps/demo-web-6f867f469f 1 1 1 16s
62
+ $
63
+
64
+ We can see that the deployment and service got created.
65
+
66
+ 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,34 @@
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/shared/namespace.rb
21
+ create .kubes/resources/web/deployment.rb
22
+ create .kubes/resources/web/deployment/dev.rb
23
+ create .kubes/resources/web/deployment/prod.rb
24
+ create .kubes/resources/web/service.rb
25
+ Initialized .kubes folder
26
+ $
27
+
28
+ 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 %}).
29
+
30
+ Let's explore some of the generated files.
31
+
32
+ {% include learn/review.md %}
33
+
34
+ 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,63 @@
1
+ ---
2
+ title: Review Project
3
+ ---
4
+
5
+ Let's review the resources.
6
+
7
+ ## Namespace
8
+
9
+ We'll create a namespace for the app resources:
10
+
11
+ .kubes/resources/shared/namespace.rb
12
+
13
+ ```ruby
14
+ name "demo"
15
+ labels(app: "demo")
16
+ ```
17
+
18
+ ## Deployment
19
+
20
+ The `web/deployment.rb` file is a little more interesting:
21
+
22
+ .kubes/resources/web/deployment.rb
23
+
24
+ ```ruby
25
+ name "demo-web"
26
+ labels(role: "web")
27
+ namespace "default"
28
+
29
+ replicas 1
30
+ image built_image # IE: user/demo:kubes-2020-06-13T19-55-16-43afc6e
31
+ ```
32
+
33
+ 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.
34
+
35
+ ## Base Folder
36
+
37
+ Also let's check the files in the base folder.
38
+
39
+ .kubes/resources/base/all.rb
40
+
41
+ ```ruby
42
+ namespace "default"
43
+ labels(app: "demo")
44
+ ```
45
+
46
+ 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.
47
+
48
+ Next, let's look at `service.rb`
49
+
50
+ .kubes/resources/web/service.rb
51
+
52
+ ```ruby
53
+ name "demo-web"
54
+ labels(role: "web")
55
+
56
+ # Optional since default port is 80
57
+ # port 80
58
+ # targetPort 80
59
+ ```
60
+
61
+ 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 %})
62
+
63
+ 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. Note, the namespace is not shown for conciseness.
10
+
11
+ $ kubes apply
12
+ Compiled .kubes/resources files
13
+ => kubectl apply -f .kubes/output/web/service.yaml
14
+ service/demo-web unchanged
15
+ => kubectl apply -f .kubes/output/web/deployment.yaml
16
+ deployment.apps/demo-web configured
17
+ $
18
+
19
+ The change has been deployed. Let's double check it:
20
+
21
+ kubes get
22
+
23
+ Example output:
24
+
25
+ $ kubes get
26
+ => kubectl get --recursive -f .kubes/output
27
+ NAME READY UP-TO-DATE AVAILABLE AGE
28
+ deployment.apps/demo-web 3/3 3 3 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,32 @@
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
+ => kubectl delete -f .kubes/output/shared/namespace.yaml
19
+ namespace "demo" deleted
20
+ $
21
+
22
+ Let's double-check that the resources have been deleted:
23
+
24
+ $ kubectl get all
25
+ No resources found.
26
+ $
27
+
28
+ Tip: If you want to delete without the prompt, you can use the `-y` option:
29
+
30
+ kubes delete -y
31
+
32
+ Next, we'll look at some next steps.
@@ -0,0 +1,67 @@
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/shared/namespace.yaml
18
+ namespace/demo created
19
+ => kubectl apply -f .kubes/output/web/service.yaml
20
+ service/demo-web created
21
+ => kubectl apply -f .kubes/output/web/deployment.yaml
22
+ deployment.apps/demo-web created
23
+ $
24
+
25
+ What did Kubes do?
26
+
27
+ {% include kubes-steps.md %}
28
+
29
+ ## Check Resources
30
+
31
+ Let's check for the created resource on the Kubernetes cluster:
32
+
33
+ kubes get
34
+
35
+ Example output:
36
+
37
+ $ kubes get
38
+ => kubectl get --recursive -f .kubes/output
39
+ NAME STATUS AGE
40
+ namespace/demo Active 7s
41
+
42
+ NAME READY UP-TO-DATE AVAILABLE AGE
43
+ deployment.apps/demo-web 1/1 1 1 7s
44
+
45
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
46
+ service/demo-web ClusterIP 172.16.201.77 <none> 80/TCP 7s
47
+ $
48
+
49
+ Let's also use the `kubectl get` command:
50
+
51
+ $ kubectl get all
52
+ NAME READY STATUS RESTARTS AGE
53
+ pod/demo-web-5cb4f9fb77-lgczj 1/1 Running 0 3m48s
54
+
55
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
56
+ service/demo-web ClusterIP 172.16.201.77 <none> 80/TCP 3m49s
57
+
58
+ NAME READY UP-TO-DATE AVAILABLE AGE
59
+ deployment.apps/demo-web 1/1 1 1 3m49s
60
+
61
+ NAME DESIRED CURRENT READY AGE
62
+ replicaset.apps/demo-web-5cb4f9fb77 1 1 1 3m49s
63
+ $
64
+
65
+ We can see that the deployment and service got created.
66
+
67
+ Next, we'll make a change.
@@ -0,0 +1,5 @@
1
+ ---
2
+ title: Install Kubes
3
+ ---
4
+
5
+ {% include intro/install.md %}