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
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Change Project
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Let's make a simple change. We'll adjust the number of replicas to 3. We do this in `deployment/dev.rb`.
|
|
6
|
+
|
|
7
|
+
.kubes/resources/web/deployment/dev.rb
|
|
8
|
+
|
|
9
|
+
```ruby
|
|
10
|
+
---
|
|
11
|
+
replicas 3 # <= CHANGED
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
This demonstrates Kubes [Layering support]({% link _docs/layering.md %}). We can make changes to only the `KUBES_DEV` environment.
|
|
15
|
+
|
|
16
|
+
Next, we'll deploy this update.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Delete App
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Let's now delete the app and clean up:
|
|
6
|
+
|
|
7
|
+
kubes delete
|
|
8
|
+
|
|
9
|
+
You will be prompted to confirm before deletion. Here's out the output looks like:
|
|
10
|
+
|
|
11
|
+
$ kubes delete
|
|
12
|
+
This will delete resources. Are you sure? (y/N) y
|
|
13
|
+
Compiled .kubes/resources files
|
|
14
|
+
=> kubectl delete -f .kubes/output/web/service.yaml
|
|
15
|
+
service "demo-web" deleted
|
|
16
|
+
=> kubectl delete -f .kubes/output/web/deployment.yaml
|
|
17
|
+
deployment.apps "demo-web" deleted
|
|
18
|
+
=> kubectl delete -f .kubes/output/shared/namespace.yaml
|
|
19
|
+
namespace "demo" deleted
|
|
20
|
+
$
|
|
21
|
+
|
|
22
|
+
Let's double-check that the resources have been deleted:
|
|
23
|
+
|
|
24
|
+
$ kubectl get all
|
|
25
|
+
No resources found.
|
|
26
|
+
$
|
|
27
|
+
|
|
28
|
+
Tip: If you want to delete without the prompt, you can use the `-y` option:
|
|
29
|
+
|
|
30
|
+
kubes delete -y
|
|
31
|
+
|
|
32
|
+
Next, we'll look at some next steps.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Deploy App
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Let's deploy
|
|
6
|
+
|
|
7
|
+
kubes deploy
|
|
8
|
+
|
|
9
|
+
You'll see output like this:
|
|
10
|
+
|
|
11
|
+
$ kubes deploy
|
|
12
|
+
=> docker build -t 111111111111.dkr.ecr.us-west-2.amazonaws.com/demo:kubes-2020-06-19T04-19-13 -f Dockerfile .
|
|
13
|
+
=> docker push 111111111111.dkr.ecr.us-west-2.amazonaws.com/demo:kubes-2020-06-19T04-19-13
|
|
14
|
+
Pushed 111111111111.dkr.ecr.us-west-2.amazonaws.com/demo:kubes-2020-06-19T04-19-13 docker image.
|
|
15
|
+
Docker push took 15s.
|
|
16
|
+
Compiled .kubes/resources files
|
|
17
|
+
=> kubectl apply -f .kubes/output/shared/namespace.yaml
|
|
18
|
+
namespace/demo created
|
|
19
|
+
=> kubectl apply -f .kubes/output/web/service.yaml
|
|
20
|
+
service/demo-web created
|
|
21
|
+
=> kubectl apply -f .kubes/output/web/deployment.yaml
|
|
22
|
+
deployment.apps/demo-web created
|
|
23
|
+
$
|
|
24
|
+
|
|
25
|
+
What did Kubes do?
|
|
26
|
+
|
|
27
|
+
{% include kubes-steps.md %}
|
|
28
|
+
|
|
29
|
+
## Check Resources
|
|
30
|
+
|
|
31
|
+
Let's check for the created resource on the Kubernetes cluster:
|
|
32
|
+
|
|
33
|
+
kubes get
|
|
34
|
+
|
|
35
|
+
Example output:
|
|
36
|
+
|
|
37
|
+
$ kubes get
|
|
38
|
+
=> kubectl get --recursive -f .kubes/output
|
|
39
|
+
NAME STATUS AGE
|
|
40
|
+
namespace/demo Active 10s
|
|
41
|
+
|
|
42
|
+
NAME READY UP-TO-DATE AVAILABLE AGE
|
|
43
|
+
deployment.apps/demo-web 1/1 1 1 10s
|
|
44
|
+
|
|
45
|
+
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
|
46
|
+
service/demo-web ClusterIP 172.16.173.96 <none> 80/TCP 11s
|
|
47
|
+
|
|
48
|
+
Let's also use the `kubectl get` command:
|
|
49
|
+
|
|
50
|
+
$ kubectl get all
|
|
51
|
+
NAME READY STATUS RESTARTS AGE
|
|
52
|
+
pod/demo-web-6f867f469f-5qhn6 1/1 Running 0 16s
|
|
53
|
+
|
|
54
|
+
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
|
55
|
+
service/demo-web ClusterIP 172.16.173.96 <none> 80/TCP 17s
|
|
56
|
+
|
|
57
|
+
NAME READY UP-TO-DATE AVAILABLE AGE
|
|
58
|
+
deployment.apps/demo-web 1/1 1 1 16s
|
|
59
|
+
|
|
60
|
+
NAME DESIRED CURRENT READY AGE
|
|
61
|
+
replicaset.apps/demo-web-6f867f469f 1 1 1 16s
|
|
62
|
+
$
|
|
63
|
+
|
|
64
|
+
We can see that the deployment and service got created.
|
|
65
|
+
|
|
66
|
+
Next, we'll make a change.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: New Project
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
If you already a project with an existing Dockerfile, you can use that. If you do not, kubes generates a starter Dockerfile that runs nginx. For this tutorial, we'll start with an empty folder.
|
|
6
|
+
|
|
7
|
+
mkdir demo
|
|
8
|
+
cd demo
|
|
9
|
+
|
|
10
|
+
For this tutorial, we'll use an ECR repo, though any repo will work.
|
|
11
|
+
|
|
12
|
+
Let's generate a starter project:
|
|
13
|
+
|
|
14
|
+
$ REPO=$(aws ecr describe-repositories --repository-name demo | jq -r '.repositories[].repositoryUri')
|
|
15
|
+
$ kubes init --app demo --repo $REPO --type dsl
|
|
16
|
+
create .kubes/config.rb
|
|
17
|
+
create .kubes/config/env/dev.rb
|
|
18
|
+
create .kubes/config/env/prod.rb
|
|
19
|
+
create .kubes/resources/base/all.rb
|
|
20
|
+
create .kubes/resources/shared/namespace.rb
|
|
21
|
+
create .kubes/resources/web/deployment.rb
|
|
22
|
+
create .kubes/resources/web/deployment/dev.rb
|
|
23
|
+
create .kubes/resources/web/deployment/prod.rb
|
|
24
|
+
create .kubes/resources/web/service.rb
|
|
25
|
+
Initialized .kubes folder
|
|
26
|
+
$
|
|
27
|
+
|
|
28
|
+
The `--type=dsl` option tells Kubes to generate DSL format files. To learn more about the generated structure, here are the [Structure Docs]({% link _docs/intro/structure.md %}).
|
|
29
|
+
|
|
30
|
+
Let's explore some of the generated files.
|
|
31
|
+
|
|
32
|
+
{% include learn/review.md %}
|
|
33
|
+
|
|
34
|
+
Next, we'll review the resources.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Review Project
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Let's review the resources.
|
|
6
|
+
|
|
7
|
+
## Namespace
|
|
8
|
+
|
|
9
|
+
We'll create a namespace for the app resources:
|
|
10
|
+
|
|
11
|
+
.kubes/resources/shared/namespace.rb
|
|
12
|
+
|
|
13
|
+
```ruby
|
|
14
|
+
name "demo"
|
|
15
|
+
labels(app: "demo")
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Deployment
|
|
19
|
+
|
|
20
|
+
The `web/deployment.rb` file is a little more interesting:
|
|
21
|
+
|
|
22
|
+
.kubes/resources/web/deployment.rb
|
|
23
|
+
|
|
24
|
+
```ruby
|
|
25
|
+
name "demo-web"
|
|
26
|
+
labels(role: "web")
|
|
27
|
+
namespace "default"
|
|
28
|
+
|
|
29
|
+
replicas 1
|
|
30
|
+
image built_image # IE: user/demo:kubes-2020-06-13T19-55-16-43afc6e
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
The DSL form is more concise than the YAML form. Also, notice the use of the `built_image` helper. The `built_image` is a kubes helper method that refers to the latest Docker image built. This spares you from updating the image manually.
|
|
34
|
+
|
|
35
|
+
## Base Folder
|
|
36
|
+
|
|
37
|
+
Also let's check the files in the base folder.
|
|
38
|
+
|
|
39
|
+
.kubes/resources/base/all.rb
|
|
40
|
+
|
|
41
|
+
```ruby
|
|
42
|
+
namespace "default"
|
|
43
|
+
labels(app: "demo")
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The base folder files are processed first as a part of [Kubes Layering]({% link _docs/layering.md %}). This allows you to define common fields and keep your code DRY.
|
|
47
|
+
|
|
48
|
+
Next, let's look at `service.rb`
|
|
49
|
+
|
|
50
|
+
.kubes/resources/web/service.rb
|
|
51
|
+
|
|
52
|
+
```ruby
|
|
53
|
+
name "demo-web"
|
|
54
|
+
labels(role: "web")
|
|
55
|
+
|
|
56
|
+
# Optional since default port is 80
|
|
57
|
+
# port 80
|
|
58
|
+
# targetPort 80
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Service is also pretty simple. Though the DSL may seem simple, it allows you to fully control the generated YAML. You can learn more about the DSL form at: [Deployment DSL Docs]({% link _docs/dsl/resources/deployment.md %})
|
|
62
|
+
|
|
63
|
+
Next, we'll deploy the app.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Update App
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Let's update the app. In this case, we don't need to update the Docker image, so we'll use the `apply` command, which does not run the Docker build phase.
|
|
6
|
+
|
|
7
|
+
kubes apply
|
|
8
|
+
|
|
9
|
+
Here's what the output looks like. Note, the namespace is not shown for conciseness.
|
|
10
|
+
|
|
11
|
+
$ kubes apply
|
|
12
|
+
Compiled .kubes/resources files
|
|
13
|
+
=> kubectl apply -f .kubes/output/web/service.yaml
|
|
14
|
+
service/demo-web unchanged
|
|
15
|
+
=> kubectl apply -f .kubes/output/web/deployment.yaml
|
|
16
|
+
deployment.apps/demo-web configured
|
|
17
|
+
$
|
|
18
|
+
|
|
19
|
+
The change has been deployed. Let's double check it:
|
|
20
|
+
|
|
21
|
+
kubes get
|
|
22
|
+
|
|
23
|
+
Example output:
|
|
24
|
+
|
|
25
|
+
$ kubes get
|
|
26
|
+
=> kubectl get --recursive -f .kubes/output
|
|
27
|
+
NAME READY UP-TO-DATE AVAILABLE AGE
|
|
28
|
+
deployment.apps/demo-web 3/3 3 3 3m34s
|
|
29
|
+
|
|
30
|
+
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
|
31
|
+
service/demo-web ClusterIP 172.16.173.96 <none> 80/TCP 3m35s
|
|
32
|
+
|
|
33
|
+
Let's also use the `kubectl get` command:
|
|
34
|
+
|
|
35
|
+
$ kubectl get all
|
|
36
|
+
NAME READY STATUS RESTARTS AGE
|
|
37
|
+
pod/demo-web-6f867f469f-5qhn6 1/1 Running 0 3m37s
|
|
38
|
+
pod/demo-web-6f867f469f-cqmpd 1/1 Running 0 7s
|
|
39
|
+
pod/demo-web-6f867f469f-slnsw 1/1 Running 0 108s
|
|
40
|
+
|
|
41
|
+
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
|
42
|
+
service/demo-web ClusterIP 172.16.173.96 <none> 80/TCP 3m38s
|
|
43
|
+
|
|
44
|
+
NAME READY UP-TO-DATE AVAILABLE AGE
|
|
45
|
+
deployment.apps/demo-web 3/3 3 3 3m37s
|
|
46
|
+
|
|
47
|
+
NAME DESIRED CURRENT READY AGE
|
|
48
|
+
replicaset.apps/demo-web-6f867f469f 3 3 3 3m37s
|
|
49
|
+
$
|
|
50
|
+
|
|
51
|
+
We can see that there are now 3 replicas running.
|
|
52
|
+
|
|
53
|
+
Next, we'll delete the app.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Change Project
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Let's make a simple change. We'll adjust the number of replicas to 3. We do this in `deployment/dev.yaml`.
|
|
6
|
+
|
|
7
|
+
.kubes/resources/web/deployment/dev.yaml
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
---
|
|
11
|
+
spec:
|
|
12
|
+
replicas: 3 # <= CHANGED
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
This demonstrates Kubes [Layering support]({% link _docs/layering.md %}). We can make changes to only the `KUBES_DEV` environment.
|
|
16
|
+
|
|
17
|
+
Next, we'll deploy this update.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Delete App
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Let's now delete the app and clean up:
|
|
6
|
+
|
|
7
|
+
kubes delete
|
|
8
|
+
|
|
9
|
+
You will be prompted to confirm before deletion. Here's out the output looks like:
|
|
10
|
+
|
|
11
|
+
$ kubes delete
|
|
12
|
+
This will delete resources. Are you sure? (y/N) y
|
|
13
|
+
Compiled .kubes/resources files
|
|
14
|
+
=> kubectl delete -f .kubes/output/web/service.yaml
|
|
15
|
+
service "demo-web" deleted
|
|
16
|
+
=> kubectl delete -f .kubes/output/web/deployment.yaml
|
|
17
|
+
deployment.apps "demo-web" deleted
|
|
18
|
+
=> kubectl delete -f .kubes/output/shared/namespace.yaml
|
|
19
|
+
namespace "demo" deleted
|
|
20
|
+
$
|
|
21
|
+
|
|
22
|
+
Let's double-check that the resources have been deleted:
|
|
23
|
+
|
|
24
|
+
$ kubectl get all
|
|
25
|
+
No resources found.
|
|
26
|
+
$
|
|
27
|
+
|
|
28
|
+
Tip: If you want to delete without the prompt, you can use the `-y` option:
|
|
29
|
+
|
|
30
|
+
kubes delete -y
|
|
31
|
+
|
|
32
|
+
Next, we'll look at some next steps.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Deploy App
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Let's deploy
|
|
6
|
+
|
|
7
|
+
kubes deploy
|
|
8
|
+
|
|
9
|
+
You'll see output like this:
|
|
10
|
+
|
|
11
|
+
$ kubes deploy
|
|
12
|
+
=> docker build -t 111111111111.dkr.ecr.us-west-2.amazonaws.com/demo:kubes-2020-06-19T04-19-13 -f Dockerfile .
|
|
13
|
+
=> docker push 111111111111.dkr.ecr.us-west-2.amazonaws.com/demo:kubes-2020-06-19T04-19-13
|
|
14
|
+
Pushed 111111111111.dkr.ecr.us-west-2.amazonaws.com/demo:kubes-2020-06-19T04-19-13 docker image.
|
|
15
|
+
Docker push took 15s.
|
|
16
|
+
Compiled .kubes/resources files
|
|
17
|
+
=> kubectl apply -f .kubes/output/shared/namespace.yaml
|
|
18
|
+
namespace/demo created
|
|
19
|
+
=> kubectl apply -f .kubes/output/web/service.yaml
|
|
20
|
+
service/demo-web created
|
|
21
|
+
=> kubectl apply -f .kubes/output/web/deployment.yaml
|
|
22
|
+
deployment.apps/demo-web created
|
|
23
|
+
$
|
|
24
|
+
|
|
25
|
+
What did Kubes do?
|
|
26
|
+
|
|
27
|
+
{% include kubes-steps.md %}
|
|
28
|
+
|
|
29
|
+
## Check Resources
|
|
30
|
+
|
|
31
|
+
Let's check for the created resource on the Kubernetes cluster:
|
|
32
|
+
|
|
33
|
+
kubes get
|
|
34
|
+
|
|
35
|
+
Example output:
|
|
36
|
+
|
|
37
|
+
$ kubes get
|
|
38
|
+
=> kubectl get --recursive -f .kubes/output
|
|
39
|
+
NAME STATUS AGE
|
|
40
|
+
namespace/demo Active 7s
|
|
41
|
+
|
|
42
|
+
NAME READY UP-TO-DATE AVAILABLE AGE
|
|
43
|
+
deployment.apps/demo-web 1/1 1 1 7s
|
|
44
|
+
|
|
45
|
+
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
|
46
|
+
service/demo-web ClusterIP 172.16.201.77 <none> 80/TCP 7s
|
|
47
|
+
$
|
|
48
|
+
|
|
49
|
+
Let's also use the `kubectl get` command:
|
|
50
|
+
|
|
51
|
+
$ kubectl get all
|
|
52
|
+
NAME READY STATUS RESTARTS AGE
|
|
53
|
+
pod/demo-web-5cb4f9fb77-lgczj 1/1 Running 0 3m48s
|
|
54
|
+
|
|
55
|
+
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
|
56
|
+
service/demo-web ClusterIP 172.16.201.77 <none> 80/TCP 3m49s
|
|
57
|
+
|
|
58
|
+
NAME READY UP-TO-DATE AVAILABLE AGE
|
|
59
|
+
deployment.apps/demo-web 1/1 1 1 3m49s
|
|
60
|
+
|
|
61
|
+
NAME DESIRED CURRENT READY AGE
|
|
62
|
+
replicaset.apps/demo-web-5cb4f9fb77 1 1 1 3m49s
|
|
63
|
+
$
|
|
64
|
+
|
|
65
|
+
We can see that the deployment and service got created.
|
|
66
|
+
|
|
67
|
+
Next, we'll make a change.
|