kubes 0.7.8 → 0.8.1

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.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +17 -0
  3. data/docs/.gitignore +1 -0
  4. data/docs/Gemfile +2 -0
  5. data/docs/_config.yml +8 -0
  6. data/docs/_docs/config/app-overrides.md +7 -0
  7. data/docs/_docs/config/boot.md +46 -0
  8. data/docs/_docs/config/env.md +29 -2
  9. data/docs/_docs/config/hooks/docker.md +2 -0
  10. data/docs/_docs/config/hooks/generator.md +16 -0
  11. data/docs/_docs/config/hooks/kubectl.md +2 -0
  12. data/docs/_docs/config/hooks/kubes.md +2 -0
  13. data/docs/_docs/config/reference.md +2 -2
  14. data/docs/_docs/config/skip.md +22 -0
  15. data/docs/_docs/helpers/aws/iam-role.md +1 -0
  16. data/docs/_docs/helpers/google/gke.md +1 -1
  17. data/docs/_docs/install/dependencies.md +18 -0
  18. data/docs/_docs/install/gem.md +6 -0
  19. data/docs/_docs/install/standalone/centos.md +70 -0
  20. data/docs/_docs/install/standalone/details/permissions.md +44 -0
  21. data/docs/_docs/install/standalone/details/uninstall.md +16 -0
  22. data/docs/_docs/install/standalone/details.md +20 -0
  23. data/docs/_docs/install/standalone/macosx.md +45 -0
  24. data/docs/_docs/install/standalone/ubuntu.md +48 -0
  25. data/docs/_docs/install/standalone.md +43 -0
  26. data/docs/_docs/install.md +8 -0
  27. data/docs/_docs/learn/dsl/install.md +1 -1
  28. data/docs/_docs/learn/yaml/install.md +1 -1
  29. data/docs/_docs/patterns/central-deployer.md +38 -0
  30. data/docs/_docs/variables/advanced.md +32 -1
  31. data/docs/_docs/variables/basic.md +1 -0
  32. data/docs/_docs/vs/custom.md +2 -0
  33. data/docs/_docs/vs/helm.md +2 -0
  34. data/docs/_docs/vs/kustomize.md +3 -1
  35. data/docs/_docs/vs.md +2 -0
  36. data/docs/_docs/yaml/erb-comment.md +89 -0
  37. data/docs/_includes/banner/foot.html +2 -0
  38. data/docs/_includes/banner/head.html +5 -0
  39. data/docs/_includes/config/app-overrides-cheatsheet.md +44 -0
  40. data/docs/_includes/config/hooks/generator.md +6 -0
  41. data/docs/_includes/content.html +1 -1
  42. data/docs/_includes/install/gem.md +7 -0
  43. data/docs/_includes/install/wrapper.md +9 -0
  44. data/docs/_includes/layering/layers.md +3 -0
  45. data/docs/_includes/learn/next-steps.md +11 -0
  46. data/docs/_includes/sidebar.html +28 -3
  47. data/docs/_includes/videos/learn/vs.md +4 -0
  48. data/docs/_includes/videos/learn.md +12 -0
  49. data/docs/_includes/videos/youtube.md +1 -0
  50. data/docs/_layouts/default.html +3 -0
  51. data/docs/_reference/kubes-new-hook.md +30 -0
  52. data/docs/_reference/kubes-new-variable.md +7 -0
  53. data/docs/_reference/kubes-new.md +1 -0
  54. data/docs/_sass/theme.scss +11 -0
  55. data/docs/bin/web +1 -1
  56. data/docs/js/scripts.js +7 -0
  57. data/kubes.gemspec +1 -0
  58. data/lib/kubes/booter.rb +26 -0
  59. data/lib/kubes/cli/help/new/hook.md +9 -0
  60. data/lib/kubes/cli/help/new/variable.md +6 -0
  61. data/lib/kubes/cli/init.rb +0 -1
  62. data/lib/kubes/cli/new/hook.rb +18 -0
  63. data/lib/kubes/cli/new.rb +4 -0
  64. data/lib/kubes/command.rb +1 -1
  65. data/lib/kubes/compiler/decorator/hashable.rb +1 -1
  66. data/lib/kubes/compiler/layering.rb +9 -0
  67. data/lib/kubes/compiler/shared/runtime_helpers.rb +8 -1
  68. data/lib/kubes/compiler/strategy/erb/comment.rb +46 -0
  69. data/lib/kubes/compiler/strategy/erb.rb +4 -0
  70. data/lib/kubes/compiler/strategy/result.rb +13 -1
  71. data/lib/kubes/compiler.rb +2 -0
  72. data/lib/kubes/config.rb +6 -2
  73. data/lib/kubes/core.rb +4 -0
  74. data/lib/kubes/kubectl/ordering.rb +9 -6
  75. data/lib/kubes/version.rb +1 -1
  76. data/lib/kubes.rb +3 -0
  77. data/lib/templates/new/hooks/docker.rb +9 -0
  78. data/lib/templates/new/hooks/kubectl.rb +11 -0
  79. data/lib/templates/new/hooks/kubes.rb +9 -0
  80. data/lib/templates/yaml/.kubes/resources/base/deployment.yaml.tt +2 -0
  81. data/spec/kubes/compiler/decorator/post/deployment_spec.rb +1 -1
  82. metadata +51 -5
  83. data/docs/_docs/intro/install.md +0 -6
  84. data/docs/_includes/intro/install.md +0 -19
