kubes 0.4.7 → 0.6.2
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 +4 -4
- data/CHANGELOG.md +28 -0
- data/README.md +54 -8
- data/docs/_docs/config/hooks/kubes.md +1 -0
- data/docs/_docs/config/reference.md +1 -0
- data/docs/_docs/config/skip.md +1 -1
- data/docs/_docs/dsl/multiple-resources.md +6 -4
- data/docs/_docs/dsl/resources/job.md +62 -0
- data/docs/_docs/dsl/resources/secret.md +19 -2
- data/docs/_docs/extra-env/dsl.md +2 -2
- data/docs/_docs/extra-env/yaml.md +1 -1
- data/docs/_docs/generators.md +41 -0
- data/docs/_docs/helpers.md +17 -3
- data/docs/_docs/helpers/aws/advanced.md +10 -0
- data/docs/_docs/helpers/aws/advanced/secrets.md +131 -0
- data/docs/_docs/helpers/aws/advanced/ssm.md +78 -0
- data/docs/_docs/helpers/aws/secrets.md +18 -88
- data/docs/_docs/helpers/aws/ssm.md +20 -38
- data/docs/_docs/helpers/google/advanced.md +10 -0
- data/docs/_docs/helpers/google/advanced/secrets.md +78 -0
- data/docs/_docs/helpers/google/gke.md +33 -0
- data/docs/_docs/helpers/google/secrets.md +18 -27
- data/docs/_docs/helpers/google/service-account.md +8 -0
- data/docs/_docs/intro.md +2 -9
- data/docs/_docs/intro/docker-image.md +66 -0
- data/docs/_docs/intro/how-kubes-works.md +7 -11
- data/docs/_docs/layering.md +2 -0
- data/docs/_docs/layering/merge.md +1 -1
- data/docs/_docs/layering/mix.md +99 -0
- data/docs/_docs/learn/dsl/delete.md +10 -2
- data/docs/_docs/learn/dsl/review-project.md +2 -2
- data/docs/_docs/learn/yaml/delete.md +10 -2
- data/docs/_docs/learn/yaml/review-project.md +2 -2
- data/docs/_docs/patterns/clock-web-worker.md +3 -3
- data/docs/_docs/patterns/migrations.md +1 -1
- data/docs/_docs/patterns/multiple-envs.md +55 -0
- data/docs/_docs/variables.md +23 -0
- data/docs/_docs/variables/advanced.md +62 -0
- data/docs/_docs/variables/basic.md +137 -0
- data/docs/_docs/vs.md +10 -0
- data/docs/_docs/vs/custom.md +109 -0
- data/docs/_docs/vs/helm.md +243 -0
- data/docs/_docs/vs/kustomize.md +167 -0
- data/docs/_docs/yaml.md +2 -2
- data/docs/_includes/commands.html +2 -2
- data/docs/_includes/intro/features.md +11 -0
- data/docs/_includes/layering/layers.md +2 -4
- data/docs/_includes/sidebar.html +41 -0
- data/docs/_includes/vs/article.md +1 -0
- data/docs/_includes/vs/kubes/layering.md +10 -0
- data/docs/_includes/vs/kubes/structure.md +24 -0
- data/docs/_reference/kubes-delete.md +1 -1
- data/docs/_reference/kubes-exec.md +17 -1
- data/docs/_reference/kubes-init.md +2 -2
- data/docs/_reference/kubes-logs.md +2 -1
- data/docs/_reference/kubes-new-help.md +15 -0
- data/docs/_reference/kubes-new-helper.md +25 -0
- data/docs/_reference/kubes-new-resource.md +56 -0
- data/docs/_reference/kubes-new-variable.md +20 -0
- data/docs/_reference/kubes-new.md +26 -0
- data/docs/_reference/kubes-prune.md +22 -0
- data/docs/reference.md +2 -0
- data/kubes.gemspec +2 -2
- data/lib/kubes.rb +5 -3
- data/lib/kubes/auth.rb +4 -1
- data/lib/kubes/auth/base.rb +21 -0
- data/lib/kubes/auth/ecr.rb +1 -15
- data/lib/kubes/auth/gcr.rb +24 -0
- data/lib/kubes/cli.rb +9 -1
- data/lib/kubes/cli/apply.rb +0 -1
- data/lib/kubes/cli/build.rb +6 -0
- data/lib/kubes/cli/compile.rb +7 -0
- data/lib/kubes/cli/deploy.rb +1 -6
- data/lib/kubes/cli/exec.rb +5 -1
- data/lib/kubes/cli/help/exec.md +15 -0
- data/lib/kubes/cli/help/new/helper.md +4 -0
- data/lib/kubes/cli/help/new/resource.md +30 -0
- data/lib/kubes/cli/init.rb +1 -1
- data/lib/kubes/cli/new.rb +15 -0
- data/lib/kubes/cli/new/helper.rb +24 -0
- data/lib/kubes/cli/new/resource.rb +97 -0
- data/lib/kubes/cli/new/variable.rb +16 -0
- data/lib/kubes/cli/prune.rb +4 -2
- data/lib/kubes/cli/sequence.rb +1 -0
- data/lib/kubes/command.rb +7 -0
- data/lib/kubes/compiler.rb +19 -21
- data/lib/kubes/compiler/decorator/base.rb +1 -1
- data/lib/kubes/compiler/dsl/core/base.rb +6 -9
- data/lib/kubes/compiler/dsl/syntax/job.rb +217 -0
- data/lib/kubes/compiler/layering.rb +21 -7
- data/lib/kubes/compiler/shared/custom_variables.rb +38 -0
- data/lib/kubes/compiler/shared/helpers.rb +11 -2
- data/lib/kubes/compiler/shared/helpers/deprecated.rb +37 -0
- data/lib/kubes/compiler/shared/plugin_helpers.rb +14 -0
- data/lib/kubes/compiler/strategy.rb +7 -6
- data/lib/kubes/compiler/strategy/base.rb +59 -2
- data/lib/kubes/compiler/strategy/dsl.rb +0 -29
- data/lib/kubes/compiler/strategy/erb.rb +10 -22
- data/lib/kubes/compiler/util/normalize.rb +6 -3
- data/lib/kubes/compiler/util/yaml_dump.rb +4 -4
- data/lib/kubes/config.rb +14 -1
- data/lib/kubes/core.rb +6 -0
- data/lib/kubes/docker/strategy/image_name.rb +1 -1
- data/lib/kubes/hooks/builder.rb +20 -4
- data/lib/kubes/hooks/concern.rb +1 -1
- data/lib/kubes/kubectl/batch.rb +7 -33
- data/lib/kubes/kubectl/ordering.rb +42 -0
- data/lib/kubes/plugin.rb +14 -0
- data/lib/kubes/util/sh.rb +1 -1
- data/lib/kubes/version.rb +1 -1
- data/lib/templates/base/.kubes/config.rb.tt +1 -1
- data/lib/templates/base/.kubes/config/env/dev.rb +1 -1
- data/lib/templates/base/.kubes/config/env/prod.rb +1 -1
- data/lib/templates/dsl/.kubes/resources/web/deployment.rb +1 -1
- data/lib/templates/new/helper/file.rb +2 -0
- data/lib/templates/new/resource/dsl/backend_config.rb +10 -0
- data/lib/templates/new/resource/dsl/config_map.rb +5 -0
- data/lib/templates/new/resource/dsl/daemon_set.rb +11 -0
- data/lib/templates/new/resource/dsl/deployment.rb +4 -0
- data/lib/templates/new/resource/dsl/ingress.rb +3 -0
- data/lib/templates/new/resource/dsl/job.rb +2 -0
- data/lib/templates/new/resource/dsl/managed_certificate.rb +2 -0
- data/lib/templates/new/resource/dsl/namespace.rb +2 -0
- data/lib/templates/new/resource/dsl/network_policy.rb +7 -0
- data/lib/templates/new/resource/dsl/pod.rb +6 -0
- data/lib/templates/new/resource/dsl/role.rb +4 -0
- data/lib/templates/new/resource/dsl/role_binding.rb +7 -0
- data/lib/templates/new/resource/dsl/secret.rb +5 -0
- data/lib/templates/new/resource/dsl/service.rb +2 -0
- data/lib/templates/new/resource/dsl/service_account.rb +1 -0
- data/lib/templates/new/resource/yaml/backend_config.yaml +10 -0
- data/lib/templates/new/resource/yaml/config_map.yaml +9 -0
- data/lib/templates/new/resource/yaml/daemon_set.yaml +11 -0
- data/lib/templates/new/resource/yaml/deployment.yaml +19 -0
- data/lib/templates/new/resource/yaml/ingress.yaml +12 -0
- data/lib/templates/new/resource/yaml/job.yaml +19 -0
- data/lib/templates/new/resource/yaml/managed_certificate.yaml +7 -0
- data/lib/templates/new/resource/yaml/namespace.yaml +6 -0
- data/lib/templates/new/resource/yaml/network_policy.yaml +20 -0
- data/lib/templates/new/resource/yaml/pod.yaml +11 -0
- data/lib/templates/new/resource/yaml/role.yaml +13 -0
- data/lib/templates/new/resource/yaml/role_binding.yaml +11 -0
- data/lib/templates/new/resource/yaml/secret.yaml +9 -0
- data/lib/templates/new/resource/yaml/service.yaml +14 -0
- data/lib/templates/new/resource/yaml/service_account.yaml +4 -0
- data/lib/templates/new/variable/file.rb +1 -0
- data/lib/templates/yaml/.kubes/resources/base/all.yaml.tt +2 -0
- data/lib/templates/yaml/.kubes/resources/web/deployment.yaml.tt +1 -1
- data/spec/fixtures/multiple-files/{deployment-1.rb → .kubes/resources/web/deployment-1.rb} +0 -0
- data/spec/fixtures/multiple-files/{deployment-2.rb → .kubes/resources/web/deployment-2.rb} +0 -0
- data/spec/fixtures/project/.kubes/resources/{deployment.rb → web/deployment.rb} +0 -0
- data/spec/fixtures/project/.kubes/resources/{foobar.rb → web/empty.rb} +0 -0
- data/spec/fixtures/project/.kubes/resources/{service.rb → web/service.rb} +1 -1
- data/spec/fixtures/syntax/{network_policy.rb → .kubes/resources/web/network_policy.rb} +0 -0
- data/spec/fixtures/syntax/{pod.rb → .kubes/resources/web/pod.rb} +0 -0
- data/spec/kubes/cli/prune_spec.rb +1 -0
- data/spec/kubes/compiler/strategy/dsl_spec.rb +2 -2
- data/spec/kubes/compiler_spec.rb +6 -2
- data/spec/kubes/dsl/network_policy_spec.rb +1 -1
- data/spec/kubes/dsl/pod_spec.rb +1 -1
- metadata +98 -25
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: kubes new resource
|
|
3
|
+
reference: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Usage
|
|
7
|
+
|
|
8
|
+
kubes new resource
|
|
9
|
+
|
|
10
|
+
## Description
|
|
11
|
+
|
|
12
|
+
Generates Kubes Kubernetes resource definition.
|
|
13
|
+
|
|
14
|
+
## Examples
|
|
15
|
+
|
|
16
|
+
$ kubes new resource ingress
|
|
17
|
+
create .kubes/resources/web/ingress.yaml
|
|
18
|
+
$ kubes new resource service_account
|
|
19
|
+
create .kubes/resources/shared/service_account.yaml
|
|
20
|
+
$
|
|
21
|
+
|
|
22
|
+
## Supported Resources
|
|
23
|
+
|
|
24
|
+
Here's a list of some of the supported resources.
|
|
25
|
+
|
|
26
|
+
backend_config
|
|
27
|
+
config_map
|
|
28
|
+
daemon_set
|
|
29
|
+
deployment
|
|
30
|
+
ingress
|
|
31
|
+
job
|
|
32
|
+
managed_certificate
|
|
33
|
+
namespace
|
|
34
|
+
network_policy
|
|
35
|
+
pod
|
|
36
|
+
role_binding
|
|
37
|
+
role
|
|
38
|
+
secret
|
|
39
|
+
service_account
|
|
40
|
+
service
|
|
41
|
+
|
|
42
|
+
Refer to the source code to all the resources that the generator supports:
|
|
43
|
+
https://github.com/boltops-tools/kubes/blob/master/lib/templates/new/resource/yaml
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
## Options
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
a, [--app=APP] # App name
|
|
50
|
+
# Default: demo
|
|
51
|
+
y, [--force] # Bypass overwrite are you sure prompt for existing files
|
|
52
|
+
r, [--role=ROLE] # Role. IE: web, clock, worker, migrate, etc. Defaults to convention: web or shared when not set
|
|
53
|
+
t, [--type=TYPE] # Type: dsl or yaml
|
|
54
|
+
# Default: yaml
|
|
55
|
+
```
|
|
56
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: kubes new variable
|
|
3
|
+
reference: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Usage
|
|
7
|
+
|
|
8
|
+
kubes new variable
|
|
9
|
+
|
|
10
|
+
## Description
|
|
11
|
+
|
|
12
|
+
Generates kubes variable file.
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## Options
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
y, [--force] # Bypass overwrite are you sure prompt for existing files
|
|
19
|
+
```
|
|
20
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: kubes new
|
|
3
|
+
reference: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Usage
|
|
7
|
+
|
|
8
|
+
kubes new
|
|
9
|
+
|
|
10
|
+
## Description
|
|
11
|
+
|
|
12
|
+
Generates new resource.
|
|
13
|
+
|
|
14
|
+
## Subcommands
|
|
15
|
+
|
|
16
|
+
* [kubes new helper]({% link _reference/kubes-new-helper.md %}) - Generates kubes helper file.
|
|
17
|
+
* [kubes new resource]({% link _reference/kubes-new-resource.md %}) - Generates Kubes Kubernetes resource definition.
|
|
18
|
+
* [kubes new variable]({% link _reference/kubes-new-variable.md %}) - Generates kubes variable file.
|
|
19
|
+
|
|
20
|
+
## Options
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
[--verbose], [--no-verbose]
|
|
24
|
+
[--noop], [--no-noop]
|
|
25
|
+
```
|
|
26
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: kubes prune
|
|
3
|
+
reference: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Usage
|
|
7
|
+
|
|
8
|
+
kubes prune
|
|
9
|
+
|
|
10
|
+
## Description
|
|
11
|
+
|
|
12
|
+
Prune old resources like secret and config maps
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## Options
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
y, [--yes], [--no-yes] # Skip are you sure prompt
|
|
19
|
+
[--verbose], [--no-verbose]
|
|
20
|
+
[--noop], [--no-noop]
|
|
21
|
+
```
|
|
22
|
+
|
data/docs/reference.md
CHANGED
|
@@ -16,4 +16,6 @@ title: CLI Reference
|
|
|
16
16
|
* [kubes get]({% link _reference/kubes-get.md %})
|
|
17
17
|
* [kubes init]({% link _reference/kubes-init.md %})
|
|
18
18
|
* [kubes logs]({% link _reference/kubes-logs.md %})
|
|
19
|
+
* [kubes new]({% link _reference/kubes-new.md %})
|
|
20
|
+
* [kubes prune]({% link _reference/kubes-prune.md %})
|
|
19
21
|
* [kubes version]({% link _reference/kubes-version.md %})
|
data/kubes.gemspec
CHANGED
|
@@ -29,8 +29,8 @@ Gem::Specification.new do |spec|
|
|
|
29
29
|
spec.add_dependency "zeitwerk"
|
|
30
30
|
|
|
31
31
|
# core helper libs
|
|
32
|
-
spec.add_dependency "kubes_aws"
|
|
33
|
-
spec.add_dependency "kubes_google"
|
|
32
|
+
spec.add_dependency "kubes_aws", "~> 0.2.0"
|
|
33
|
+
spec.add_dependency "kubes_google", "~> 0.3.0"
|
|
34
34
|
|
|
35
35
|
spec.add_development_dependency "bundler"
|
|
36
36
|
spec.add_development_dependency "byebug"
|
data/lib/kubes.rb
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
$stdout.sync = true unless ENV["KUBES_STDOUT_SYNC"] == "0"
|
|
2
2
|
|
|
3
3
|
$:.unshift(File.expand_path("../", __FILE__))
|
|
4
|
+
|
|
5
|
+
require "kubes/autoloader"
|
|
6
|
+
Kubes::Autoloader.setup
|
|
7
|
+
|
|
4
8
|
require "active_support/core_ext/class"
|
|
5
9
|
require "active_support/core_ext/hash"
|
|
6
10
|
require "active_support/core_ext/string"
|
|
@@ -20,10 +24,8 @@ require "kubes_google"
|
|
|
20
24
|
|
|
21
25
|
DslEvaluator.backtrace_reject = "lib/kubes"
|
|
22
26
|
|
|
23
|
-
require "kubes/autoloader"
|
|
24
|
-
Kubes::Autoloader.setup
|
|
25
|
-
|
|
26
27
|
module Kubes
|
|
27
28
|
class Error < StandardError; end
|
|
29
|
+
class MissingDockerImage < Error; end
|
|
28
30
|
extend Core
|
|
29
31
|
end
|
data/lib/kubes/auth.rb
CHANGED
|
@@ -10,11 +10,14 @@ module Kubes
|
|
|
10
10
|
klass.new(@image).run
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
# Currently only support ECR
|
|
13
|
+
# Currently only support ECR and GCR
|
|
14
|
+
# TODO: consider moving this to plugin gems
|
|
14
15
|
def strategy_class
|
|
15
16
|
case @image
|
|
16
17
|
when /\.amazonaws\.com/ # IE: 112233445566.dkr.ecr.us-west-2.amazonaws.com/demo/sinatra
|
|
17
18
|
Ecr
|
|
19
|
+
when /gcr\.io/
|
|
20
|
+
Gcr
|
|
18
21
|
end
|
|
19
22
|
end
|
|
20
23
|
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require "json"
|
|
2
|
+
|
|
3
|
+
class Kubes::Auth
|
|
4
|
+
class Base
|
|
5
|
+
include Kubes::Logging
|
|
6
|
+
|
|
7
|
+
def initialize(image)
|
|
8
|
+
@image = image
|
|
9
|
+
@repo_domain = "#{image.split('/').first}"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def ensure_dotdocker_exists
|
|
13
|
+
dirname = File.dirname(docker_config)
|
|
14
|
+
FileUtils.mkdir_p(dirname) unless File.exist?(dirname)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def docker_config
|
|
18
|
+
"#{ENV['HOME']}/.docker/config.json"
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
data/lib/kubes/auth/ecr.rb
CHANGED
|
@@ -14,14 +14,9 @@
|
|
|
14
14
|
# If that format changes, the update will need to be updated.
|
|
15
15
|
#
|
|
16
16
|
class Kubes::Auth
|
|
17
|
-
class Ecr
|
|
17
|
+
class Ecr < Base
|
|
18
18
|
include Kubes::AwsServices
|
|
19
19
|
|
|
20
|
-
def initialize(image)
|
|
21
|
-
@image = image
|
|
22
|
-
@repo_domain = "#{image.split('/').first}"
|
|
23
|
-
end
|
|
24
|
-
|
|
25
20
|
def run
|
|
26
21
|
auth_token = fetch_auth_token
|
|
27
22
|
if File.exist?(docker_config)
|
|
@@ -42,14 +37,5 @@ class Kubes::Auth
|
|
|
42
37
|
def fetch_auth_token
|
|
43
38
|
ecr.get_authorization_token.authorization_data.first.authorization_token
|
|
44
39
|
end
|
|
45
|
-
|
|
46
|
-
def docker_config
|
|
47
|
-
"#{ENV['HOME']}/.docker/config.json"
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def ensure_dotdocker_exists
|
|
51
|
-
dirname = File.dirname(docker_config)
|
|
52
|
-
FileUtils.mkdir_p(dirname) unless File.exist?(dirname)
|
|
53
|
-
end
|
|
54
40
|
end
|
|
55
41
|
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
class Kubes::Auth
|
|
2
|
+
class Gcr < Base
|
|
3
|
+
def run
|
|
4
|
+
authorize! unless authorized?
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def authorize!
|
|
8
|
+
command = "gcloud auth configure-docker"
|
|
9
|
+
logger.debug "Authorizing GCR with: #{command}"
|
|
10
|
+
success = system(command)
|
|
11
|
+
unless success
|
|
12
|
+
logger.error "ERROR: running #{command}".color(:red)
|
|
13
|
+
exit $?.exitstatus if exit_on_fail
|
|
14
|
+
end
|
|
15
|
+
success
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def authorized?
|
|
19
|
+
return false unless File.exist?(docker_config)
|
|
20
|
+
data = JSON.load(IO.read(docker_config))
|
|
21
|
+
!!data.dig('credHelpers', 'gcr.io')
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
data/lib/kubes/cli.rb
CHANGED
|
@@ -26,6 +26,14 @@ module Kubes
|
|
|
26
26
|
long_desc Help.text(:docker)
|
|
27
27
|
subcommand "docker", Docker
|
|
28
28
|
|
|
29
|
+
desc "docker SUBCOMMAND", "Docker subcommands"
|
|
30
|
+
long_desc Help.text(:docker)
|
|
31
|
+
subcommand "docker", Docker
|
|
32
|
+
|
|
33
|
+
long_desc Help.text("new")
|
|
34
|
+
New.options.each { |args| option(*args) }
|
|
35
|
+
register(New, "new", "new", "Generates new resource.")
|
|
36
|
+
|
|
29
37
|
desc "apply [ROLE] [RESOURCE]", "Apply the Kubernetes YAML files without building docker image"
|
|
30
38
|
long_desc Help.text(:apply)
|
|
31
39
|
image_option.call
|
|
@@ -48,7 +56,7 @@ module Kubes
|
|
|
48
56
|
Compile.new(options).run
|
|
49
57
|
end
|
|
50
58
|
|
|
51
|
-
desc "delete [ROLE] [RESOURCE]", "Delete Kubernetes resources
|
|
59
|
+
desc "delete [ROLE] [RESOURCE]", "Delete Kubernetes resources in defined .kubes/resources"
|
|
52
60
|
long_desc Help.text(:delete)
|
|
53
61
|
image_option.call
|
|
54
62
|
yes_option.call
|
data/lib/kubes/cli/apply.rb
CHANGED
data/lib/kubes/cli/build.rb
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
class Kubes::CLI
|
|
2
2
|
class Build < Base
|
|
3
3
|
def run
|
|
4
|
+
return unless build?
|
|
4
5
|
Kubes::Docker.new(@options, "build").run
|
|
5
6
|
Kubes::Docker.new(@options, "push").run
|
|
6
7
|
end
|
|
8
|
+
|
|
9
|
+
def build?
|
|
10
|
+
return false if @options[:build] == false || @options[:image] || Kubes.config.image
|
|
11
|
+
@options[:resource].nil? || @options[:resource] == "deployment"
|
|
12
|
+
end
|
|
7
13
|
end
|
|
8
14
|
end
|
data/lib/kubes/cli/compile.rb
CHANGED
|
@@ -8,9 +8,16 @@ class Kubes::CLI
|
|
|
8
8
|
@@compiled = false
|
|
9
9
|
def run
|
|
10
10
|
return if @@compiled
|
|
11
|
+
build_docker_image
|
|
11
12
|
Clean.new(@options.merge(mute: true)).run
|
|
12
13
|
Kubes::Compiler.new(@options).run
|
|
13
14
|
@@compiled = true
|
|
14
15
|
end
|
|
16
|
+
|
|
17
|
+
# auto build docker image and push image if kubes docker build not yet called
|
|
18
|
+
def build_docker_image
|
|
19
|
+
return if File.exist?("#{Kubes.root}/.kubes/state/docker_image.txt")
|
|
20
|
+
Build.new(@options).run
|
|
21
|
+
end
|
|
15
22
|
end
|
|
16
23
|
end
|
data/lib/kubes/cli/deploy.rb
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
class Kubes::CLI
|
|
2
2
|
class Deploy < Base
|
|
3
3
|
def run
|
|
4
|
-
Build.new(@options).run
|
|
4
|
+
Build.new(@options).run
|
|
5
5
|
Apply.new(@options).run # also calls Compile
|
|
6
6
|
end
|
|
7
|
-
|
|
8
|
-
def build?
|
|
9
|
-
return false if @options[:build] == false || @options[:image]
|
|
10
|
-
@options[:resource].nil? || @options[:resource] == "deployment"
|
|
11
|
-
end
|
|
12
7
|
end
|
|
13
8
|
end
|
data/lib/kubes/cli/exec.rb
CHANGED
|
@@ -20,10 +20,14 @@ class Kubes::CLI
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
container = " -c #{@options[:container]}" unless @options[:container].nil?
|
|
23
|
-
cmd = @options[:cmd].empty? ?
|
|
23
|
+
cmd = @options[:cmd].empty? ? default_exec : @options[:cmd].join(' ')
|
|
24
24
|
sh("kubectl exec #{ns} -ti #{pod}#{container} -- #{cmd}")
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
+
def default_exec
|
|
28
|
+
ENV['KUBES_DEFAULT_EXEC'] || "sh"
|
|
29
|
+
end
|
|
30
|
+
|
|
27
31
|
def find_pod
|
|
28
32
|
pod_name || deployment_pod
|
|
29
33
|
end
|
data/lib/kubes/cli/help/exec.md
CHANGED
|
@@ -22,3 +22,18 @@ If you have have multiple deployments in your `.kubes/resources` then the comman
|
|
|
22
22
|
If you have have multiple containers in your pod. You can specify the specfic container with the `--container` or `-c` option. Examples:
|
|
23
23
|
|
|
24
24
|
kubes exec --name web
|
|
25
|
+
|
|
26
|
+
## Default Exec Command
|
|
27
|
+
|
|
28
|
+
The default exec command is `sh`. Example:
|
|
29
|
+
|
|
30
|
+
$ kubes exec
|
|
31
|
+
=> kubectl exec -n demo-dev -ti web-568645f665-62j8f -- sh
|
|
32
|
+
/app #
|
|
33
|
+
|
|
34
|
+
You can override the default with `KUBES_DEFAULT_EXEC`. Example:
|
|
35
|
+
|
|
36
|
+
$ export KUBES_DEFAULT_EXEC=bash
|
|
37
|
+
$ kubes exec
|
|
38
|
+
=> kubectl exec -n demo-dev -ti web-568645f665-62j8f -- bash
|
|
39
|
+
/app #
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
## Examples
|
|
2
|
+
|
|
3
|
+
$ kubes new resource ingress
|
|
4
|
+
create .kubes/resources/web/ingress.yaml
|
|
5
|
+
$ kubes new resource service_account
|
|
6
|
+
create .kubes/resources/shared/service_account.yaml
|
|
7
|
+
$
|
|
8
|
+
|
|
9
|
+
## Supported Resources
|
|
10
|
+
|
|
11
|
+
Here's a list of some of the supported resources.
|
|
12
|
+
|
|
13
|
+
backend_config
|
|
14
|
+
config_map
|
|
15
|
+
daemon_set
|
|
16
|
+
deployment
|
|
17
|
+
ingress
|
|
18
|
+
job
|
|
19
|
+
managed_certificate
|
|
20
|
+
namespace
|
|
21
|
+
network_policy
|
|
22
|
+
pod
|
|
23
|
+
role_binding
|
|
24
|
+
role
|
|
25
|
+
secret
|
|
26
|
+
service_account
|
|
27
|
+
service
|
|
28
|
+
|
|
29
|
+
Refer to the source code to all the resources that the generator supports:
|
|
30
|
+
https://github.com/boltops-tools/kubes/blob/master/lib/templates/new/resource/yaml
|
data/lib/kubes/cli/init.rb
CHANGED
|
@@ -3,7 +3,7 @@ class Kubes::CLI
|
|
|
3
3
|
def self.options
|
|
4
4
|
[
|
|
5
5
|
[:app, aliases: ["a"], required: true, desc: "Docker repo name. Example: web. Generates .kubes/APP/resources folder"],
|
|
6
|
-
[:force, type: :boolean, desc: "Bypass overwrite are you sure prompt for existing files"],
|
|
6
|
+
[:force, aliases: ["y"], type: :boolean, desc: "Bypass overwrite are you sure prompt for existing files"],
|
|
7
7
|
[:type, aliases: ["t"], default: "yaml", desc: "Type: dsl or yaml"],
|
|
8
8
|
[:repo, required: true, desc: "Docker repo name. Example: user/repo. Configures .kubes/config.rb"],
|
|
9
9
|
[:namespace, aliases: ["n"], desc: "Namespace to use, defaults to APP-ENV. IE: demo-dev"],
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class Kubes::CLI
|
|
2
|
+
class New < Kubes::Command
|
|
3
|
+
long_desc Help.text("new/resource")
|
|
4
|
+
Resource.options.each { |args| option(*args) }
|
|
5
|
+
register(Resource, "resource", "resource", "Generates Kubes Kubernetes resource definition.")
|
|
6
|
+
|
|
7
|
+
long_desc Help.text("new/helper")
|
|
8
|
+
Helper.options.each { |args| option(*args) }
|
|
9
|
+
register(Helper, "helper", "helper", "Generates kubes helper file.")
|
|
10
|
+
|
|
11
|
+
long_desc Help.text("new/variable")
|
|
12
|
+
Variable.options.each { |args| option(*args) }
|
|
13
|
+
register(Variable, "variable", "variable", "Generates kubes variable file.")
|
|
14
|
+
end
|
|
15
|
+
end
|