kubes 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.dockerignore +4 -0
- data/CHANGELOG.md +18 -1
- data/Dockerfile +14 -0
- data/docs/_docs/auto-context.md +4 -4
- data/docs/_docs/ci/cloudbuild.md +69 -0
- data/docs/_docs/config/builder.md +46 -0
- data/docs/_docs/config/env.md +3 -3
- data/docs/_docs/dsl/resources/deployment.md +0 -5
- data/docs/_docs/dsl/resources/network_policy.md +1 -1
- data/docs/_docs/dsl/resources/service.md +21 -5
- data/docs/_docs/helpers.md +2 -2
- 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 -1
- data/docs/_docs/learn/yaml/review-project.md +0 -5
- data/docs/_docs/yaml.md +0 -5
- 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 +6 -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/bin/web +1 -1
- data/docs/reference.md +4 -0
- data/lib/kubes/cli.rb +21 -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 +33 -0
- data/lib/kubes/cli/get.rb +3 -1
- data/lib/kubes/cli/help/exec.md +17 -0
- data/lib/kubes/cli/logs.rb +13 -0
- data/lib/kubes/compiler/dsl/syntax/deployment.rb +77 -10
- data/lib/kubes/compiler/dsl/syntax/service.rb +11 -0
- data/lib/kubes/compiler/shared/helpers.rb +2 -1
- 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 +3 -1
- data/lib/templates/dsl/.kubes/resources/web/service.rb +1 -1
- data/lib/templates/yaml/.kubes/resources/web/deployment.yaml.tt +0 -5
- metadata +28 -5
- data/lib/kubes/docker/build.rb +0 -22
@@ -33,8 +33,19 @@ module Kubes::Compiler::Dsl::Syntax
|
|
33
33
|
|
34
34
|
def default_spec
|
35
35
|
{
|
36
|
+
clusterIP: clusterIP,
|
37
|
+
externalIPs: externalIPs,
|
38
|
+
externalName: externalName,
|
39
|
+
externalTrafficPolicy: externalTrafficPolicy,
|
40
|
+
healthCheckNodePort: healthCheckNodePort,
|
41
|
+
ipFamily: ipFamily,
|
42
|
+
loadBalancerIP: loadBalancerIP,
|
43
|
+
loadBalancerSourceRanges: loadBalancerSourceRanges,
|
36
44
|
ports: ports,
|
45
|
+
publishNotReadyAddresses: publishNotReadyAddresses,
|
37
46
|
selector: selector,
|
47
|
+
sessionAffinity: sessionAffinity,
|
48
|
+
sessionAffinityConfig: sessionAffinityConfig,
|
38
49
|
type: type,
|
39
50
|
}
|
40
51
|
end
|
data/lib/kubes/config.rb
CHANGED
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
|
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
@@ -5,5 +5,7 @@ replicas 1
|
|
5
5
|
image built_image # IE: user/<%= app %>:kubes-2020-06-13T19-55-16-43afc6e
|
6
6
|
|
7
7
|
# revisionHistoryLimit 1 # uncomment to reduce old ReplicaSets, default is 10 https://bit.ly/3hqrzyP
|
8
|
+
# maxUnavailable 25
|
9
|
+
|
10
|
+
# More docs: kubes.guru/docs/dsl/resources/deployment/
|
8
11
|
|
9
|
-
# More docs: kubes.guru/docs/dsl/deployment/
|
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.
|
4
|
+
version: 0.3.0
|
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-
|
11
|
+
date: 2020-08-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -214,9 +214,11 @@ executables:
|
|
214
214
|
extensions: []
|
215
215
|
extra_rdoc_files: []
|
216
216
|
files:
|
217
|
+
- ".dockerignore"
|
217
218
|
- ".gitignore"
|
218
219
|
- ".rspec"
|
219
220
|
- CHANGELOG.md
|
221
|
+
- Dockerfile
|
220
222
|
- Gemfile
|
221
223
|
- Guardfile
|
222
224
|
- LICENSE.txt
|
@@ -231,7 +233,9 @@ files:
|
|
231
233
|
- docs/Rakefile
|
232
234
|
- docs/_config.yml
|
233
235
|
- docs/_docs/auto-context.md
|
236
|
+
- docs/_docs/ci/cloudbuild.md
|
234
237
|
- docs/_docs/config.md
|
238
|
+
- docs/_docs/config/builder.md
|
235
239
|
- docs/_docs/config/docker.md
|
236
240
|
- docs/_docs/config/env.md
|
237
241
|
- docs/_docs/config/kubectl.md
|
@@ -313,6 +317,8 @@ files:
|
|
313
317
|
- docs/_includes/layering/layers.md
|
314
318
|
- docs/_includes/learn/cluster.md
|
315
319
|
- docs/_includes/learn/next-steps.md
|
320
|
+
- docs/_includes/learn/repo
|
321
|
+
- docs/_includes/learn/repos.md
|
316
322
|
- docs/_includes/learn/review.md
|
317
323
|
- docs/_includes/learn/start.md
|
318
324
|
- docs/_includes/reference.md
|
@@ -325,11 +331,15 @@ files:
|
|
325
331
|
- docs/_reference/kubes-completion_script.md
|
326
332
|
- docs/_reference/kubes-delete.md
|
327
333
|
- docs/_reference/kubes-deploy.md
|
334
|
+
- docs/_reference/kubes-describe.md
|
328
335
|
- docs/_reference/kubes-docker-build.md
|
329
336
|
- docs/_reference/kubes-docker-help.md
|
330
337
|
- docs/_reference/kubes-docker-push.md
|
331
338
|
- docs/_reference/kubes-docker.md
|
339
|
+
- docs/_reference/kubes-exec.md
|
340
|
+
- docs/_reference/kubes-get.md
|
332
341
|
- docs/_reference/kubes-init.md
|
342
|
+
- docs/_reference/kubes-logs.md
|
333
343
|
- docs/_reference/kubes-version.md
|
334
344
|
- docs/_sass/bootstrap-overrides.scss
|
335
345
|
- docs/_sass/buttons.scss
|
@@ -453,12 +463,15 @@ files:
|
|
453
463
|
- lib/kubes/cli/deploy.rb
|
454
464
|
- lib/kubes/cli/describe.rb
|
455
465
|
- lib/kubes/cli/docker.rb
|
466
|
+
- lib/kubes/cli/exec.rb
|
456
467
|
- lib/kubes/cli/get.rb
|
457
468
|
- lib/kubes/cli/help.rb
|
458
469
|
- lib/kubes/cli/help/completion.md
|
459
470
|
- lib/kubes/cli/help/completion_script.md
|
460
471
|
- lib/kubes/cli/help/deploy.md
|
472
|
+
- lib/kubes/cli/help/exec.md
|
461
473
|
- lib/kubes/cli/init.rb
|
474
|
+
- lib/kubes/cli/logs.rb
|
462
475
|
- lib/kubes/cli/sequence.rb
|
463
476
|
- lib/kubes/command.rb
|
464
477
|
- lib/kubes/compiler.rb
|
@@ -510,10 +523,17 @@ files:
|
|
510
523
|
- lib/kubes/completer/script.sh
|
511
524
|
- lib/kubes/config.rb
|
512
525
|
- lib/kubes/core.rb
|
526
|
+
- lib/kubes/docker.rb
|
513
527
|
- lib/kubes/docker/args/default.rb
|
514
|
-
- lib/kubes/docker/base.rb
|
515
|
-
- lib/kubes/docker/build.rb
|
516
|
-
- lib/kubes/docker/
|
528
|
+
- lib/kubes/docker/strategy/build/base.rb
|
529
|
+
- lib/kubes/docker/strategy/build/docker.rb
|
530
|
+
- lib/kubes/docker/strategy/build/gcloud.rb
|
531
|
+
- lib/kubes/docker/strategy/hooks.rb
|
532
|
+
- lib/kubes/docker/strategy/image_name.rb
|
533
|
+
- lib/kubes/docker/strategy/push/base.rb
|
534
|
+
- lib/kubes/docker/strategy/push/docker.rb
|
535
|
+
- lib/kubes/docker/strategy/push/gcloud.rb
|
536
|
+
- lib/kubes/docker/strategy/utils.rb
|
517
537
|
- lib/kubes/hooks/builder.rb
|
518
538
|
- lib/kubes/hooks/dsl.rb
|
519
539
|
- lib/kubes/kubectl.rb
|
@@ -522,6 +542,9 @@ files:
|
|
522
542
|
- lib/kubes/kubectl/args/standard.rb
|
523
543
|
- lib/kubes/kubectl/batch.rb
|
524
544
|
- lib/kubes/kubectl/decider.rb
|
545
|
+
- lib/kubes/kubectl/fetch/base.rb
|
546
|
+
- lib/kubes/kubectl/fetch/deployment.rb
|
547
|
+
- lib/kubes/kubectl/fetch/pods.rb
|
525
548
|
- lib/kubes/kubectl/kustomize.rb
|
526
549
|
- lib/kubes/kubectl/ordering.rb
|
527
550
|
- lib/kubes/logger.rb
|