@@ -3,9 +3,9 @@ module Kubes::Compiler::Shared
3
3
  include Kubes::Compiler::Shared::Helpers
4
4
 
5
5
  def load_runtime_helpers
6
- load_custom_variables # also load custom variables
7
6
  load_plugin_helpers
8
7
  load_custom_helpers
8
+ load_custom_variables # also load custom variables
9
9
  end
10
10
 
11
11
  @@custom_helpers_loaded = false
@@ -68,6 +68,13 @@ module Kubes::Compiler::Shared
68
68
  "#{role}/#{kind}/base.rb",
69
69
  "#{role}/#{kind}/#{Kubes.env}.rb",
70
70
  ]
71
+ if Kubes.app
72
+ app_layers = ["#{Kubes.app}.rb"]
73
+ app_layers += layers.map do |path|
74
+ "#{Kubes.app}/#{path}"
75
+ end
76
+ layers += app_layers
77
+ end
71
78
 
72
79
  layers.each do |layer|
73
80
  path = "#{Kubes.root}/.kubes/variables/#{layer}"
@@ -0,0 +1,46 @@
1
+ # Processes the ERB files and looks for comments like
2
+ #
3
+ # #ERB if @testvar
4
+ # - "some yaml"
5
+ # #ERB end
6
+ #
7
+ class Kubes::Compiler::Strategy::Erb
8
+ class Comment
9
+ extend Memoist
10
+
11
+ def initialize(path)
12
+ @path = path
13
+ end
14
+
15
+ def lines
16
+ IO.readlines(@path)
17
+ end
18
+ memoize :lines
19
+
20
+ def process?
21
+ !!lines.detect { |l| l.include?('#ERB') }
22
+ end
23
+
24
+ def process
25
+ new_lines = lines.map do |line|
26
+ md = line.match(/(.*)#ERB(.*)/)
27
+ if md
28
+ "#{md[1]}<%#{md[2]} %>\n"
29
+ else
30
+ line
31
+ end
32
+ end
33
+ content = new_lines.join('')
34
+ IO.write(erb_path, content)
35
+ erb_path
36
+ end
37
+
38
+ def clean
39
+ FileUtils.rm_f(erb_path) unless ENV['KUBES_KEEP_ERB']
40
+ end
41
+
42
+ def erb_path
43
+ "#{@path}.erb"
44
+ end
45
+ end
46
+ end
@@ -17,7 +17,11 @@ class Kubes::Compiler::Strategy
17
17
  def render_result(path)
18
18
  return unless File.exist?(path)
19
19
 
20
+ comment = Comment.new(path)
21
+ path = comment.process if comment.process?
20
22
  yaml = RenderMePretty.result(path, context: self)
23
+ comment.clean if comment.process?
24
+
21
25
  result = yaml_load(path, yaml)
22
26
  # in case of blank yaml doc a Boolean false is returned. else Hash or Array is returned
23
27
  %w[Array Hash].include?(result.class.to_s) ? result : {}
@@ -21,8 +21,20 @@ class Kubes::Compiler::Strategy
21
21
  end
22
22
 
23
23
  def content
24
- result = @data.size == 1 ? @data.first : @data
24
+ data = filter_skip(@data)
25
+ return if data.empty?
26
+ result = data.size == 1 ? data.first : data
25
27
  yaml_dump(result)
26
28
  end
29
+
30
+ def skip?
31
+ content.nil?
32
+ end
33
+
34
+ def filter_skip(data)
35
+ data.reject do |item|
36
+ item.dig('kubes', 'skip')
37
+ end
38
+ end
27
39
  end
28
40
  end
@@ -38,6 +38,8 @@ module Kubes
38
38
  end
39
39
 
40
40
  def write(result)
41
+ return if config_skip?(result.filename)
42
+ return if result.skip?
41
43
  result.decorate!(:post)
42
44
  filename, content = result.filename, result.content
43
45
  dest = "#{Kubes.root}/.kubes/output/#{filename}"
data/lib/kubes/config.rb CHANGED
@@ -18,7 +18,7 @@ module Kubes
18
18
  # Auto-switching options
19
19
  config.kubectl = ActiveSupport::OrderedOptions.new
20
20
  config.kubectl.context = nil
21
- config.kubectl.context_keep = true # after switching context keep it
21
+ config.kubectl.context_keep = false # after switching context keep it
22
22
 
23
23
  # whether or not continue if the kubectl command fails
24
24
  config.kubectl.exit_on_fail = ActiveSupport::OrderedOptions.new
@@ -39,7 +39,7 @@ module Kubes
39
39
  config.skip = []
40
40
 
41
41
  config.state = ActiveSupport::OrderedOptions.new
42
- config.state.path = "#{Kubes.root}/.kubes/state/#{Kubes.env}/data.json"
42
+ config.state.path = ["#{Kubes.root}/.kubes/tmp/state", Kubes.app, "#{Kubes.env}/data.json"].compact.join('/')
43
43
 
44
44
  config.suffix_hash = true # append suffix hash to ConfigMap and Secret
45
45
 
@@ -95,6 +95,10 @@ module Kubes
95
95
  def load_configs
96
96
  evaluate_file(".kubes/config.rb")
97
97
  evaluate_file(".kubes/config/env/#{Kubes.env}.rb")
98
+ if Kubes.app
99
+ evaluate_file(".kubes/config/env/#{Kubes.app}.rb")
100
+ evaluate_file(".kubes/config/env/#{Kubes.app}/#{Kubes.env}.rb")
101
+ end
98
102
  Kubes::Plugin.plugins.each do |klass|
99
103
  # klass: IE: KubesAws, KubesGoogle
100
104
  name = klass.to_s.underscore.sub('kubes_','') # kubes_google => google
data/lib/kubes/core.rb CHANGED
@@ -2,6 +2,10 @@ module Kubes
2
2
  module Core
3
3
  extend Memoist
4
4
 
5
+ def app
6
+ ENV['KUBES_APP']
7
+ end
8
+
5
9
  def env
6
10
  ENV['KUBES_ENV'] || "dev"
7
11
  end
@@ -13,20 +13,23 @@ class Kubes::Kubectl
13
13
  "#{role_i}/#{kind_i}"
14
14
  end
15
15
 
16
- sorted = filter_files(sorted)
16
+ sorted = filter_skip(sorted)
17
17
 
18
18
  @name == "delete" ? sorted.reverse : sorted
19
19
  end
20
20
 
21
- def filter_files(sorted)
22
- skip = Kubes.config.skip
23
- skip += ENV['KUBES_SKIP'].split(' ') if ENV['KUBES_SKIP']
24
- return sorted if skip.empty?
21
+ def filter_skip(sorted)
25
22
  sorted.reject do |file|
26
- skip.detect { |text| file.include?(text) }
23
+ config_skip?(file)
27
24
  end
28
25
  end
29
26
 
27
+ def config_skip?(file)
28
+ skip = Kubes.config.skip
29
+ skip += ENV['KUBES_SKIP'].split(' ') if ENV['KUBES_SKIP']
30
+ !!skip.detect { |pattern| file.include?(pattern) }
31
+ end
32
+
30
33
  # type: kinds or roles
31
34
  # value: Examples: kind: deployment, role: web
32
35
  def index_for(type, value)
data/lib/kubes/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Kubes
2
- VERSION = "0.7.8"
2
+ VERSION = "0.8.1"
3
3
  end
data/lib/kubes.rb CHANGED
@@ -5,6 +5,7 @@ $:.unshift(File.expand_path("../", __FILE__))
5
5
  require "kubes/autoloader"
6
6
  Kubes::Autoloader.setup
7
7
 
8
+ require "active_support"
8
9
  require "active_support/core_ext/class"
9
10
  require "active_support/core_ext/hash"
10
11
  require "active_support/core_ext/string"
@@ -30,3 +31,5 @@ module Kubes
30
31
  class MissingDockerImage < Error; end
31
32
  extend Core
32
33
  end
34
+
35
+ Kubes::Booter.boot
@@ -0,0 +1,9 @@
1
+ # Docs: https://kubes.guru/docs/config/hooks/docker/
2
+
3
+ before("build",
4
+ execute: "echo 'docker build before hook'",
5
+ )
6
+
7
+ after("build",
8
+ execute: "echo 'docker build after hook'",
9
+ )
@@ -0,0 +1,11 @@
1
+ # Docs: https://kubes.guru/docs/config/hooks/kubectl/
2
+
3
+ before("apply",
4
+ on: "web/deployment",
5
+ execute: "echo 'before apply hook test'",
6
+ )
7
+
8
+ after("delete",
9
+ on: "web/deployment",
10
+ execute: "echo 'after delete hook test'",
11
+ )
@@ -0,0 +1,9 @@
1
+ # Docs: https://kubes.guru/docs/config/hooks/kubes/
2
+
3
+ before("apply",
4
+ execute: "echo 'kubes before apply hook'",
5
+ )
6
+
7
+ after("apply",
8
+ execute: "echo 'kubes after apply hook'",
9
+ )
@@ -2,7 +2,9 @@ spec:
2
2
  selector:
3
3
  matchLabels:
4
4
  app: <%= app %>
5
+ env: <%= Kubes.env %>
5
6
  template:
6
7
  metadata:
7
8
  labels:
8
9
  app: <%= app %>
10
+ env: <%= Kubes.env %>
@@ -137,7 +137,7 @@ describe Kubes::Compiler::Decorator::Post do
137
137
  end
138
138
 
139
139
  context "order" do
140
- # spec to fix issue TODO: add issue number
140
+ # spec to fix issue https://github.com/boltops-tools/kubes/issues/49
141
141
  describe "name first" do
142
142
  let(:data) { fixture("configMap/volumes-name-first") }
143
143
  it "run" do
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.7.8
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-29 00:00:00.000000000 Z
11
+ date: 2022-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: nokogiri
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rainbow
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -273,14 +287,17 @@ files:
273
287
  - docs/_config.yml
274
288
  - docs/_docs/ci/cloudbuild.md
275
289
  - docs/_docs/config.md
290
+ - docs/_docs/config/app-overrides.md
276
291
  - docs/_docs/config/args.md
277
292
  - docs/_docs/config/args/docker.md
278
293
  - docs/_docs/config/args/kubectl.md
294
+ - docs/_docs/config/boot.md
279
295
  - docs/_docs/config/builder.md
280
296
  - docs/_docs/config/docker.md
281
297
  - docs/_docs/config/env.md
282
298
  - docs/_docs/config/hooks.md
283
299
  - docs/_docs/config/hooks/docker.md
300
+ - docs/_docs/config/hooks/generator.md
284
301
  - docs/_docs/config/hooks/kubectl.md
285
302
  - docs/_docs/config/hooks/kubes.md
286
303
  - docs/_docs/config/hooks/ruby.md
@@ -326,11 +343,20 @@ files:
326
343
  - docs/_docs/helpers/google/gke.md
327
344
  - docs/_docs/helpers/google/secrets.md
328
345
  - docs/_docs/helpers/google/service-account.md
346
+ - docs/_docs/install.md
347
+ - docs/_docs/install/dependencies.md
348
+ - docs/_docs/install/gem.md
349
+ - docs/_docs/install/standalone.md
350
+ - docs/_docs/install/standalone/centos.md
351
+ - docs/_docs/install/standalone/details.md
352
+ - docs/_docs/install/standalone/details/permissions.md
353
+ - docs/_docs/install/standalone/details/uninstall.md
354
+ - docs/_docs/install/standalone/macosx.md
355
+ - docs/_docs/install/standalone/ubuntu.md
329
356
  - docs/_docs/intro.md
330
357
  - docs/_docs/intro/concepts.md
331
358
  - docs/_docs/intro/docker-image.md
332
359
  - docs/_docs/intro/how-kubes-works.md
333
- - docs/_docs/intro/install.md
334
360
  - docs/_docs/intro/ordering.md
335
361
  - docs/_docs/intro/ordering/custom.md
336
362
  - docs/_docs/intro/structure.md
@@ -365,6 +391,7 @@ files:
365
391
  - docs/_docs/misc/separate-steps.md
366
392
  - docs/_docs/next-steps.md
367
393
  - docs/_docs/patterns.md
394
+ - docs/_docs/patterns/central-deployer.md
368
395
  - docs/_docs/patterns/clock-web-worker.md
369
396
  - docs/_docs/patterns/migrations.md
370
397
  - docs/_docs/patterns/multiple-envs.md
@@ -384,9 +411,14 @@ files:
384
411
  - docs/_docs/vs/helm.md
385
412
  - docs/_docs/vs/kustomize.md
386
413
  - docs/_docs/yaml.md
414
+ - docs/_docs/yaml/erb-comment.md
387
415
  - docs/_docs/yaml/multiple-files.md
388
416
  - docs/_docs/yaml/multiple-resources.md
417
+ - docs/_includes/banner/foot.html
418
+ - docs/_includes/banner/head.html
389
419
  - docs/_includes/commands.html
420
+ - docs/_includes/config/app-overrides-cheatsheet.md
421
+ - docs/_includes/config/hooks/generator.md
390
422
  - docs/_includes/config/hooks/options.md
391
423
  - docs/_includes/content.html
392
424
  - docs/_includes/dsl/methods.md
@@ -398,8 +430,9 @@ files:
398
430
  - docs/_includes/header.html
399
431
  - docs/_includes/helpers/base64.md
400
432
  - docs/_includes/helpers/generator.md
433
+ - docs/_includes/install/gem.md
434
+ - docs/_includes/install/wrapper.md
401
435
  - docs/_includes/intro/features.md
402
- - docs/_includes/intro/install.md
403
436
  - docs/_includes/js.html
404
437
  - docs/_includes/kubes-steps.md
405
438
  - docs/_includes/layering/layers.md
@@ -413,6 +446,9 @@ files:
413
446
  - docs/_includes/reference.md
414
447
  - docs/_includes/sidebar.html
415
448
  - docs/_includes/variables/generator.md
449
+ - docs/_includes/videos/learn.md
450
+ - docs/_includes/videos/learn/vs.md
451
+ - docs/_includes/videos/youtube.md
416
452
  - docs/_includes/vs/article.md
417
453
  - docs/_includes/vs/kubes/layering.md
418
454
  - docs/_includes/vs/kubes/structure.md
@@ -435,6 +471,7 @@ files:
435
471
  - docs/_reference/kubes-logs.md
436
472
  - docs/_reference/kubes-new-help.md
437
473
  - docs/_reference/kubes-new-helper.md
474
+ - docs/_reference/kubes-new-hook.md
438
475
  - docs/_reference/kubes-new-resource.md
439
476
  - docs/_reference/kubes-new-variable.md
440
477
  - docs/_reference/kubes-new.md
@@ -468,6 +505,7 @@ files:
468
505
  - docs/img/logos/kubes-white.png
469
506
  - docs/index.html
470
507
  - docs/js/app.js
508
+ - docs/js/scripts.js
471
509
  - docs/opal/app.rb
472
510
  - docs/opal/pager.rb
473
511
  - docs/opal/sidebar.rb
@@ -560,6 +598,7 @@ files:
560
598
  - lib/kubes/auth/gcr.rb
561
599
  - lib/kubes/autoloader.rb
562
600
  - lib/kubes/aws_services.rb
601
+ - lib/kubes/booter.rb
563
602
  - lib/kubes/cli.rb
564
603
  - lib/kubes/cli/apply.rb
565
604
  - lib/kubes/cli/base.rb
@@ -578,11 +617,14 @@ files:
578
617
  - lib/kubes/cli/help/deploy.md
579
618
  - lib/kubes/cli/help/exec.md
580
619
  - lib/kubes/cli/help/new/helper.md
620
+ - lib/kubes/cli/help/new/hook.md
581
621
  - lib/kubes/cli/help/new/resource.md
622
+ - lib/kubes/cli/help/new/variable.md
582
623
  - lib/kubes/cli/init.rb
583
624
  - lib/kubes/cli/logs.rb
584
625
  - lib/kubes/cli/new.rb
585
626
  - lib/kubes/cli/new/helper.rb
627
+ - lib/kubes/cli/new/hook.rb
586
628
  - lib/kubes/cli/new/resource.rb
587
629
  - lib/kubes/cli/new/variable.rb
588
630
  - lib/kubes/cli/prune.rb
@@ -628,6 +670,7 @@ files:
628
670
  - lib/kubes/compiler/strategy/base.rb
629
671
  - lib/kubes/compiler/strategy/dispatcher.rb
630
672
  - lib/kubes/compiler/strategy/erb.rb
673
+ - lib/kubes/compiler/strategy/erb/comment.rb
631
674
  - lib/kubes/compiler/strategy/erb/yaml_error.rb
632
675
  - lib/kubes/compiler/strategy/pass.rb
633
676
  - lib/kubes/compiler/strategy/result.rb
@@ -683,6 +726,9 @@ files:
683
726
  - lib/templates/dsl/.kubes/resources/web/deployment/prod.rb
684
727
  - lib/templates/dsl/.kubes/resources/web/service.rb
685
728
  - lib/templates/new/helper/file.rb
729
+ - lib/templates/new/hooks/docker.rb
730
+ - lib/templates/new/hooks/kubectl.rb
731
+ - lib/templates/new/hooks/kubes.rb
686
732
  - lib/templates/new/resource/dsl/backend_config.rb
687
733
  - lib/templates/new/resource/dsl/config_map.rb
688
734
  - lib/templates/new/resource/dsl/daemon_set.rb
@@ -796,7 +842,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
796
842
  - !ruby/object:Gem::Version
797
843
  version: '0'
798
844
  requirements: []
799
- rubygems_version: 3.1.6
845
+ rubygems_version: 3.2.32
800
846
  signing_key:
801
847
  specification_version: 4
802
848
  summary: 'Kubernetes Deployment Tool: build docker image, compile Kubernetes YAML
@@ -1,6 +0,0 @@
1
- ---
2
- title: Installation
3
- ---
4
-
5
- {% include intro/install.md %}
6
-
@@ -1,19 +0,0 @@
1
- ## RubyGems
2
-
3
- Install kubes via RubyGems.
4
-
5
- gem install kubes
6
-
7
- Ruby 2.7 and above is recommended.
8
-
9
- ## kubectl
10
-
11
- Kubes calls kubectl. Kubes has been tested with kubectl v1.15+. Generally, it should work with most versions of kubectl.
12
-
13
- ## docker
14
-
15
- Kubes calls docker. Kubes has been tested with docker 18.x-ce+. Generally, it should work with most versions of docker.
16
-
17
- ## gcloud
18
-
19
- If you are using the [gcloud builder](% link _docs/config/builder.md %), set up and configure the [gcloud cli](https://cloud.google.com/sdk/install).