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.
- checksums.yaml +5 -5
- data/.dockerignore +4 -0
- data/.gitignore +15 -7
- data/.rspec +3 -0
- data/CHANGELOG.md +22 -0
- data/Dockerfile +14 -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/ci/cloudbuild.md +69 -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 +137 -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 +111 -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 +19 -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 +32 -0
- data/docs/_docs/learn/dsl/deploy.md +66 -0
- data/docs/_docs/learn/dsl/install.md +5 -0
- data/docs/_docs/learn/dsl/new-project.md +34 -0
- data/docs/_docs/learn/dsl/next-steps.md +5 -0
- data/docs/_docs/learn/dsl/review-project.md +63 -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 +32 -0
- data/docs/_docs/learn/yaml/deploy.md +67 -0
- data/docs/_docs/learn/yaml/install.md +5 -0
- data/docs/_docs/learn/yaml/new-project.md +37 -0
- data/docs/_docs/learn/yaml/next-steps.md +5 -0
- data/docs/_docs/learn/yaml/review-project.md +108 -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 +41 -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 +27 -0
- data/docs/_includes/learn/start.md +3 -0
- data/docs/_includes/reference.md +3 -0
- data/docs/_includes/sidebar.html +118 -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 +19 -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 +160 -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 +47 -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 +31 -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 +22 -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/shared/namespace.rb.tt +2 -0
- data/lib/templates/dsl/.kubes/resources/web/deployment.rb +10 -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 +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/shared/namespace.yaml.tt +6 -0
- data/lib/templates/yaml/.kubes/resources/web/deployment.yaml.tt +19 -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 +607 -22
- data/bin/console +0 -14
- data/bin/setup +0 -8
data/docs/Procfile
ADDED
data/docs/README.md
ADDED
|
@@ -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
|
data/docs/Rakefile
ADDED
|
@@ -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"]
|
data/docs/_config.yml
ADDED
|
@@ -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,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: CloudBuild
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
To build kubes as a Docker image entrypoint for [Google CloudBuild Custom Builder](https://cloud.google.com/cloud-build/docs/configuring-builds/use-community-and-custom-builders).
|
|
6
|
+
|
|
7
|
+
git clone http://github.com/boltops-tools/kubes
|
|
8
|
+
cd kubes
|
|
9
|
+
gcloud builds submit --tag gcr.io/$GOOGLE_PROJECT/kubes
|
|
10
|
+
|
|
11
|
+
Be sure to set GOOGLE_PROJECT to your own project id.
|
|
12
|
+
|
|
13
|
+
## Example Codebuild YAML
|
|
14
|
+
|
|
15
|
+
cloudbuild.yaml:
|
|
16
|
+
|
|
17
|
+
```yaml
|
|
18
|
+
steps:
|
|
19
|
+
# Simply calling kubectl version with the CLOUDSDK_* vars will auth to the GKE cluster. Unsure why.
|
|
20
|
+
- name: gcr.io/cloud-builders/kubectl
|
|
21
|
+
args: ['version']
|
|
22
|
+
env:
|
|
23
|
+
- 'CLOUDSDK_COMPUTE_REGION=$_GCP_REGION'
|
|
24
|
+
- 'CLOUDSDK_CONTAINER_CLUSTER=$_GKE_CLUSTER'
|
|
25
|
+
- name: 'gcr.io/$PROJECT_ID/kubes'
|
|
26
|
+
args: ["deploy"]
|
|
27
|
+
env:
|
|
28
|
+
- 'GOOGLE_PROJECT=$PROJECT_ID' # .kubes/config.rb: config.repo
|
|
29
|
+
- 'KUBES_ENV=$_KUBES_ENV'
|
|
30
|
+
- 'KUBES_EXTRA=$_KUBES_EXTRA'
|
|
31
|
+
|
|
32
|
+
substitutions:
|
|
33
|
+
_GCP_REGION: us-central1
|
|
34
|
+
_GKE_CLUSTER: dev-cluster
|
|
35
|
+
_KUBES_ENV: dev
|
|
36
|
+
_KUBES_EXTRA: ''
|
|
37
|
+
options:
|
|
38
|
+
substitution_option: 'ALLOW_LOOSE'
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Run CloudBuild
|
|
42
|
+
|
|
43
|
+
Run cloudbuild with:
|
|
44
|
+
|
|
45
|
+
gcloud builds submit --config cloudbuild.yaml
|
|
46
|
+
|
|
47
|
+
Example with output:
|
|
48
|
+
|
|
49
|
+
$ gcloud builds submit --config cloudbuild.yaml
|
|
50
|
+
Starting Step #1
|
|
51
|
+
Step #1: => docker build -t gcr.io/tung-275700/demo:kubes-2020-07-25T21-13-59 -f Dockerfile .
|
|
52
|
+
Step #1: Pushed gcr.io/tung-275700/demo:kubes-2020-07-25T21-13-59 docker image.
|
|
53
|
+
Step #1: Docker push took 2s.
|
|
54
|
+
Step #1: Compiled .kubes/resources files to .kubes/output
|
|
55
|
+
Step #1: Deploying kubes resources
|
|
56
|
+
Step #1: => kubectl apply -f .kubes/output/shared/namespace.yaml
|
|
57
|
+
Step #1: namespace/demo unchanged
|
|
58
|
+
Step #1: => kubectl apply -f .kubes/output/web/service.yaml
|
|
59
|
+
Step #1: service/web unchanged
|
|
60
|
+
Step #1: => kubectl apply -f .kubes/output/web/deployment.yaml
|
|
61
|
+
Step #1: deployment.apps/web configured
|
|
62
|
+
$
|
|
63
|
+
|
|
64
|
+
## Create Extra Environments
|
|
65
|
+
|
|
66
|
+
If you are using the [with_extra helper]({% link _docs/extra-env.md %}), you can create additional environments of the same app like so:
|
|
67
|
+
|
|
68
|
+
gcloud builds submit --config cloudbuild.yaml --substitutions=_KUBES_EXTRA=2
|
|
69
|
+
gcloud builds submit --config cloudbuild.yaml --substitutions=_KUBES_EXTRA=3
|
|
@@ -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
|
+
```
|