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,82 @@
1
+ ---
2
+ title: Pod
3
+ categories: dsl
4
+ ---
5
+
6
+ ## Example
7
+
8
+ Here's an example of a Pod.
9
+
10
+ .kubes/resources/shared/pod.rb
11
+
12
+ ```ruby
13
+ name "busybox1"
14
+ hostname "busybox-1"
15
+ subdomain "default-subdomain"
16
+ containers([
17
+ image: "busybox:1.28",
18
+ command: ["sleep", "3600"],
19
+ name: "busybox",
20
+ ])
21
+ ```
22
+
23
+ Produces:
24
+
25
+ .kubes/output/shared/pod.yaml
26
+
27
+ ```yaml
28
+ apiVersion: v1
29
+ kind: Pod
30
+ metadata:
31
+ name: busybox1
32
+ spec:
33
+ containers:
34
+ - image: busybox:1.28
35
+ command:
36
+ - sleep
37
+ - '3600'
38
+ name: busybox
39
+ hostname: busybox-1
40
+ subdomain: default-subdomain
41
+ ```
42
+
43
+ ## DSL Methods
44
+
45
+ Here's a list of more common methods:
46
+
47
+ * activeDeadlineSeconds
48
+ * affinity
49
+ * automountServiceAccountToken
50
+ * containers
51
+ * dnsConfig
52
+ * dnsPolicy
53
+ * enableServiceLinks
54
+ * ephemeralContainers
55
+ * hostAliases
56
+ * hostIPC
57
+ * hostNetwork
58
+ * hostPID
59
+ * hostname
60
+ * imagePullSecrets
61
+ * initContainers
62
+ * nodeName
63
+ * nodeSelector
64
+ * overhead
65
+ * preemptionPolicy
66
+ * priority
67
+ * priorityClassName
68
+ * readinessGates
69
+ * restartPolicy
70
+ * runtimeClassName
71
+ * schedulerName
72
+ * securityContext
73
+ * serviceAccount
74
+ * serviceAccountName
75
+ * shareProcessNamespace
76
+ * subdomain
77
+ * terminationGracePeriodSeconds
78
+ * tolerations
79
+ * topologySpreadConstraints
80
+ * volumes
81
+
82
+ {% include dsl/methods.md name="pod" %}
@@ -0,0 +1,44 @@
1
+ ---
2
+ title: Role
3
+ categories: dsl
4
+ ---
5
+
6
+ ## Example
7
+
8
+ Here's an example of a Role.
9
+
10
+ .kubes/resources/shared/role.rb
11
+
12
+ ```ruby
13
+ name "demo"
14
+ apiGroups([""])
15
+ resources(["pods"])
16
+ verbs(["get", "watch", "list"])
17
+ ```
18
+
19
+ Produces:
20
+
21
+ .kubes/output/shared/role.yaml
22
+
23
+ ```yaml
24
+ apiVersion: rbac.authorization.k8s.io/v1
25
+ kind: Role
26
+ metadata:
27
+ name: demo
28
+ rules:
29
+ - apiGroups:
30
+ - ''
31
+ resources:
32
+ - pods
33
+ verbs:
34
+ - get
35
+ - watch
36
+ - list
37
+ ```
38
+
39
+ ## DSL Methods
40
+
41
+ Here's the source of the Role resource.
42
+
43
+ {% include dsl/methods.md name="role" %}
44
+
@@ -0,0 +1,55 @@
1
+ ---
2
+ title: RoleBinding
3
+ categories: dsl
4
+ ---
5
+
6
+ ## Example
7
+
8
+ Here's an example of a RoleBinding.
9
+
10
+ .kubes/resources/shared/role_binding.rb
11
+
12
+ ```ruby
13
+ name "demo"
14
+
15
+ subjects([
16
+ {kind: "User", name: "tung@boltops.com"},
17
+ ])
18
+
19
+ roleName "demo"
20
+ ```
21
+
22
+ Produces:
23
+
24
+ .kubes/output/shared/role_binding.yaml
25
+
26
+ ```yaml
27
+ apiVersion: rbac.authorization.k8s.io/v1
28
+ kind: RoleBinding
29
+ metadata:
30
+ name: demo
31
+ roleRef:
32
+ apiGroup: rbac.authorization.k8s.io
33
+ kind: Role
34
+ name: demo
35
+ subjects:
36
+ - kind: User
37
+ name: tung@boltops.com
38
+ ```
39
+
40
+ ## DSL Methods
41
+
42
+ Here's a list of more common methods:
43
+
44
+ Top-level methods:
45
+
46
+ * roleRef
47
+ * subjects
48
+
49
+ roleRef level methods
50
+
51
+ * apiGroup
52
+ * roleKind
53
+ * roleName
54
+
55
+ {% include dsl/methods.md name="role_binding" %}
@@ -0,0 +1,87 @@
1
+ ---
2
+ title: Secret
3
+ categories: dsl
4
+ ---
5
+
6
+ ## Example
7
+
8
+ Here's an example of a Secret.
9
+
10
+ .kubes/resources/shared/secret.rb
11
+
12
+ ```ruby
13
+ name "demo-secret"
14
+ data(
15
+ username: base64("user"),
16
+ password: base64("pass"),
17
+ )
18
+ ```
19
+
20
+ Produces:
21
+
22
+ .kubes/output/shared/service.yaml
23
+
24
+ ```yaml
25
+ apiVersion: v1
26
+ kind: Secret
27
+ metadata:
28
+ name: demo-secret-cfbd534f91
29
+ labels:
30
+ app: demo
31
+ namespace: default
32
+ data:
33
+ username: dXNlcg==
34
+ password: cGFzcw==
35
+ ```
36
+
37
+ ## Suffix Hash
38
+
39
+ {% include dsl/rolling_deployment.md kind="Secret" %}
40
+
41
+ .kubes/output/web/deployment.yaml:
42
+
43
+ ```yaml
44
+ # ..
45
+ spec:
46
+ template:
47
+ spec:
48
+ containers:
49
+ - name: demo-shared
50
+ image: nginx
51
+ envFrom:
52
+ - secretRef:
53
+ name: demo-secret-cfbd534f91
54
+ ```
55
+
56
+ {% include dsl/suffix_hash.md %}
57
+
58
+ ## Files Helper
59
+
60
+ You can use a `files` helper to load secrets values from one or more files.
61
+
62
+
63
+ .kubes/resources/shared/secret.rb
64
+
65
+ ```ruby
66
+ name "demo-secret"
67
+ files("files/secrets.txt")
68
+ ```
69
+
70
+ The `files/secrets.txt` should be in the same folder as the `secret.rb` definition. Example:
71
+
72
+ .kubes/resources/shared/files/secret.txt
73
+
74
+ SECRET1=value1
75
+ SECRET2=value2
76
+
77
+ You do not have to worry about base64 encoding the values. Kubes automatically base64 encodes the values.
78
+
79
+ ## DSL Methods
80
+
81
+ Here's a list of more common methods:
82
+
83
+ * data
84
+ * stringData
85
+ * type
86
+
87
+ {% include dsl/methods.md name="secret" %}
@@ -0,0 +1,60 @@
1
+ ---
2
+ title: Service
3
+ categories: dsl
4
+ ---
5
+
6
+ ## Example
7
+
8
+ Here's an example of a Service.
9
+
10
+ .kubes/resources/web/service.rb
11
+
12
+ ```ruby
13
+ name "demo-web"
14
+ labels(role: "web")
15
+ namespace "default"
16
+
17
+ # Optional since these are the defaults
18
+ # port 80
19
+ # targetPort 80
20
+ #
21
+ # type "NodePort"
22
+ ```
23
+
24
+ Produces:
25
+
26
+ .kubes/output/web/service.yaml
27
+
28
+ ```yaml
29
+ ---
30
+ apiVersion: v1
31
+ kind: Service
32
+ metadata:
33
+ name: demo-web
34
+ labels:
35
+ app: demo
36
+ namespace: demo
37
+ spec:
38
+ ports:
39
+ - port: 80
40
+ protocol: TCP
41
+ targetPort: 8080
42
+ selector:
43
+ app: demo
44
+ type: NodePort
45
+ ```
46
+
47
+ ## DSL Methods
48
+
49
+ Here's a list of more common methods:
50
+
51
+ * nodePort
52
+ * port
53
+ * portName: Note this field doesn't match the original field name. It's more qualified.
54
+ * ports
55
+ * protocol
56
+ * selector
57
+ * targetPort
58
+ * type
59
+
60
+ {% include dsl/methods.md name="service" %}
@@ -0,0 +1,37 @@
1
+ ---
2
+ title: ServiceAccount
3
+ categories: dsl
4
+ ---
5
+
6
+ ## Example
7
+
8
+ Here's an example of a ServiceAccount.
9
+
10
+ .kubes/resources/shared/service_account.rb
11
+
12
+ ```ruby
13
+ name "demo"
14
+ ```
15
+
16
+ Produces:
17
+
18
+ .kubes/output/shared/service_account.yaml
19
+
20
+ ```yaml
21
+ apiVersion: v1
22
+ kind: ServiceAccount
23
+ metadata:
24
+ name: demo
25
+ ```
26
+
27
+ ## DSL Methods
28
+
29
+ Here's a list of more common methods:
30
+
31
+ Top-level methods:
32
+
33
+ * automountServiceAccountToken
34
+ * imagePullSecrets
35
+ * secrets
36
+
37
+ {% include dsl/methods.md name="service_account" %}
@@ -0,0 +1,23 @@
1
+ ---
2
+ title: Extra Environments
3
+ ---
4
+
5
+ Kubes adds the concept of extra environments. Let say, you have a demo-web app with a deployment and service.
6
+
7
+ .kubes/resources
8
+ └── web
9
+ ├── deployment.rb
10
+ └── service.rb
11
+
12
+ You can create additional environments using the same resource files with a few minor changes.
13
+
14
+ * [DSL Example]({% link _docs/extra-env/dsl.md %})
15
+ * [YAML Example]({% link _docs/extra-env/yaml.md %})
16
+
17
+ ## Deploy
18
+
19
+ Then to create an additional environment, it's simple:
20
+
21
+ KUBES_EXTRA=2 kubes deploy
22
+ KUBES_EXTRA=3 kubes deploy
23
+ # etc
@@ -0,0 +1,86 @@
1
+ ---
2
+ title: DSL Example
3
+ ---
4
+
5
+ Kubes provides helper methods to make creating extra environments easy: `with_extra`. We'll create extra environments under different namespaces.
6
+
7
+ Here's how you achieve extra environments with the DSL form:
8
+
9
+ .kubes/resources/web/deployment.rb
10
+
11
+ ```ruby
12
+ name "demo-web"
13
+ labels(role: "web")
14
+ namespace with_extra("default")
15
+
16
+ replicas 1
17
+ image built_image # IE: user/demo-web:kubes-2020-06-13T19-55-16-43afc6e
18
+ ```
19
+
20
+ .kubes/resources/web/service.rb
21
+
22
+ ```ruby
23
+ name "demo-web"
24
+ labels(role: "web")
25
+ namespace with_extra("default")
26
+ ```
27
+
28
+ The `name` helper accounts for `KUBES_EXTRA` and appends the value.
29
+
30
+ ## Deployment
31
+
32
+ Then to create an additional environment, it's simple:
33
+
34
+ kubectl create ns default-2
35
+ KUBES_EXTRA=2 kubes deploy
36
+
37
+ To check on the resources:
38
+
39
+ kubectl get all -n default-2
40
+
41
+ ## Using Different Name Instead
42
+
43
+ The example on this page uses the `with_extra` helper to create the deployment and service in another namespace. Another approach is to use the same namespace but different names based on `KUBES_EXTRA`. We also used the `extra` helper here, which is the `KUBES_EXTRA` value. Examples:
44
+
45
+ .kubes/resources/web/deployment.rb
46
+
47
+ ```ruby
48
+ name with_extra("demo-web")
49
+ labels(app: name, extra: extra)
50
+ namespace "default"
51
+
52
+ replicas 1
53
+ image built_image # IE: user/demo-web:kubes-2020-06-13T19-55-16-43afc6e
54
+ ```
55
+
56
+ .kubes/resources/web/service.rb
57
+
58
+ ```ruby
59
+ name with_extra("demo-web")
60
+ labels(app: name, extra: extra)
61
+ namespace "default"
62
+ ```
63
+
64
+ Adding label with the `extra` key is optional, but helps with filtering the resources.
65
+
66
+ kubectl get all -l extra=2
67
+ kubectl get all -l extra=3
68
+
69
+ Example:
70
+
71
+ $ kubectl get all -l extra=2
72
+ NAME READY STATUS RESTARTS AGE
73
+ pod/demo-web-2-5f8b8cbcdc-dmbjj 1/1 Running 0 78s
74
+ pod/demo-web-2-5f8b8cbcdc-kg8hf 1/1 Running 0 78s
75
+
76
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
77
+ service/demo-web-2 NodePort 172.16.158.166 <none> 80:30148/TCP 78s
78
+
79
+ NAME READY UP-TO-DATE AVAILABLE AGE
80
+ deployment.apps/demo-web-2 2/2 2 2 78s
81
+
82
+ NAME DESIRED CURRENT READY AGE
83
+ replicaset.apps/demo-web-2-5f8b8cbcdc 2 2 2 79s
84
+ $
85
+
86
+ The `extra` and `with_extra` helper methods provide flexibility to create these extra environments with either approach.