kubes 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.gitignore +15 -7
- data/.rspec +3 -0
- data/CHANGELOG.md +10 -0
- data/Gemfile +3 -1
- data/Guardfile +19 -0
- data/LICENSE.txt +201 -0
- data/README.md +46 -18
- data/Rakefile +13 -1
- data/docs/.gitignore +5 -0
- data/docs/CNAME +1 -0
- data/docs/Gemfile +16 -0
- data/docs/LICENSE +201 -0
- data/docs/Procfile +2 -0
- data/docs/README.md +24 -0
- data/docs/Rakefile +38 -0
- data/docs/_config.yml +71 -0
- data/docs/_docs/auto-context.md +47 -0
- data/docs/_docs/config.md +9 -0
- data/docs/_docs/config/docker.md +70 -0
- data/docs/_docs/config/env.md +58 -0
- data/docs/_docs/config/kubectl.md +61 -0
- data/docs/_docs/contributing.md +98 -0
- data/docs/_docs/dsl.md +66 -0
- data/docs/_docs/dsl/multiple-resources.md +114 -0
- data/docs/_docs/dsl/resources.md +12 -0
- data/docs/_docs/dsl/resources/backend_config.md +45 -0
- data/docs/_docs/dsl/resources/config_map.md +84 -0
- data/docs/_docs/dsl/resources/daemon_set.md +58 -0
- data/docs/_docs/dsl/resources/deployment.md +142 -0
- data/docs/_docs/dsl/resources/generic.md +58 -0
- data/docs/_docs/dsl/resources/ingress.md +103 -0
- data/docs/_docs/dsl/resources/managed_certificate.md +39 -0
- data/docs/_docs/dsl/resources/namespace.md +34 -0
- data/docs/_docs/dsl/resources/network_policy.md +45 -0
- data/docs/_docs/dsl/resources/pod.md +82 -0
- data/docs/_docs/dsl/resources/role.md +44 -0
- data/docs/_docs/dsl/resources/role_binding.md +55 -0
- data/docs/_docs/dsl/resources/secret.md +87 -0
- data/docs/_docs/dsl/resources/service.md +60 -0
- data/docs/_docs/dsl/resources/service_account.md +37 -0
- data/docs/_docs/extra-env.md +23 -0
- data/docs/_docs/extra-env/dsl.md +86 -0
- data/docs/_docs/extra-env/yaml.md +67 -0
- data/docs/_docs/helpers.md +18 -0
- data/docs/_docs/intro.md +15 -0
- data/docs/_docs/intro/concepts.md +37 -0
- data/docs/_docs/intro/how-kubes-works.md +29 -0
- data/docs/_docs/intro/install.md +6 -0
- data/docs/_docs/intro/ordering.md +63 -0
- data/docs/_docs/intro/ordering/custom.md +25 -0
- data/docs/_docs/intro/structure.md +43 -0
- data/docs/_docs/kustomize.md +54 -0
- data/docs/_docs/layering.md +8 -0
- data/docs/_docs/layering/dsl.md +5 -0
- data/docs/_docs/layering/merge.md +96 -0
- data/docs/_docs/layering/yaml.md +5 -0
- data/docs/_docs/learn/dsl.md +5 -0
- data/docs/_docs/learn/dsl/change.md +16 -0
- data/docs/_docs/learn/dsl/cluster.md +5 -0
- data/docs/_docs/learn/dsl/delete.md +30 -0
- data/docs/_docs/learn/dsl/deploy.md +61 -0
- data/docs/_docs/learn/dsl/install.md +5 -0
- data/docs/_docs/learn/dsl/new-project.md +33 -0
- data/docs/_docs/learn/dsl/next-steps.md +5 -0
- data/docs/_docs/learn/dsl/review-project.md +52 -0
- data/docs/_docs/learn/dsl/update.md +53 -0
- data/docs/_docs/learn/yaml.md +5 -0
- data/docs/_docs/learn/yaml/change.md +17 -0
- data/docs/_docs/learn/yaml/cluster.md +5 -0
- data/docs/_docs/learn/yaml/delete.md +30 -0
- data/docs/_docs/learn/yaml/deploy.md +62 -0
- data/docs/_docs/learn/yaml/install.md +5 -0
- data/docs/_docs/learn/yaml/new-project.md +36 -0
- data/docs/_docs/learn/yaml/next-steps.md +5 -0
- data/docs/_docs/learn/yaml/review-project.md +97 -0
- data/docs/_docs/learn/yaml/update.md +54 -0
- data/docs/_docs/next-steps.md +13 -0
- data/docs/_docs/patterns.md +7 -0
- data/docs/_docs/patterns/clock-web-worker.md +71 -0
- data/docs/_docs/resources.md +11 -0
- data/docs/_docs/resources/base.md +33 -0
- data/docs/_docs/resources/role.md +41 -0
- data/docs/_docs/resources/shared.md +36 -0
- data/docs/_docs/yaml.md +46 -0
- data/docs/_includes/commands.html +131 -0
- data/docs/_includes/content.html +25 -0
- data/docs/_includes/dsl/methods.md +1 -0
- data/docs/_includes/dsl/rolling_deployment.md +1 -0
- data/docs/_includes/dsl/suffix_hash.md +8 -0
- data/docs/_includes/example.html +12 -0
- data/docs/_includes/footer.html +37 -0
- data/docs/_includes/google_analytics.html +10 -0
- data/docs/_includes/header.html +31 -0
- data/docs/_includes/intro/install.md +15 -0
- data/docs/_includes/js.html +3 -0
- data/docs/_includes/kubes-steps.md +3 -0
- data/docs/_includes/layering/layers.md +64 -0
- data/docs/_includes/learn/cluster.md +22 -0
- data/docs/_includes/learn/next-steps.md +6 -0
- data/docs/_includes/learn/review.md +25 -0
- data/docs/_includes/learn/start.md +3 -0
- data/docs/_includes/reference.md +3 -0
- data/docs/_includes/sidebar.html +113 -0
- data/docs/_layouts/default.html +35 -0
- data/docs/_reference/kubes-apply.md +24 -0
- data/docs/_reference/kubes-clean.md +22 -0
- data/docs/_reference/kubes-compile.md +22 -0
- data/docs/_reference/kubes-completion.md +42 -0
- data/docs/_reference/kubes-completion_script.md +25 -0
- data/docs/_reference/kubes-delete.md +23 -0
- data/docs/_reference/kubes-deploy.md +35 -0
- data/docs/_reference/kubes-docker-build.md +20 -0
- data/docs/_reference/kubes-docker-help.md +15 -0
- data/docs/_reference/kubes-docker-push.md +20 -0
- data/docs/_reference/kubes-docker.md +25 -0
- data/docs/_reference/kubes-init.md +26 -0
- data/docs/_reference/kubes-version.md +21 -0
- data/docs/_sass/bootstrap-overrides.scss +17 -0
- data/docs/_sass/buttons.scss +62 -0
- data/docs/_sass/caret.scss +39 -0
- data/docs/_sass/content.scss +21 -0
- data/docs/_sass/cta.scss +39 -0
- data/docs/_sass/default.scss +103 -0
- data/docs/_sass/footer.scss +66 -0
- data/docs/_sass/masthead.scss +77 -0
- data/docs/_sass/mixins.scss +79 -0
- data/docs/_sass/sidebar.scss +107 -0
- data/docs/_sass/syntax.scss +89 -0
- data/docs/_sass/table.scss +30 -0
- data/docs/_sass/theme.scss +292 -0
- data/docs/_sass/variables.scss +24 -0
- data/docs/bin/build +4 -0
- data/docs/bin/rerun +2 -0
- data/docs/bin/web +8 -0
- data/docs/css/main.scss +24 -0
- data/docs/docs.md +7 -0
- data/docs/getting-started.md +12 -0
- data/docs/img/logos/boltops-logo-full.png +0 -0
- data/docs/img/logos/boltops-logo.png +0 -0
- data/docs/img/logos/filler-logo.png +0 -0
- data/docs/img/logos/kubes-black.png +0 -0
- data/docs/img/logos/kubes-sign.png +0 -0
- data/docs/index.html +34 -0
- data/docs/js/app.js +39414 -0
- data/docs/opal/app.rb +16 -0
- data/docs/opal/pager.rb +90 -0
- data/docs/opal/sidebar.rb +94 -0
- data/docs/opal/sidebar/expander.rb +51 -0
- data/docs/reference.md +15 -0
- data/docs/support.md +19 -0
- data/docs/vendor/bootstrap/css/bootstrap-grid.css +3719 -0
- data/docs/vendor/bootstrap/css/bootstrap-grid.css.map +1 -0
- data/docs/vendor/bootstrap/css/bootstrap-grid.min.css +7 -0
- data/docs/vendor/bootstrap/css/bootstrap-grid.min.css.map +1 -0
- data/docs/vendor/bootstrap/css/bootstrap-reboot.css +331 -0
- data/docs/vendor/bootstrap/css/bootstrap-reboot.css.map +1 -0
- data/docs/vendor/bootstrap/css/bootstrap-reboot.min.css +8 -0
- data/docs/vendor/bootstrap/css/bootstrap-reboot.min.css.map +1 -0
- data/docs/vendor/bootstrap/css/bootstrap.css +10038 -0
- data/docs/vendor/bootstrap/css/bootstrap.css.map +1 -0
- data/docs/vendor/bootstrap/css/bootstrap.min.css +7 -0
- data/docs/vendor/bootstrap/css/bootstrap.min.css.map +1 -0
- data/docs/vendor/bootstrap/js/bootstrap.bundle.js +7013 -0
- data/docs/vendor/bootstrap/js/bootstrap.bundle.js.map +1 -0
- data/docs/vendor/bootstrap/js/bootstrap.bundle.min.js +7 -0
- data/docs/vendor/bootstrap/js/bootstrap.bundle.min.js.map +1 -0
- data/docs/vendor/bootstrap/js/bootstrap.js +4435 -0
- data/docs/vendor/bootstrap/js/bootstrap.js.map +1 -0
- data/docs/vendor/bootstrap/js/bootstrap.min.js +7 -0
- data/docs/vendor/bootstrap/js/bootstrap.min.js.map +1 -0
- data/docs/vendor/font-awesome/css/font-awesome.css +2337 -0
- data/docs/vendor/font-awesome/css/font-awesome.min.css +4 -0
- data/docs/vendor/font-awesome/fonts/FontAwesome.otf +0 -0
- data/docs/vendor/font-awesome/fonts/fontawesome-webfont.eot +0 -0
- data/docs/vendor/font-awesome/fonts/fontawesome-webfont.svg +2671 -0
- data/docs/vendor/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
- data/docs/vendor/font-awesome/fonts/fontawesome-webfont.woff +0 -0
- data/docs/vendor/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
- data/docs/vendor/font-awesome/less/animated.less +34 -0
- data/docs/vendor/font-awesome/less/bordered-pulled.less +25 -0
- data/docs/vendor/font-awesome/less/core.less +12 -0
- data/docs/vendor/font-awesome/less/fixed-width.less +6 -0
- data/docs/vendor/font-awesome/less/font-awesome.less +18 -0
- data/docs/vendor/font-awesome/less/icons.less +789 -0
- data/docs/vendor/font-awesome/less/larger.less +13 -0
- data/docs/vendor/font-awesome/less/list.less +19 -0
- data/docs/vendor/font-awesome/less/mixins.less +60 -0
- data/docs/vendor/font-awesome/less/path.less +15 -0
- data/docs/vendor/font-awesome/less/rotated-flipped.less +20 -0
- data/docs/vendor/font-awesome/less/screen-reader.less +5 -0
- data/docs/vendor/font-awesome/less/stacked.less +20 -0
- data/docs/vendor/font-awesome/less/variables.less +799 -0
- data/docs/vendor/font-awesome/scss/_animated.scss +34 -0
- data/docs/vendor/font-awesome/scss/_bordered-pulled.scss +25 -0
- data/docs/vendor/font-awesome/scss/_core.scss +12 -0
- data/docs/vendor/font-awesome/scss/_fixed-width.scss +6 -0
- data/docs/vendor/font-awesome/scss/_icons.scss +789 -0
- data/docs/vendor/font-awesome/scss/_larger.scss +13 -0
- data/docs/vendor/font-awesome/scss/_list.scss +19 -0
- data/docs/vendor/font-awesome/scss/_mixins.scss +60 -0
- data/docs/vendor/font-awesome/scss/_path.scss +15 -0
- data/docs/vendor/font-awesome/scss/_rotated-flipped.scss +20 -0
- data/docs/vendor/font-awesome/scss/_screen-reader.scss +5 -0
- data/docs/vendor/font-awesome/scss/_stacked.scss +20 -0
- data/docs/vendor/font-awesome/scss/_variables.scss +799 -0
- data/docs/vendor/font-awesome/scss/font-awesome.scss +18 -0
- data/docs/vendor/jquery/jquery.js +10598 -0
- data/docs/vendor/jquery/jquery.min.js +2 -0
- data/docs/vendor/jquery/jquery.min.map +1 -0
- data/docs/vendor/jquery/jquery.slim.js +8495 -0
- data/docs/vendor/jquery/jquery.slim.min.js +2 -0
- data/docs/vendor/jquery/jquery.slim.min.map +1 -0
- data/docs/vendor/simple-line-icons/css/simple-line-icons.css +778 -0
- data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.eot +0 -0
- data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.svg +200 -0
- data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.ttf +0 -0
- data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.woff +0 -0
- data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.woff2 +0 -0
- data/docs/vendor/simple-line-icons/less/simple-line-icons.less +982 -0
- data/docs/vendor/simple-line-icons/scss/simple-line-icons.scss +979 -0
- data/exe/kubes +14 -0
- data/kubes.gemspec +29 -19
- data/lib/kubes.rb +21 -1
- data/lib/kubes/args/custom.rb +30 -0
- data/lib/kubes/args/dsl.rb +14 -0
- data/lib/kubes/auth.rb +21 -0
- data/lib/kubes/auth/ecr.rb +55 -0
- data/lib/kubes/autoloader.rb +21 -0
- data/lib/kubes/aws_services.rb +14 -0
- data/lib/kubes/cli.rb +93 -0
- data/lib/kubes/cli/apply.rb +9 -0
- data/lib/kubes/cli/base.rb +9 -0
- data/lib/kubes/cli/build.rb +8 -0
- data/lib/kubes/cli/clean.rb +9 -0
- data/lib/kubes/cli/compile.rb +8 -0
- data/lib/kubes/cli/delete.rb +11 -0
- data/lib/kubes/cli/deploy.rb +13 -0
- data/lib/kubes/cli/describe.rb +8 -0
- data/lib/kubes/cli/docker.rb +20 -0
- data/lib/kubes/cli/get.rb +8 -0
- data/lib/kubes/cli/help.rb +11 -0
- data/lib/kubes/cli/help/completion.md +20 -0
- data/lib/kubes/cli/help/completion_script.md +3 -0
- data/lib/kubes/cli/help/deploy.md +10 -0
- data/lib/kubes/cli/init.rb +69 -0
- data/lib/kubes/cli/sequence.rb +27 -0
- data/lib/kubes/command.rb +100 -0
- data/lib/kubes/compiler.rb +71 -0
- data/lib/kubes/compiler/decorator.rb +17 -0
- data/lib/kubes/compiler/decorator/base.rb +16 -0
- data/lib/kubes/compiler/decorator/compile.rb +12 -0
- data/lib/kubes/compiler/decorator/resources/base.rb +13 -0
- data/lib/kubes/compiler/decorator/resources/container.rb +76 -0
- data/lib/kubes/compiler/decorator/resources/container/mapping.rb +28 -0
- data/lib/kubes/compiler/decorator/resources/deployment.rb +10 -0
- data/lib/kubes/compiler/decorator/resources/pod.rb +10 -0
- data/lib/kubes/compiler/decorator/resources/secret.rb +23 -0
- data/lib/kubes/compiler/decorator/write.rb +14 -0
- data/lib/kubes/compiler/dsl/core/base.rb +27 -0
- data/lib/kubes/compiler/dsl/core/blocks.rb +55 -0
- data/lib/kubes/compiler/dsl/core/fields.rb +78 -0
- data/lib/kubes/compiler/dsl/core/files.rb +28 -0
- data/lib/kubes/compiler/dsl/core/helpers.rb +4 -0
- data/lib/kubes/compiler/dsl/core/parser.rb +43 -0
- data/lib/kubes/compiler/dsl/syntax/backend_config.rb +10 -0
- data/lib/kubes/compiler/dsl/syntax/cluster_role.rb +4 -0
- data/lib/kubes/compiler/dsl/syntax/cluster_role_binding.rb +4 -0
- data/lib/kubes/compiler/dsl/syntax/config_map.rb +20 -0
- data/lib/kubes/compiler/dsl/syntax/daemon_set.rb +23 -0
- data/lib/kubes/compiler/dsl/syntax/deployment.rb +163 -0
- data/lib/kubes/compiler/dsl/syntax/ingress.rb +41 -0
- data/lib/kubes/compiler/dsl/syntax/managed_certificate.rb +18 -0
- data/lib/kubes/compiler/dsl/syntax/namespace.rb +13 -0
- data/lib/kubes/compiler/dsl/syntax/network_policy.rb +30 -0
- data/lib/kubes/compiler/dsl/syntax/pod.rb +81 -0
- data/lib/kubes/compiler/dsl/syntax/resource.rb +70 -0
- data/lib/kubes/compiler/dsl/syntax/role.rb +40 -0
- data/lib/kubes/compiler/dsl/syntax/role_binding.rb +43 -0
- data/lib/kubes/compiler/dsl/syntax/secret.rb +22 -0
- data/lib/kubes/compiler/dsl/syntax/service.rb +68 -0
- data/lib/kubes/compiler/dsl/syntax/service_account.rb +20 -0
- data/lib/kubes/compiler/layering.rb +39 -0
- data/lib/kubes/compiler/shared/helpers.rb +30 -0
- data/lib/kubes/compiler/strategy.rb +27 -0
- data/lib/kubes/compiler/strategy/base.rb +13 -0
- data/lib/kubes/compiler/strategy/dsl.rb +32 -0
- data/lib/kubes/compiler/strategy/erb.rb +42 -0
- data/lib/kubes/compiler/strategy/pass.rb +9 -0
- data/lib/kubes/compiler/strategy/result.rb +26 -0
- data/lib/kubes/compiler/util/normalize.rb +11 -0
- data/lib/kubes/compiler/util/yaml_dump.rb +23 -0
- data/lib/kubes/completer.rb +159 -0
- data/lib/kubes/completer/script.rb +6 -0
- data/lib/kubes/completer/script.sh +10 -0
- data/lib/kubes/config.rb +82 -0
- data/lib/kubes/core.rb +32 -0
- data/lib/kubes/docker/args/default.rb +39 -0
- data/lib/kubes/docker/base.rb +88 -0
- data/lib/kubes/docker/build.rb +33 -0
- data/lib/kubes/docker/push.rb +33 -0
- data/lib/kubes/hooks/builder.rb +41 -0
- data/lib/kubes/hooks/dsl.rb +19 -0
- data/lib/kubes/kubectl.rb +87 -0
- data/lib/kubes/kubectl/args/base.rb +12 -0
- data/lib/kubes/kubectl/args/kustomize.rb +28 -0
- data/lib/kubes/kubectl/args/standard.rb +32 -0
- data/lib/kubes/kubectl/batch.rb +49 -0
- data/lib/kubes/kubectl/decider.rb +15 -0
- data/lib/kubes/kubectl/kustomize.rb +13 -0
- data/lib/kubes/kubectl/ordering.rb +27 -0
- data/lib/kubes/logger.rb +26 -0
- data/lib/kubes/logging.rb +7 -0
- data/lib/kubes/util/consider.rb +9 -0
- data/lib/kubes/util/sh.rb +43 -0
- data/lib/kubes/util/sure.rb +17 -0
- data/lib/kubes/util/time.rb +14 -0
- data/lib/kubes/version.rb +1 -1
- data/lib/templates/base/.kubes/config.rb.tt +9 -0
- data/lib/templates/base/.kubes/config/env/dev.rb +6 -0
- data/lib/templates/base/.kubes/config/env/prod.rb +6 -0
- data/lib/templates/docker/Dockerfile +4 -0
- data/lib/templates/dsl/.kubes/resources/base/all.rb.tt +2 -0
- data/lib/templates/dsl/.kubes/resources/web/deployment.rb.tt +7 -0
- data/lib/templates/dsl/.kubes/resources/web/deployment/dev.rb +1 -0
- data/lib/templates/dsl/.kubes/resources/web/deployment/prod.rb +1 -0
- data/lib/templates/dsl/.kubes/resources/web/service.rb.tt +8 -0
- data/lib/templates/yaml/.kubes/resources/base/all.yaml.tt +2 -0
- data/lib/templates/yaml/.kubes/resources/base/deployment.yaml.tt +11 -0
- data/lib/templates/yaml/.kubes/resources/web/deployment.yaml.tt +24 -0
- data/lib/templates/yaml/.kubes/resources/web/deployment/dev.yaml +2 -0
- data/lib/templates/yaml/.kubes/resources/web/deployment/prod.yaml +2 -0
- data/lib/templates/yaml/.kubes/resources/web/service.yaml.tt +14 -0
- data/spec/cli_spec.rb +8 -0
- data/spec/fixtures/artifacts/demo-web/deployment.yaml +26 -0
- data/spec/fixtures/artifacts/demo-web/service.yaml +16 -0
- data/spec/fixtures/blocks/deployments.rb +9 -0
- data/spec/fixtures/decorators/deployment/configMap/envFrom.yaml +27 -0
- data/spec/fixtures/decorators/deployment/configMap/valueFrom.yaml +30 -0
- data/spec/fixtures/decorators/deployment/configMap/volumes.yaml +34 -0
- data/spec/fixtures/decorators/deployment/secret/envFrom.yaml +27 -0
- data/spec/fixtures/decorators/deployment/secret/valueFrom.yaml +30 -0
- data/spec/fixtures/decorators/deployment/secret/volumes.yaml +34 -0
- data/spec/fixtures/decorators/pod/configMap/envFrom.yaml +12 -0
- data/spec/fixtures/decorators/pod/configMap/valueFrom.yaml +16 -0
- data/spec/fixtures/decorators/pod/configMap/volumes.yaml +19 -0
- data/spec/fixtures/decorators/pod/secret/envFrom.yaml +12 -0
- data/spec/fixtures/decorators/pod/secret/valueFrom.yaml +16 -0
- data/spec/fixtures/decorators/pod/secret/volumes.yaml +19 -0
- data/spec/fixtures/deployments/minimum.rb +5 -0
- data/spec/fixtures/deployments/props.rb +7 -0
- data/spec/fixtures/deployments/setter/container.rb +11 -0
- data/spec/fixtures/deployments/setter/containers.rb +14 -0
- data/spec/fixtures/deployments/setter/metadata.rb +15 -0
- data/spec/fixtures/deployments/setter/sidecar.rb +12 -0
- data/spec/fixtures/deployments/setter/spec.rb +10 -0
- data/spec/fixtures/multiple-files/deployment-1.rb +4 -0
- data/spec/fixtures/multiple-files/deployment-2.rb +4 -0
- data/spec/fixtures/project/.gitignore +1 -0
- data/spec/fixtures/project/.kubes/resources/deployment.rb +32 -0
- data/spec/fixtures/project/.kubes/resources/foobar.rb +0 -0
- data/spec/fixtures/project/.kubes/resources/service.rb +3 -0
- data/spec/fixtures/services/minimum.rb +3 -0
- data/spec/fixtures/syntax/network_policy.rb +3 -0
- data/spec/fixtures/syntax/pod.rb +1 -0
- data/spec/kubes/compiler/decorator/resources/deployment_spec.rb +92 -0
- data/spec/kubes/compiler/decorator/resources/pod_spec.rb +92 -0
- data/spec/kubes/compiler/strategy/dsl_spec.rb +36 -0
- data/spec/kubes/compiler_spec.rb +10 -0
- data/spec/kubes/dsl/daemon_set.rb +11 -0
- data/spec/kubes/dsl/deployment_spec.rb +60 -0
- data/spec/kubes/dsl/network_policy_spec.rb +14 -0
- data/spec/kubes/dsl/pod_spec.rb +11 -0
- data/spec/kubes/dsl/service_spec.rb +12 -0
- data/spec/kubes/kubectl/batch_spec.rb +24 -0
- data/spec/spec_helper.rb +34 -0
- metadata +602 -22
- data/bin/console +0 -14
- data/bin/setup +0 -8
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Next Steps
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Hopefully, you have a good feel for how kubes works now. From here, there are a few resources that can help you continue along:
|
|
6
|
+
|
|
7
|
+
* Check out the [kubes](https://github.com/boltops-tools/kubes) repo on GitHub
|
|
8
|
+
* ⭐️ the kubes project on GitHub
|
|
9
|
+
* Write a blog post about kubes
|
|
10
|
+
* Post on your favorite discussion about kubes
|
|
11
|
+
* Contribute a pull request
|
|
12
|
+
|
|
13
|
+
Everyone can contribute to making kubes better, including the documentation. These docs are the kubes repo located the [docs folder](https://github.com/boltops-tools/tree/master/docs). Please fork the project and open a pull request! We love your pull requests. Contributions are encouraged and welcomed!
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Clock Web Worker Pattern
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
A common pattern is to use the same code to run different types of processes like clock, web, worker. Kubes is flexible enough to support this pattern.
|
|
6
|
+
|
|
7
|
+
Note, often the clock process is also called a scheduler.
|
|
8
|
+
|
|
9
|
+
## Structure
|
|
10
|
+
|
|
11
|
+
Here's a structure that achieves this pattern with Kubes:
|
|
12
|
+
|
|
13
|
+
.kubes/resources
|
|
14
|
+
├── clock
|
|
15
|
+
│ └── deployment.rb
|
|
16
|
+
├── web
|
|
17
|
+
│ ├── deployment.rb
|
|
18
|
+
│ └── service.rb
|
|
19
|
+
└── worker
|
|
20
|
+
└── deployment.rb
|
|
21
|
+
|
|
22
|
+
## Source Code
|
|
23
|
+
|
|
24
|
+
.kubes/resources/demo-clock/deployment.rb
|
|
25
|
+
|
|
26
|
+
```ruby
|
|
27
|
+
name "demo-clock"
|
|
28
|
+
namespace "default"
|
|
29
|
+
labels(role: "web")
|
|
30
|
+
|
|
31
|
+
replicas 1
|
|
32
|
+
image built_image # IE: user/demo-clock:kubes-2020-06-13T19-55-16-43afc6e
|
|
33
|
+
command "bin/clock"
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
.kubes/resources/web/deployment.rb
|
|
37
|
+
|
|
38
|
+
```ruby
|
|
39
|
+
name "demo-web"
|
|
40
|
+
namespace "default"
|
|
41
|
+
labels(role: "web")
|
|
42
|
+
|
|
43
|
+
replicas 1
|
|
44
|
+
image built_image # IE: user/demo-clock:kubes-2020-06-13T19-55-16-43afc6e
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
.kubes/resources/demo-worker/deployment.rb
|
|
48
|
+
|
|
49
|
+
```ruby
|
|
50
|
+
name "demo-worker"
|
|
51
|
+
namespace "default"
|
|
52
|
+
labels(role: "web")
|
|
53
|
+
|
|
54
|
+
replicas 2
|
|
55
|
+
image built_image # IE: user/demo-clock:kubes-2020-06-13T19-55-16-43afc6e
|
|
56
|
+
command "bin/worker"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Deploy All-At-Once
|
|
60
|
+
|
|
61
|
+
To deploy all 3 process types:
|
|
62
|
+
|
|
63
|
+
kubes deploy
|
|
64
|
+
|
|
65
|
+
## Deploy Selectively
|
|
66
|
+
|
|
67
|
+
To deploy selectively:
|
|
68
|
+
|
|
69
|
+
kubes deploy clock
|
|
70
|
+
kubes deploy web
|
|
71
|
+
kubes deploy worker
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Resources
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
You define your Kubernetes resources in the `.kubes/resources` folder. Kubes categories items within this folder in 3 main buckets:
|
|
6
|
+
|
|
7
|
+
* [Role-Based Resource]({% link _docs/resources/role.md %}): Role-based resources. This is your main project resources group in roles.
|
|
8
|
+
* [Base Folder]({% link _docs/resources/base.md %}): The base folder contains definitions for common fields that is used for [Layering]({% link _docs/layering.md %}).
|
|
9
|
+
* [Shared Resources]({% link _docs/resources/shared.md %}): Shared resources that are meant to be created first and shared by other resources.
|
|
10
|
+
|
|
11
|
+
In the next sections, we'll cover how these resources are used.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Base
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
The base folder is used for purely layering.
|
|
6
|
+
|
|
7
|
+
## Structure
|
|
8
|
+
|
|
9
|
+
Here's an example structure, so we can understand how layering works with the base folder.
|
|
10
|
+
|
|
11
|
+
.kubes/resources/
|
|
12
|
+
├── base
|
|
13
|
+
│ ├── all.rb
|
|
14
|
+
│ └── deployment.rb
|
|
15
|
+
└── web
|
|
16
|
+
├── deployment.rb
|
|
17
|
+
└── service.rb
|
|
18
|
+
|
|
19
|
+
## Layering
|
|
20
|
+
|
|
21
|
+
Kubes process the files in the `base` folder first, then it process your [role-based resources]({% link _docs/resources/role.md %}) like web. So:
|
|
22
|
+
|
|
23
|
+
kubes deploy web deployment
|
|
24
|
+
|
|
25
|
+
Will layer:
|
|
26
|
+
|
|
27
|
+
1. .kubes/resources/base/all.rb
|
|
28
|
+
2. .kubes/resources/base/deployment.rb
|
|
29
|
+
3. .kubes/resources/web/deployment.rb
|
|
30
|
+
|
|
31
|
+
More details on layering can be found in the [Layering Docs]({% link _docs/layering.md %}).
|
|
32
|
+
|
|
33
|
+
Remember files in the base are used just for layering.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Role-Based Resources
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Role-based resources are your main project's resources. Kubes groups resources together under a "role".
|
|
6
|
+
|
|
7
|
+
## Example Structure
|
|
8
|
+
|
|
9
|
+
Here's an example structure to help explain how role-based resources work.
|
|
10
|
+
|
|
11
|
+
.kubes
|
|
12
|
+
└── resources
|
|
13
|
+
├── clock
|
|
14
|
+
│ └── deployment.yaml
|
|
15
|
+
├── web
|
|
16
|
+
│ ├── deployment.yaml
|
|
17
|
+
│ └── service.yaml
|
|
18
|
+
└── worker
|
|
19
|
+
└── deployment.yaml
|
|
20
|
+
|
|
21
|
+
## Resource Roles
|
|
22
|
+
|
|
23
|
+
Here the resource roles are:
|
|
24
|
+
|
|
25
|
+
1. clock
|
|
26
|
+
2. web
|
|
27
|
+
3. worker
|
|
28
|
+
|
|
29
|
+
You can freely add more roles if needed. This structure is flexible enough to account for most use-cases.
|
|
30
|
+
|
|
31
|
+
## Deploy
|
|
32
|
+
|
|
33
|
+
You can deploy specific roles like so:
|
|
34
|
+
|
|
35
|
+
kubes deploy clock
|
|
36
|
+
kubes deploy web
|
|
37
|
+
kubes deploy worker
|
|
38
|
+
|
|
39
|
+
Or you can deploy all roles at once:
|
|
40
|
+
|
|
41
|
+
kubes deploy
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Shared
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
The `shared` folder purpose is to provide a place for Kubernetes resources that are shared between roles.
|
|
6
|
+
|
|
7
|
+
## Example Structure
|
|
8
|
+
|
|
9
|
+
Here's an example structure to help explain how shared resources work.
|
|
10
|
+
|
|
11
|
+
.kubes/resources
|
|
12
|
+
├── clock
|
|
13
|
+
│ └── deployment.rb
|
|
14
|
+
├── shared
|
|
15
|
+
│ └── secret.rb
|
|
16
|
+
└── web
|
|
17
|
+
├── deployment.rb
|
|
18
|
+
└── service.rb
|
|
19
|
+
|
|
20
|
+
## Deploy
|
|
21
|
+
|
|
22
|
+
When you deploy with Kubes, it will run `kubectl apply` on the shared resources first and then your [role-based resources]({% link _docs/resources/role.md %}) like clock and web. Example:
|
|
23
|
+
|
|
24
|
+
$ kubes apply
|
|
25
|
+
Deploying kubes resources
|
|
26
|
+
=> kubectl apply -f .kubes/output/shared/secret.yaml
|
|
27
|
+
secret/demo-secret created
|
|
28
|
+
=> kubectl apply -f .kubes/output/clock/deployment.yaml
|
|
29
|
+
deployment.apps/demo-clock created
|
|
30
|
+
=> kubectl apply -f .kubes/output/web/service.yaml
|
|
31
|
+
service/demo-web created
|
|
32
|
+
=> kubectl apply -f .kubes/output/web/deployment.yaml
|
|
33
|
+
deployment.apps/demo-web created
|
|
34
|
+
$
|
|
35
|
+
|
|
36
|
+
Kubes will order the creation of shared resources first. You can override the default ordering with an [Order config]({% link _docs/intro/ordering/custom.md %}).
|
data/docs/_docs/yaml.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Kubes YAML
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
You can write your Kubernetes resources in YAML format.
|
|
6
|
+
|
|
7
|
+
.kubes
|
|
8
|
+
└── resources
|
|
9
|
+
└── web
|
|
10
|
+
├── deployment.yaml
|
|
11
|
+
└── service.yaml
|
|
12
|
+
|
|
13
|
+
## YAML and Templating
|
|
14
|
+
|
|
15
|
+
Kubes provides a little extra power for the YAML format. The YAML files are processed through an ERB templating language. So you have dynamic control. Here's an example with `Kubes.env` and the `built_image` helper.
|
|
16
|
+
|
|
17
|
+
.kubes/resources/web/deployment.yaml
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
---
|
|
21
|
+
apiVersion: apps/v1
|
|
22
|
+
kind: Deployment
|
|
23
|
+
metadata:
|
|
24
|
+
name: demo-web
|
|
25
|
+
labels:
|
|
26
|
+
app: demo
|
|
27
|
+
namespace: default
|
|
28
|
+
spec:
|
|
29
|
+
replicas: <%= Kubes.env == "prod" ? 2 : 1 %>
|
|
30
|
+
selector:
|
|
31
|
+
matchLabels:
|
|
32
|
+
app: demo
|
|
33
|
+
strategy:
|
|
34
|
+
rollingUpdate:
|
|
35
|
+
maxSurge: 25
|
|
36
|
+
maxUnavailable: 25
|
|
37
|
+
type: RollingUpdate
|
|
38
|
+
template:
|
|
39
|
+
metadata:
|
|
40
|
+
labels:
|
|
41
|
+
app: demo
|
|
42
|
+
spec:
|
|
43
|
+
containers:
|
|
44
|
+
- name: demo-web
|
|
45
|
+
image: <%= built_image %>
|
|
46
|
+
```
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
<section class="features" id="features">
|
|
2
|
+
<div class="container">
|
|
3
|
+
<div class="section-heading text-center">
|
|
4
|
+
<h2>The Code</h2>
|
|
5
|
+
<p class="text-muted">Easy to learn</p>
|
|
6
|
+
<hr>
|
|
7
|
+
</div>
|
|
8
|
+
<div class="row">
|
|
9
|
+
<div class="col-lg-12">
|
|
10
|
+
<div class="container-fluid">
|
|
11
|
+
<div class="row">
|
|
12
|
+
<div class="col-lg-6">
|
|
13
|
+
<h3>Commands</h3>
|
|
14
|
+
<div class="commands">
|
|
15
|
+
{% highlight sh %}
|
|
16
|
+
kubes init
|
|
17
|
+
kubes docker build
|
|
18
|
+
kubes docker push
|
|
19
|
+
kubes compile
|
|
20
|
+
kubes deploy
|
|
21
|
+
kubes apply
|
|
22
|
+
kubes get
|
|
23
|
+
kubes delete -y
|
|
24
|
+
{% endhighlight %}
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="col-lg-6">
|
|
28
|
+
<h3>Structure</h3>
|
|
29
|
+
<div class="commands">
|
|
30
|
+
{% highlight sh %}
|
|
31
|
+
.kubes
|
|
32
|
+
└── resources
|
|
33
|
+
├── clock
|
|
34
|
+
│ └── deployment.yaml
|
|
35
|
+
├── worker
|
|
36
|
+
│ └── deployment.yaml
|
|
37
|
+
└── web
|
|
38
|
+
├── deployment.yaml
|
|
39
|
+
└── service.yaml
|
|
40
|
+
{% endhighlight %}
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="row">
|
|
45
|
+
<div class="col-lg-6">
|
|
46
|
+
<h3>Init Generator</h3>
|
|
47
|
+
<div class="commands">
|
|
48
|
+
{% highlight sh %}
|
|
49
|
+
$ kubes init --app demo --repo user/repo ⎈ (gke-dev/demo)
|
|
50
|
+
create .kubes/config.rb
|
|
51
|
+
create .kubes/config/env/dev.rb
|
|
52
|
+
create .kubes/config/env/prod.rb
|
|
53
|
+
create .kubes/resources/web/deployment.yaml
|
|
54
|
+
create .kubes/resources/web/deployment/dev.yaml
|
|
55
|
+
create .kubes/resources/web/deployment/prod.yaml
|
|
56
|
+
create .kubes/resources/web/service.yaml
|
|
57
|
+
Initialized .kubes folder
|
|
58
|
+
Updated .gitignore
|
|
59
|
+
$
|
|
60
|
+
{% endhighlight %}
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
<div class="col-lg-6">
|
|
64
|
+
<h3>Deploy</h3>
|
|
65
|
+
<div class="commands">
|
|
66
|
+
{% highlight sh %}
|
|
67
|
+
$ kubes deploy
|
|
68
|
+
=> docker build -t user/demo-web:kubes-2020-06-19T00-20-28-1ef4db6 -f Dockerfile .
|
|
69
|
+
Successfully built 1c5b10652c36
|
|
70
|
+
=> docker push user/demo-web:kubes-2020-06-19T00-20-28-1ef4db6
|
|
71
|
+
Compiled .kubes/resources files
|
|
72
|
+
Deploying kubes files
|
|
73
|
+
=> kubectl apply -f .kubes/output/web/service.yaml
|
|
74
|
+
service/demo-web created
|
|
75
|
+
=> kubectl apply -f .kubes/output/web/deployment.yaml
|
|
76
|
+
deployment.apps/demo-web created
|
|
77
|
+
=> kubectl apply -f .kubes/output/web/ingress.yaml
|
|
78
|
+
ingress.networking.k8s.io/demo-web created
|
|
79
|
+
$
|
|
80
|
+
{% endhighlight %}
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
<div class="row">
|
|
85
|
+
<div class="col-lg-6">
|
|
86
|
+
<h3>YAML</h3>
|
|
87
|
+
<div class="commands">
|
|
88
|
+
{% highlight yaml %}
|
|
89
|
+
---
|
|
90
|
+
apiVersion: apps/v1
|
|
91
|
+
kind: Deployment
|
|
92
|
+
metadata:
|
|
93
|
+
name: demo-web
|
|
94
|
+
labels:
|
|
95
|
+
app: demo
|
|
96
|
+
namespace: default
|
|
97
|
+
spec:
|
|
98
|
+
replicas: 2
|
|
99
|
+
selector:
|
|
100
|
+
matchLabels:
|
|
101
|
+
app: demo
|
|
102
|
+
template:
|
|
103
|
+
metadata:
|
|
104
|
+
labels:
|
|
105
|
+
app: demo
|
|
106
|
+
spec:
|
|
107
|
+
containers:
|
|
108
|
+
- name: demo-web
|
|
109
|
+
image: <%= built_image %>
|
|
110
|
+
{% endhighlight %}
|
|
111
|
+
</div>
|
|
112
|
+
</div>
|
|
113
|
+
<div class="col-lg-6">
|
|
114
|
+
<h3>DSL</h3>
|
|
115
|
+
<div class="commands">
|
|
116
|
+
{% highlight ruby %}
|
|
117
|
+
name "demo-web"
|
|
118
|
+
namespace "default"
|
|
119
|
+
labels(role: "web")
|
|
120
|
+
|
|
121
|
+
replicas 2
|
|
122
|
+
image built_image # IE: user/demo-web:kubes-2020-06-13T19-55-16-43afc6e
|
|
123
|
+
{% endhighlight %}
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
</section>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{% if page.sidebar == false %}
|
|
2
|
+
|
|
3
|
+
{{ content }}
|
|
4
|
+
|
|
5
|
+
{% else %}
|
|
6
|
+
|
|
7
|
+
<div class="d-flex" id="wrapper">
|
|
8
|
+
{% include sidebar.html %}
|
|
9
|
+
<div id="content">
|
|
10
|
+
<div class="menu-top-bar">
|
|
11
|
+
<div id="menu-toggle">
|
|
12
|
+
<div class="bar1"></div>
|
|
13
|
+
<div class="bar2"></div>
|
|
14
|
+
<div class="bar3"></div>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<div class="container-fluid">
|
|
19
|
+
<h1>{{ page.title }}</h1>
|
|
20
|
+
{{ content }}
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
{% endif %}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
For a full list of the available methods, refer to the source itself [syntax/{{ include.name }}.rb](https://github.com/boltops-tools/kubes/blob/master/lib/kubes/compiler/dsl/syntax/{{ include.name }}.rb).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
A suffix hash based on the contents of the {{ include.kind }} is automatically appended to the {{ include.kind }} name. {{ include.kind }}s used in Deployment and Pod containers fields that use the same name will also have the suffix automatically appended. This is done to trigger a rolling deployment. Here's an example an deployment output with the hashed name.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<section id="timeline">
|
|
2
|
+
<div class="container">
|
|
3
|
+
<div class="row">
|
|
4
|
+
<div class="col-lg-12 text-center">
|
|
5
|
+
<h2 class="section-heading">TODO</h2>
|
|
6
|
+
</div>
|
|
7
|
+
</div>
|
|
8
|
+
<div class="row justify-content-center">
|
|
9
|
+
<img src="/img/home/TODO.png" />
|
|
10
|
+
</div>
|
|
11
|
+
</div>
|
|
12
|
+
</section>
|