kubes 0.2.4 → 0.3.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 +17 -0
- data/docs/_docs/auto-context.md +4 -4
- data/docs/_docs/config/builder.md +46 -0
- data/docs/_docs/config/env.md +3 -3
- data/docs/_docs/dsl/resources/service.md +21 -5
- data/docs/_docs/learn/dsl/deploy.md +2 -0
- data/docs/_docs/learn/dsl/new-project.md +1 -2
- data/docs/_docs/learn/yaml/deploy.md +2 -0
- data/docs/_docs/learn/yaml/new-project.md +1 -2
- data/docs/_includes/intro/install.md +5 -1
- data/docs/_includes/learn/cluster.md +21 -4
- data/docs/_includes/learn/repo +0 -0
- data/docs/_includes/learn/repos.md +10 -0
- data/docs/_includes/learn/review.md +2 -2
- data/docs/_includes/sidebar.html +1 -0
- data/docs/_reference/kubes-apply.md +2 -2
- data/docs/_reference/kubes-delete.md +1 -1
- data/docs/_reference/kubes-deploy.md +1 -1
- data/docs/_reference/kubes-describe.md +24 -0
- data/docs/_reference/kubes-exec.md +42 -0
- data/docs/_reference/kubes-get.md +27 -0
- data/docs/_reference/kubes-init.md +1 -1
- data/docs/_reference/kubes-logs.md +26 -0
- data/docs/_sass/theme.scss +2 -1
- data/docs/bin/web +1 -1
- data/docs/img/logos/kubes-white.png +0 -0
- data/docs/index.html +2 -2
- data/docs/reference.md +4 -0
- data/lib/kubes/cli.rb +22 -0
- data/lib/kubes/cli/apply.rb +1 -1
- data/lib/kubes/cli/base.rb +4 -0
- data/lib/kubes/cli/build.rb +2 -2
- data/lib/kubes/cli/delete.rb +7 -2
- data/lib/kubes/cli/describe.rb +1 -1
- data/lib/kubes/cli/docker.rb +2 -2
- data/lib/kubes/cli/exec.rb +34 -0
- data/lib/kubes/cli/get.rb +3 -1
- data/lib/kubes/cli/help/exec.md +24 -0
- data/lib/kubes/cli/logs.rb +15 -0
- data/lib/kubes/compiler/dsl/syntax/deployment.rb +85 -2
- data/lib/kubes/compiler/dsl/syntax/service.rb +11 -0
- data/lib/kubes/config.rb +2 -0
- data/lib/kubes/docker.rb +19 -0
- data/lib/kubes/docker/strategy/build/base.rb +24 -0
- data/lib/kubes/docker/strategy/build/docker.rb +11 -0
- data/lib/kubes/docker/strategy/build/gcloud.rb +10 -0
- data/lib/kubes/docker/strategy/hooks.rb +9 -0
- data/lib/kubes/docker/{base.rb → strategy/image_name.rb} +19 -32
- data/lib/kubes/docker/strategy/push/base.rb +9 -0
- data/lib/kubes/docker/{push.rb → strategy/push/docker.rb} +2 -5
- data/lib/kubes/docker/strategy/push/gcloud.rb +9 -0
- data/lib/kubes/docker/strategy/utils.rb +9 -0
- data/lib/kubes/hooks/builder.rb +2 -1
- data/lib/kubes/kubectl.rb +15 -3
- data/lib/kubes/kubectl/batch.rb +8 -1
- data/lib/kubes/kubectl/fetch/base.rb +24 -0
- data/lib/kubes/kubectl/fetch/deployment.rb +34 -0
- data/lib/kubes/kubectl/fetch/pods.rb +21 -0
- data/lib/kubes/util/sh.rb +1 -0
- data/lib/kubes/version.rb +1 -1
- data/lib/templates/dsl/.kubes/resources/web/deployment.rb +2 -1
- data/lib/templates/dsl/.kubes/resources/web/service.rb +1 -1
- metadata +26 -5
- data/lib/kubes/docker/build.rb +0 -22
data/lib/kubes/docker.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
module Kubes
|
2
|
+
class Docker
|
3
|
+
def initialize(options, name)
|
4
|
+
@options = options
|
5
|
+
@name = name
|
6
|
+
end
|
7
|
+
|
8
|
+
def run
|
9
|
+
strategy = strategy_class.new(@options, @name) # @name: docker or push
|
10
|
+
strategy.run
|
11
|
+
end
|
12
|
+
|
13
|
+
def strategy_class
|
14
|
+
strategy = Kubes.config.builder.to_s.camelize # IE: Docker or Gcloud
|
15
|
+
klass_name = "Kubes::Docker::Strategy::#{@name.camelize}::#{strategy}"
|
16
|
+
klass_name.constantize
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Kubes::Docker::Strategy::Build
|
2
|
+
class Base
|
3
|
+
extend Memoist
|
4
|
+
include Kubes::Docker::Strategy::Utils
|
5
|
+
|
6
|
+
def initialize(options, name)
|
7
|
+
@options, @name = options, name
|
8
|
+
end
|
9
|
+
|
10
|
+
def run
|
11
|
+
reserve_image_name
|
12
|
+
check_dockerfile!
|
13
|
+
perform
|
14
|
+
store_image_name
|
15
|
+
end
|
16
|
+
|
17
|
+
def check_dockerfile!
|
18
|
+
# Dockerfile is also used in args/default.rb, will have to combine if Dockerfile is made configurable
|
19
|
+
return if File.exist?("Dockerfile")
|
20
|
+
logger.error "ERROR: The Dockerfile does not exist. Cannot build the docker image without a Dockerfile".color(:red)
|
21
|
+
exit 1
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -1,36 +1,6 @@
|
|
1
|
-
module Kubes::Docker
|
2
|
-
|
1
|
+
module Kubes::Docker::Strategy
|
2
|
+
module ImageName
|
3
3
|
extend Memoist
|
4
|
-
include Kubes::Logging
|
5
|
-
include Kubes::Util::Sh
|
6
|
-
|
7
|
-
def initialize(options={})
|
8
|
-
@options = options
|
9
|
-
@name = self.class.name.split('::').last.underscore
|
10
|
-
end
|
11
|
-
|
12
|
-
def run_hooks(name, &block)
|
13
|
-
hooks = Kubes::Hooks::Builder.new(name, "#{Kubes.root}/.kubes/config/docker/hooks.rb")
|
14
|
-
hooks.build # build hooks
|
15
|
-
hooks.run_hooks(&block)
|
16
|
-
end
|
17
|
-
|
18
|
-
def args
|
19
|
-
# base at end in case of redirection. IE: command > /path
|
20
|
-
custom.args + default.args
|
21
|
-
end
|
22
|
-
|
23
|
-
def custom
|
24
|
-
custom = Kubes::Args::Custom.new(@name, "#{Kubes.root}/.kubes/config/docker/args.rb")
|
25
|
-
custom.build
|
26
|
-
custom
|
27
|
-
end
|
28
|
-
memoize :custom
|
29
|
-
|
30
|
-
def default
|
31
|
-
Args::Default.new(@name, image_name, @options)
|
32
|
-
end
|
33
|
-
memoize :default
|
34
4
|
|
35
5
|
@@image_name = nil
|
36
6
|
def reserve_image_name
|
@@ -84,5 +54,22 @@ module Kubes::Docker
|
|
84
54
|
@git_sha = `cd #{Kubes.root} && git rev-parse --short HEAD`
|
85
55
|
@git_sha.strip!
|
86
56
|
end
|
57
|
+
|
58
|
+
def args
|
59
|
+
# base at end in case of redirection. IE: command > /path
|
60
|
+
custom.args + default.args
|
61
|
+
end
|
62
|
+
|
63
|
+
def custom
|
64
|
+
custom = Kubes::Args::Custom.new(@name, "#{Kubes.root}/.kubes/config/docker/args.rb")
|
65
|
+
custom.build
|
66
|
+
custom
|
67
|
+
end
|
68
|
+
memoize :custom
|
69
|
+
|
70
|
+
def default
|
71
|
+
Kubes::Docker::Args::Default.new(@name, image_name, @options)
|
72
|
+
end
|
73
|
+
memoize :default
|
87
74
|
end
|
88
75
|
end
|
data/lib/kubes/hooks/builder.rb
CHANGED
data/lib/kubes/kubectl.rb
CHANGED
@@ -9,17 +9,29 @@ module Kubes
|
|
9
9
|
|
10
10
|
def run
|
11
11
|
validate!
|
12
|
+
|
13
|
+
options = @options.dup
|
14
|
+
options[:exit_on_fail] = exit_on_fail unless exit_on_fail.nil?
|
15
|
+
|
12
16
|
params = args.flatten.join(' ')
|
13
17
|
command = "kubectl #{@name} #{params}" # @name: apply or delete
|
14
|
-
|
15
|
-
options[:exit_on_fail] = exit_on_fail unless exit_on_fail.nil?
|
18
|
+
|
16
19
|
switch_context do
|
17
20
|
run_hooks(@name) do
|
18
|
-
|
21
|
+
if options[:capture]
|
22
|
+
capture(command, options)
|
23
|
+
else
|
24
|
+
sh(command, options)
|
25
|
+
end
|
19
26
|
end
|
20
27
|
end
|
21
28
|
end
|
22
29
|
|
30
|
+
def execute(args, options={})
|
31
|
+
command = "kubectl #{args}"
|
32
|
+
capture(command)
|
33
|
+
end
|
34
|
+
|
23
35
|
# Useful for kustomize mode
|
24
36
|
def validate!
|
25
37
|
return true unless Kubes.kustomize?
|
data/lib/kubes/kubectl/batch.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
class Kubes::Kubectl
|
2
2
|
class Batch
|
3
|
+
include Kubes::Logging
|
3
4
|
include Kubes::Util::Consider
|
4
5
|
include Ordering
|
5
6
|
|
@@ -8,8 +9,14 @@ class Kubes::Kubectl
|
|
8
9
|
end
|
9
10
|
|
10
11
|
def run
|
12
|
+
# @options[:preview] is really only used for kubectl delete
|
13
|
+
logger.info "Will run:" if @options[:preview]
|
11
14
|
sorted_files.each do |file|
|
12
|
-
|
15
|
+
if @options[:preview]
|
16
|
+
logger.info " kubectl #{@name} -f #{file}"
|
17
|
+
else
|
18
|
+
Kubes::Kubectl.run(@name, @options.merge(file: file))
|
19
|
+
end
|
13
20
|
end
|
14
21
|
end
|
15
22
|
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require "json"
|
2
|
+
|
3
|
+
module Kubes::Kubectl::Fetch
|
4
|
+
class Base
|
5
|
+
include Kubes::Logging
|
6
|
+
include Kubes::Util::Sh
|
7
|
+
|
8
|
+
def initialize(options={})
|
9
|
+
@options = options
|
10
|
+
end
|
11
|
+
|
12
|
+
def fetch_items
|
13
|
+
o = {
|
14
|
+
capture: true,
|
15
|
+
output: "json",
|
16
|
+
show_command: false,
|
17
|
+
}
|
18
|
+
kubectl = Kubes::Kubectl.new(:get, @options.merge(o)) # kubes get -f .kubes/output
|
19
|
+
resp = kubectl.run
|
20
|
+
data = JSON.load(resp)
|
21
|
+
data['items']
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Kubes::Kubectl::Fetch
|
2
|
+
class Deployment < Base
|
3
|
+
def metadata
|
4
|
+
items = fetch_items
|
5
|
+
# Not checking if deployment exists because kubes will error on `kubes get` from missing deployments already
|
6
|
+
deployments = items.select { |i| i['kind'] == "Deployment" }
|
7
|
+
|
8
|
+
if deployments.size > 1 && !@options[:name]
|
9
|
+
names = deployments.map { |d| d['metadata']['name'] }
|
10
|
+
logger.info <<~EOL
|
11
|
+
INFO: More than one deployment found.
|
12
|
+
Deployment names: #{names.join(', ')}
|
13
|
+
Using #{names.first}
|
14
|
+
Note: You can specify the deployment to use with --name or -n
|
15
|
+
EOL
|
16
|
+
end
|
17
|
+
|
18
|
+
deployment = find_deployment(deployments)
|
19
|
+
unless deployment
|
20
|
+
logger.error "ERROR: No deployment found".color(:red)
|
21
|
+
exit 1
|
22
|
+
end
|
23
|
+
deployment['metadata']
|
24
|
+
end
|
25
|
+
|
26
|
+
def find_deployment(deployments)
|
27
|
+
if @options[:name]
|
28
|
+
deployments.find { |d| d['metadata']['name'] == @options[:name] }
|
29
|
+
else
|
30
|
+
deployments.first
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Kubes::Kubectl::Fetch
|
2
|
+
class Pods < Base
|
3
|
+
def show
|
4
|
+
items = fetch_items
|
5
|
+
# Not checking if deployment exists because kubes will error on `kubes get` from missing deployments already
|
6
|
+
deployments = items.select { |i| i['kind'] == "Deployment" }
|
7
|
+
|
8
|
+
deployments.each do |deployment|
|
9
|
+
logger.info "Pods for deployment #{deployment['metadata']['name']}:".color(:green)
|
10
|
+
show_for(deployment)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def show_for(deployment)
|
15
|
+
metadata = deployment['metadata']
|
16
|
+
labels = metadata['labels'].map { |k,v| "#{k}=#{v}" }.join(',')
|
17
|
+
ns = metadata['namespace']
|
18
|
+
sh("kubectl get pod -l #{labels} -n #{ns}")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/kubes/util/sh.rb
CHANGED
@@ -32,6 +32,7 @@ module Kubes::Util
|
|
32
32
|
|
33
33
|
def capture(command, options={})
|
34
34
|
exit_on_fail = options[:exit_on_fail].nil? ? true : options[:exit_on_fail]
|
35
|
+
logger.info "=> #{command}" if options[:show_command]
|
35
36
|
out = `#{command}`.strip
|
36
37
|
unless $?.success?
|
37
38
|
logger.error "ERROR: running #{command}".color(:red)
|
data/lib/kubes/version.rb
CHANGED
@@ -7,4 +7,5 @@ image built_image # IE: user/<%= app %>:kubes-2020-06-13T19-55-16-43afc6e
|
|
7
7
|
# revisionHistoryLimit 1 # uncomment to reduce old ReplicaSets, default is 10 https://bit.ly/3hqrzyP
|
8
8
|
# maxUnavailable 25
|
9
9
|
|
10
|
-
# More docs: kubes.guru/docs/dsl/deployment/
|
10
|
+
# More docs: kubes.guru/docs/dsl/resources/deployment/
|
11
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kubes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-07
|
11
|
+
date: 2020-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -235,6 +235,7 @@ files:
|
|
235
235
|
- docs/_docs/auto-context.md
|
236
236
|
- docs/_docs/ci/cloudbuild.md
|
237
237
|
- docs/_docs/config.md
|
238
|
+
- docs/_docs/config/builder.md
|
238
239
|
- docs/_docs/config/docker.md
|
239
240
|
- docs/_docs/config/env.md
|
240
241
|
- docs/_docs/config/kubectl.md
|
@@ -316,6 +317,8 @@ files:
|
|
316
317
|
- docs/_includes/layering/layers.md
|
317
318
|
- docs/_includes/learn/cluster.md
|
318
319
|
- docs/_includes/learn/next-steps.md
|
320
|
+
- docs/_includes/learn/repo
|
321
|
+
- docs/_includes/learn/repos.md
|
319
322
|
- docs/_includes/learn/review.md
|
320
323
|
- docs/_includes/learn/start.md
|
321
324
|
- docs/_includes/reference.md
|
@@ -328,11 +331,15 @@ files:
|
|
328
331
|
- docs/_reference/kubes-completion_script.md
|
329
332
|
- docs/_reference/kubes-delete.md
|
330
333
|
- docs/_reference/kubes-deploy.md
|
334
|
+
- docs/_reference/kubes-describe.md
|
331
335
|
- docs/_reference/kubes-docker-build.md
|
332
336
|
- docs/_reference/kubes-docker-help.md
|
333
337
|
- docs/_reference/kubes-docker-push.md
|
334
338
|
- docs/_reference/kubes-docker.md
|
339
|
+
- docs/_reference/kubes-exec.md
|
340
|
+
- docs/_reference/kubes-get.md
|
335
341
|
- docs/_reference/kubes-init.md
|
342
|
+
- docs/_reference/kubes-logs.md
|
336
343
|
- docs/_reference/kubes-version.md
|
337
344
|
- docs/_sass/bootstrap-overrides.scss
|
338
345
|
- docs/_sass/buttons.scss
|
@@ -359,6 +366,7 @@ files:
|
|
359
366
|
- docs/img/logos/filler-logo.png
|
360
367
|
- docs/img/logos/kubes-black.png
|
361
368
|
- docs/img/logos/kubes-sign.png
|
369
|
+
- docs/img/logos/kubes-white.png
|
362
370
|
- docs/index.html
|
363
371
|
- docs/js/app.js
|
364
372
|
- docs/opal/app.rb
|
@@ -456,12 +464,15 @@ files:
|
|
456
464
|
- lib/kubes/cli/deploy.rb
|
457
465
|
- lib/kubes/cli/describe.rb
|
458
466
|
- lib/kubes/cli/docker.rb
|
467
|
+
- lib/kubes/cli/exec.rb
|
459
468
|
- lib/kubes/cli/get.rb
|
460
469
|
- lib/kubes/cli/help.rb
|
461
470
|
- lib/kubes/cli/help/completion.md
|
462
471
|
- lib/kubes/cli/help/completion_script.md
|
463
472
|
- lib/kubes/cli/help/deploy.md
|
473
|
+
- lib/kubes/cli/help/exec.md
|
464
474
|
- lib/kubes/cli/init.rb
|
475
|
+
- lib/kubes/cli/logs.rb
|
465
476
|
- lib/kubes/cli/sequence.rb
|
466
477
|
- lib/kubes/command.rb
|
467
478
|
- lib/kubes/compiler.rb
|
@@ -513,10 +524,17 @@ files:
|
|
513
524
|
- lib/kubes/completer/script.sh
|
514
525
|
- lib/kubes/config.rb
|
515
526
|
- lib/kubes/core.rb
|
527
|
+
- lib/kubes/docker.rb
|
516
528
|
- lib/kubes/docker/args/default.rb
|
517
|
-
- lib/kubes/docker/base.rb
|
518
|
-
- lib/kubes/docker/build.rb
|
519
|
-
- lib/kubes/docker/
|
529
|
+
- lib/kubes/docker/strategy/build/base.rb
|
530
|
+
- lib/kubes/docker/strategy/build/docker.rb
|
531
|
+
- lib/kubes/docker/strategy/build/gcloud.rb
|
532
|
+
- lib/kubes/docker/strategy/hooks.rb
|
533
|
+
- lib/kubes/docker/strategy/image_name.rb
|
534
|
+
- lib/kubes/docker/strategy/push/base.rb
|
535
|
+
- lib/kubes/docker/strategy/push/docker.rb
|
536
|
+
- lib/kubes/docker/strategy/push/gcloud.rb
|
537
|
+
- lib/kubes/docker/strategy/utils.rb
|
520
538
|
- lib/kubes/hooks/builder.rb
|
521
539
|
- lib/kubes/hooks/dsl.rb
|
522
540
|
- lib/kubes/kubectl.rb
|
@@ -525,6 +543,9 @@ files:
|
|
525
543
|
- lib/kubes/kubectl/args/standard.rb
|
526
544
|
- lib/kubes/kubectl/batch.rb
|
527
545
|
- lib/kubes/kubectl/decider.rb
|
546
|
+
- lib/kubes/kubectl/fetch/base.rb
|
547
|
+
- lib/kubes/kubectl/fetch/deployment.rb
|
548
|
+
- lib/kubes/kubectl/fetch/pods.rb
|
528
549
|
- lib/kubes/kubectl/kustomize.rb
|
529
550
|
- lib/kubes/kubectl/ordering.rb
|
530
551
|
- lib/kubes/logger.rb
|