kubes 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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,2 @@
1
+ web: bin/web
2
+ opal: bin/rerun
@@ -0,0 +1,24 @@
1
+ # kubes Documentation
2
+
3
+ This project powers the kubes documementation website: [https://kubes.guru](https://kubes.guru). It is a static website generated by [Jekyll](https://jekyllrb.com/).
4
+
5
+ ## Contributing
6
+
7
+ For minor changes like typos, you can click **Suggest an edit to this page**, located at the bottom of each article. This will take you to the source file on GitHub, where you can submit a pull request for your change through the UI.
8
+
9
+ ## Local Setup
10
+
11
+ For larger fixes, you can run the site locally with the following:
12
+
13
+ git clone https://github.com/boltops-tools/kubes
14
+ cd kubes/docs
15
+ bundle
16
+ foreman start
17
+
18
+ You'll be able to view the site on [http://localhost:4000](http://localhost:4000).
19
+
20
+ ## Html Proofer
21
+
22
+ Run it locally once in a while. Sometimes external sites are intermittently down, even GitHub.
23
+
24
+ bundle exec rake html:proof
@@ -0,0 +1,38 @@
1
+ # server-side require
2
+ require 'opal'
3
+ require 'opal-jquery'
4
+ require 'opal-browser'
5
+
6
+
7
+ # Note the jekyll-opal plugin loads a minimum baseline of opal that doesnt including extra side-side requires
8
+ # So we'll compile our own version instead.
9
+
10
+ namespace :opal do
11
+ desc "Build our app to app.js"
12
+ task :build do
13
+ puts "build opal files"
14
+ Opal.append_path "./opal"
15
+ compiled = Opal::Builder.build("app").to_s
16
+ IO.write("js/app.js", compiled)
17
+ end
18
+ end
19
+
20
+ require 'html-proofer'
21
+
22
+ namespace :html do
23
+ desc "proof read the html links"
24
+ task :proof do
25
+ system "bundle exec jekyll build"
26
+ HTMLProofer.check_directory(
27
+ "./_site",
28
+ # hacks to get html proof to pass links we wanted ignored
29
+ check_html: true,
30
+ # check_favicon: true,
31
+ only_4xx: true,
32
+ allow_hash_href: true,
33
+ empty_alt_ignore: true,
34
+ ).run
35
+ end
36
+ end
37
+
38
+ task :default => ["opal:build", "html:proof"]
@@ -0,0 +1,71 @@
1
+ # Site settings
2
+ title: kubes
3
+ email: tung@boltops.com
4
+ url: https://kubes.guru
5
+ description: "Kubernetes Deployment Tool: build docker image, compile Kubernetes YAML files, and apply them"
6
+ keywords: "Kubernetes Deployment"
7
+ skills: ""
8
+ meta_author: Tung Nguyen
9
+
10
+ # Google webmaster tools
11
+ google_verify:
12
+ google_analytics: "TODO: google_analytics"
13
+
14
+ # https://ssl.bing.com/webmaster/configure/verify/ownership Option 2 content= goes here
15
+ bing_verify:
16
+
17
+ # Contact form:
18
+ # - static : pass through formspree.io to validate email sending
19
+ # - disqus : replace contact form by disqus thread
20
+ # - comment the line below if you want to stick with the default PHP contact form
21
+ contact: static
22
+
23
+ # If you use disqus you need disqus shortname
24
+ # https://help.disqus.com/customer/portal/articles/466208
25
+ disqus_shortname:
26
+
27
+ # Color settings (hex-codes without the leading hash-tag)
28
+ color:
29
+ primary: 3972c7
30
+ primary-rgb: "24,288,156" #"128,179,255"
31
+ secondary: 2c3e50 #FD6E8A
32
+ secondary-dark: 233140 #A2122F
33
+ links: a3c8ff
34
+
35
+ # Footer settings
36
+ footer:
37
+ copyright: BoltOps, LLC
38
+ location: San Francisco, CA
39
+ social: BoltOps
40
+ credits:
41
+ contact: contact@boltops.com
42
+ phone:
43
+
44
+ # Social networks usernames (many more available: google-plus, flickr, dribbble, pinterest, instagram, tumblr, linkedin, etc.)
45
+ social:
46
+ - title: github
47
+ url: https://github.com/boltops-tools/kubes
48
+
49
+ # Credits content
50
+ credits:
51
+
52
+ # Build settings
53
+ markdown: kramdown
54
+ permalink: pretty
55
+
56
+ gh_url: https://github.com/boltops-tools/kubes
57
+
58
+ collections:
59
+ docs:
60
+ name: "Documentation"
61
+ output: true
62
+ reference:
63
+ name: "Reference"
64
+ output: true
65
+
66
+ defaults:
67
+ - values:
68
+ layout: default
69
+
70
+ plugins_dir:
71
+ # - jekyll-gzip - GitHub pages does not support this plugin.
@@ -0,0 +1,47 @@
1
+ ---
2
+ title: Auto Context
3
+ ---
4
+
5
+ Kubes supports automatically switching the kubectl context based on the `KUBES_ENV`. Since Kubernetes contexts are composed of three things: cluster, namespace, and user; this feature allows you to target any of them on a per `KUBES_ENV` basis.
6
+
7
+ ## Auto Context
8
+
9
+ The dev and prod environments can use different kubectl contexts based on what is configured by the Kubes config.rb:
10
+
11
+ ```ruby
12
+ Kubes.configure do |config|
13
+ config.kubectl.context = "..."
14
+ # config.kubectl.context_keep = true # keep the context after switching
15
+ end
16
+ ```
17
+
18
+ You can override configs on a per-env basis with `config/env` files. Examples:
19
+
20
+ .kubes/config/env/dev.rb
21
+
22
+ ```ruby
23
+ Kubes.configure do |config|
24
+ config.repo = "222222222222.dkr.ecr.us-west-2.amazonaws.com/demo"
25
+ config.kubectl.context = "dev-services"
26
+ end
27
+ ```
28
+
29
+ .kubes/config/env/prod.rb
30
+
31
+ ```ruby
32
+ Kubes.configure do |config|
33
+ config.repo = "333333333333.dkr.ecr.us-west-2.amazonaws.com/demo"
34
+ config.kubectl.context = "prod-services"
35
+ end
36
+ ```
37
+
38
+ ## Deploy
39
+
40
+ With this setup, when you deploy with kubes, it will automatically switch the kubectl context based on `KUBES_ENV`. Example:
41
+
42
+ KUBES_ENV=dev kubes deploy # to dev-services context
43
+ KUBES_ENV=prod kubes deploy # to prod-services context
44
+
45
+ ## context_keep Option
46
+
47
+ Setting `context_keep=true` option means after the context it switched, it stays switched. If `context_keep=false`, then Kubes will switch back to the previous context.
@@ -0,0 +1,9 @@
1
+ ---
2
+ title: Config
3
+ ---
4
+
5
+ You can customize the behavior of Kubes with configs. There are different types of configs:
6
+
7
+ * [Docker]({% link _docs/config/docker.md %}): Used to customize the docker command.
8
+ * [Env]({% link _docs/config/env.md %}): Used to override `config.rb` settings on a `KUBES_ENV` basis.
9
+ * [Kubectl]({% link _docs/config/env.md %}): Used to customize the kubectl command.
@@ -0,0 +1,70 @@
1
+ ---
2
+ title: Docker Config
3
+ ---
4
+
5
+ ## General
6
+
7
+ Kubes builds docker images by calling the docker build commands. Example:
8
+
9
+ kubes docker build
10
+
11
+ To push:
12
+
13
+ kubes docker push
14
+
15
+ ## Deploy
16
+
17
+ While building the docker image as a separate step can be useful, you can just use the deploy command, and kubes will automatically build the Docker image for you. Example:
18
+
19
+ kubes deploy web
20
+
21
+ If you want to skip the `docker build` phase of the deploy, you can run:
22
+
23
+ kubes deploy web --no-build
24
+
25
+ Also, kubes apply another way to skip the docker build:
26
+
27
+ kubes apply web
28
+
29
+ ## Customizing Args
30
+
31
+ Here are some examples of customizing the docker args.
32
+
33
+ .kubes/config/docker/args.rb
34
+
35
+ ```ruby
36
+ command("build",
37
+ args: ["--quiet"],
38
+ )
39
+
40
+ command("push",
41
+ args: ["--disable-content-trust"],
42
+ )
43
+ ```
44
+
45
+ ## Hooks
46
+
47
+ Here are some examples of running custom hooks before and after the docker commands.
48
+
49
+ .kubes/config/docker/hooks.rb
50
+
51
+ ```ruby
52
+ before("build",
53
+ execute: "echo 'docker build before hook'",
54
+ )
55
+
56
+ after("push",
57
+ execute: "echo 'docker push before hook'",
58
+ )
59
+ ```
60
+
61
+ ### exit on fail
62
+
63
+ By default, if the hook commands fail, then terraspace will exit with the original hook error code. You can change this behavior with the `exit_on_fail` option.
64
+
65
+ ```ruby
66
+ before("build"
67
+ execute: "/command/will/fail/but/will/continue",
68
+ exit_on_fail: false,
69
+ )
70
+ ```
@@ -0,0 +1,58 @@
1
+ ---
2
+ title: Env Config
3
+ ---
4
+
5
+ The `config.rb` is where you can configure Kubes settings:
6
+
7
+ .kubes/config.rb
8
+
9
+ ```ruby
10
+ Kubes.configure do |config|
11
+ config.repo = "111111111111.dkr.ecr.us-west-2.amazonaws.com/demo"
12
+ config.logger.level = "info"
13
+ # auto-switching
14
+ # config.kubectl.context = "dev-services"
15
+ # config.kubectl.context_keep = false
16
+ end
17
+ ```
18
+
19
+ ## Layering
20
+
21
+ You can override configs on a per-env basis with `config/env` files. Examples:
22
+
23
+ .kubes/config/env/dev.rb
24
+
25
+ ```ruby
26
+ Kubes.configure do |config|
27
+ config.repo = "222222222222.dkr.ecr.us-west-2.amazonaws.com/demo"
28
+ config.kubectl.context = "dev-services"
29
+ end
30
+ ```
31
+
32
+ .kubes/config/env/prod.rb
33
+
34
+ ```ruby
35
+ Kubes.configure do |config|
36
+ config.repo = "333333333333.dkr.ecr.us-west-2.amazonaws.com/demo"
37
+ config.kubectl.context = "prod-services"
38
+ end
39
+ ```
40
+
41
+ For more details refer to the [Layering Docs]({% link _docs/layering.md %}).
42
+
43
+ ## Auto-Switching Context
44
+
45
+ Kubes supports automatically switching the kubectl context based on `KUBES_ENV`. Example:
46
+
47
+ KUBES_ENV=dev kubes deploy
48
+ KUBES_ENV=prod kubes deploy # can use different kubectl context
49
+
50
+ So dev and prod can use different kubectl contexts based on what is configured by:
51
+
52
+ ```ruby
53
+ Kubes.configure do |config|
54
+ config.kubectl.context = "..."
55
+ end
56
+ ```
57
+
58
+ For more details refer to the [Auto Context Docs]({% link _docs/auto-context.md %}).
@@ -0,0 +1,61 @@
1
+ ---
2
+ title: Kubectl Config
3
+ ---
4
+
5
+ ## General
6
+
7
+ Kubes calls out the `kubectl` command. You can customize the command.
8
+
9
+ ## Args
10
+
11
+ Here are some examples of customizing the kubectl args.
12
+
13
+ .kubes/config/kubectl/args.rb
14
+
15
+ ```ruby
16
+ command("apply",
17
+ args: ["--validate=true"],
18
+ )
19
+
20
+ command("delete",
21
+ args: ["--grace-period=-1"],
22
+ )
23
+ ```
24
+
25
+ ## Hooks
26
+
27
+ Here are some examples of running custom hooks before and after the kubectl commands.
28
+
29
+ .kubes/config/kubectl/hooks.rb
30
+
31
+ ```ruby
32
+ before("apply",
33
+ execute: "kubectl apply -f .kubes/shared/namespace.yaml",
34
+ )
35
+
36
+ after("delete",
37
+ execute: "echo 'delete hook',
38
+ )
39
+ ```
40
+
41
+ You can use hooks to do things that may not make sense to do in the `.kubes/resources` definition. Here's an example of automatically creating the namespace.
42
+
43
+ .kubes/shared/namespace.yaml
44
+
45
+ ```yaml
46
+ apiVersion: v1
47
+ kind: Namespace
48
+ metadata:
49
+ name: demo
50
+ ```
51
+
52
+ ### exit on fail
53
+
54
+ By default, if the hook commands fail, then terraspace will exit with the original hook error code. You can change this behavior with the `exit_on_fail` option.
55
+
56
+ ```ruby
57
+ before("apply"
58
+ execute: "/command/will/fail/but/will/continue",
59
+ exit_on_fail: false,
60
+ )
61
+ ```
@@ -0,0 +1,98 @@
1
+ ---
2
+ title: Contributing
3
+ ---
4
+
5
+ Hi there! Are you interested in contributing to Kubes? We'd love your help. Kubes is an open-source project, built one contribution at a time by users like you.
6
+
7
+ ## Where to get help or report a problem
8
+
9
+ See [the support guidelines]({% link support.md %})
10
+
11
+ ## Ways to contribute
12
+
13
+ Whether you're a developer, an infrastructure engineer, or just an enthusiast, there are lots of ways to contribute. Here are a few ideas:
14
+
15
+ * [Install Kubes on your computer](https://https://kubes.guru.com/docs/install/) and kick the tires. Does it work? Does it do what you'd expect? If not, [open an issue](https://github.com/boltops-tools/kubes/issues/new/choose) and let us know.
16
+ * Comment on some of the project's [open issues](https://github.com/boltops-tools/kubes/issues). Have you experienced the same problem? Know a workaround? Do you have a suggestion for how the feature could be better?
17
+ * Read through [the documentation](https://https://kubes.guru.com/docs/), and click the "improve this page" button, any time you see something confusing or have a suggestion for something that could be improved.
18
+ * Find [an open issue](https://github.com/boltops-tools/kubes/issues) (especially [those labeled `help wanted`](https://github.com/boltops-tools/kubes/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)), and submit a proposed fix. If it's your first pull request, we promise we won't bite and are glad to answer any questions.
19
+ * Help evaluate [open pull requests](https://github.com/boltops-tools/kubes/pulls), by testing the changes locally and reviewing what's proposed.
20
+
21
+ ## Submitting a pull request
22
+
23
+ ### Pull requests generally
24
+
25
+ * The smaller the proposed change, the better. If you'd like to propose two unrelated changes, submit two pull requests.
26
+
27
+ * The more information, the better. Make judicious use of the pull request body. Describe what changes were made, why you made them, and what impact they will have for users.
28
+
29
+ * If this is your first pull request, it may help to [understand GitHub Flow](https://guides.github.com/introduction/flow/).
30
+
31
+ * If you're submitting a code contribution, be sure to read the [code contributions](#code-contributions) section below.
32
+
33
+ ### Submitting a pull request via github.com
34
+
35
+ Many small changes can be made entirely through the github.com web interface.
36
+
37
+ 1. Navigate to the file within [boltops-tools/kubes](https://github.com/boltops-tools/kubes) that you'd like to edit.
38
+ 2. Click the pencil icon in the top right corner to edit the file.
39
+ 3. Make your proposed changes.
40
+ 4. Click "Propose file change."
41
+ 5. Click "Create pull request."
42
+ 6. Add a descriptive title and detailed description for your proposed change. The more information, the better.
43
+ 7. Click "Create pull request."
44
+
45
+ That's it! You'll be automatically subscribed to receive updates as others review your proposed change and provide feedback.
46
+
47
+ ### Submitting a pull request via Git command line
48
+
49
+ 1. Fork the project by clicking "Fork" in the top right corner of [boltops-tools/kubes](https://github.com/boltops-tools/kubes).
50
+ 2. Clone the repository locally `git clone https://github.com/<your-username>/kubes`.
51
+ 3. Fetch submodules `git submodule init && git submodule update`.
52
+ 4. Create a new, descriptively named branch to contain your change ( `git checkout -b my-awesome-feature` ).
53
+ 5. Hack away, add tests. Not necessarily in that order.
54
+ 6. Make sure everything still passes by running `bundle exec rspec` (see [the tests section](#running-tests-locally) below)
55
+ 7. Push the branch up ( `git push origin my-awesome-feature` ).
56
+ 8. Create a pull request by visiting `https://github.com/<your-username>/kubes` and following the instructions at the top of the screen.
57
+
58
+ ## Proposing updates to the documentation
59
+
60
+ We want the Kubes documentation to be the best it can be. We've open-sourced our docs and we welcome any pull requests if you find it lacking.
61
+
62
+ ### How to submit changes
63
+
64
+ You can find the documentation for [https://kubes.guru](http://https://kubes.guru) in the [docs](https://github.com/boltops-tools/kubes/tree/master/docs) directory. See the section above, [submitting a pull request](#submitting-a-pull-request) for information on how to propose a change.
65
+
66
+ One gotcha, all pull requests should be directed at the `master` branch (the default branch).
67
+
68
+ ## Code Contributions
69
+
70
+ Interesting in submitting a pull request? Awesome. Read on. There are a few common gotchas that we'd love to help you avoid.
71
+
72
+ ### Tests and documentation
73
+
74
+ Any time you propose a code change, you should also include updates to the documentation and tests within the same pull request.
75
+
76
+ #### Documentation
77
+
78
+ If your contribution changes any Kubes behavior, make sure to update the documentation. Documentation lives in the `docs` folder. It's a Jekyll site and can be started with `cd docs && bin/web`. If the docs are missing information, please feel free to add it in. Great docs make a great project. Include changes to the documentation within your pull request, and once merged, `https://kubes.guru.com` will be updated.
79
+
80
+ #### Tests
81
+
82
+ * If you're creating a small fix or patch to an existing feature, a simple test is more than enough. You can usually copy/paste from an existing example in the `specs` folder.
83
+
84
+ ### Code contributions generally
85
+
86
+ * Don't bump the Gem version in your pull request (if you don't know what that means, you probably didn't).
87
+
88
+ ## Running tests
89
+
90
+ ### Test Dependencies
91
+
92
+ To run the test suite by running the following command:
93
+
94
+ bundle exec rspec
95
+
96
+ ## Thank You
97
+
98
+ Thanks! Hacking on Kubes should be fun. If you find any of this hard to figure out, let us know so we can improve our process or documentation!