kuber_kit 0.3.8 → 0.4.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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rspec.yml +35 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.md +1 -1
  5. data/TODO.md +2 -1
  6. data/example/infrastructure/artifacts.rb +1 -1
  7. data/example/services/docker_app.rb +12 -0
  8. data/lib/kuber_kit.rb +6 -4
  9. data/lib/kuber_kit/actions/configuration_loader.rb +12 -19
  10. data/lib/kuber_kit/actions/env_file_reader.rb +1 -0
  11. data/lib/kuber_kit/actions/image_compiler.rb +10 -6
  12. data/lib/kuber_kit/actions/service_deployer.rb +10 -7
  13. data/lib/kuber_kit/actions/template_reader.rb +1 -0
  14. data/lib/kuber_kit/artifacts_sync/artifacts_updater.rb +3 -2
  15. data/lib/kuber_kit/cli.rb +38 -25
  16. data/lib/kuber_kit/configs.rb +2 -1
  17. data/lib/kuber_kit/container.rb +6 -2
  18. data/lib/kuber_kit/core/configuration_store.rb +2 -2
  19. data/lib/kuber_kit/core/image_store.rb +2 -2
  20. data/lib/kuber_kit/core/service.rb +5 -5
  21. data/lib/kuber_kit/core/service_factory.rb +0 -6
  22. data/lib/kuber_kit/core/service_store.rb +2 -2
  23. data/lib/kuber_kit/image_compiler/compiler.rb +3 -1
  24. data/lib/kuber_kit/image_compiler/image_builder.rb +9 -1
  25. data/lib/kuber_kit/service_deployer/strategies/docker.rb +26 -9
  26. data/lib/kuber_kit/service_deployer/strategies/docker_compose.rb +3 -0
  27. data/lib/kuber_kit/service_deployer/strategies/kubernetes.rb +3 -1
  28. data/lib/kuber_kit/service_reader/reader.rb +6 -0
  29. data/lib/kuber_kit/shell/commands/docker_commands.rb +59 -14
  30. data/lib/kuber_kit/shell/commands/docker_compose_commands.rb +4 -5
  31. data/lib/kuber_kit/shell/local_shell.rb +6 -6
  32. data/lib/kuber_kit/shell/ssh_shell.rb +4 -4
  33. data/lib/kuber_kit/tools/logger_factory.rb +7 -3
  34. data/lib/kuber_kit/ui/api.rb +48 -0
  35. data/lib/kuber_kit/ui/debug.rb +31 -0
  36. data/lib/kuber_kit/ui/interactive.rb +15 -0
  37. data/lib/kuber_kit/ui/simple.rb +34 -5
  38. data/lib/kuber_kit/version.rb +1 -1
  39. metadata +10 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cdefb838f103f417001c7ff0167d95bc985a1db8b8b97b505426e5f2b98db7f3
4
- data.tar.gz: 13f8f1103796553e56a874064e36a33e66931e73917a141e6fad049c5ced73da
3
+ metadata.gz: f98d973c015745f6a4ccf054e3b97edbd8302683f747842ad6c9c5b3e4e49087
4
+ data.tar.gz: f2e8eb96e320bc73c1c3b03c611d1990515bd55182a93f30b28966b63da0c591
5
5
  SHA512:
6
- metadata.gz: cbd45f1537f9ecc3b2d29a090f85921b47ffda91093aefa7f150d5101ff3bc147f30966febdb37352e6dfb3f7e245a84423a649a0f9d9cdd586dd597634be96c
7
- data.tar.gz: 947ced5481b927993ed9462255fcf7ed656c718e9642fc0f8888b14a41aa630947b89d96f56d9b5a571956c5475c6e711c3a1b604e333b617a5208292e39e9ca
6
+ metadata.gz: d550a0a8738447c939b5f6085ef71c7b79898854ede9c6e526e07f73fd4cf6a660b5a18c4e9277f80b081dc41f21f3371aafa69099d6383c884e954b7d15d9ae
7
+ data.tar.gz: 8b8ae8685c357608a6db776443171a1ea34d387272fe72f4802164e3345c7b6bf37d558d7967e5315d8718dbcf2a6a902cad2c1e3e84bb4de0b5811b1d075574
@@ -0,0 +1,35 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
+
8
+ name: Rspec
9
+
10
+ on:
11
+ push:
12
+ branches: [ main ]
13
+ pull_request:
14
+ branches: [ main ]
15
+
16
+ jobs:
17
+ test:
18
+
19
+ runs-on: ubuntu-latest
20
+ strategy:
21
+ matrix:
22
+ ruby-version: ['2.5', '2.7']
23
+
24
+ steps:
25
+ - uses: actions/checkout@v2
26
+ - name: Set up Ruby
27
+ # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
28
+ # change this to (see https://github.com/ruby/setup-ruby#versioning):
29
+ # uses: ruby/setup-ruby@v1
30
+ uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
31
+ with:
32
+ ruby-version: ${{ matrix.ruby-version }}
33
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
34
+ - name: Run tests
35
+ run: bundle exec rspec spec/
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kuber_kit (0.3.8)
4
+ kuber_kit (0.4.1)
5
5
  cli-ui
6
6
  contracts-lite
7
7
  dry-auto_inject
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # KuberKit
2
2
 
3
- [![Codeship Status for ArtStation/kuber_kit](https://app.codeship.com/projects/1286f0a6-3f90-4c1b-b426-721ed8a6571b/status?branch=master)](https://app.codeship.com/projects/417264)
3
+ [![Rspec](https://github.com/ArtStation/kuber_kit/workflows/Rspec/badge.svg)](https://github.com/ArtStation/kuber_kit/actions?query=workflow%3ARspec)
4
4
 
5
5
  Solution for building & deploying applications on Kubernetes, written in Ruby.
6
6
 
data/TODO.md CHANGED
@@ -5,4 +5,5 @@
5
5
  - allow deploying only services enabled for specific configuration
6
6
  - find a way to always deploy some service, e.g. for migrations and env_files
7
7
  - template should be able to set default attributes
8
- - template should be able to depend on image?
8
+ - template should be able to depend on image?
9
+ - cleanup image builds older than some date
@@ -9,5 +9,5 @@ KuberKit.add_artifact(
9
9
  KuberKit.add_artifact(
10
10
  KuberKit::Core::Artifacts::Git
11
11
  .new(:kuber_kit_repo)
12
- .setup(remote_url: "git@github.com:ArtStation/kuber_kit.git")
12
+ .setup(remote_url: "git@github.com:ArtStation/kuber_kit.git", branch: "main")
13
13
  )
@@ -0,0 +1,12 @@
1
+ KuberKit
2
+ .define_service(:docker_app)
3
+ .images(:ruby_app)
4
+ .deployer_strategy(:docker)
5
+ .attributes(
6
+ deployer: {
7
+ detached: true,
8
+ image_name: :ruby_app,
9
+ container_name: "test_docker_app",
10
+ delete_if_exists: true
11
+ }
12
+ )
@@ -177,6 +177,8 @@ module KuberKit
177
177
  module UI
178
178
  autoload :Interactive, 'ui/interactive'
179
179
  autoload :Simple, 'ui/simple'
180
+ autoload :Debug, 'ui/debug'
181
+ autoload :Api, 'ui/api'
180
182
  end
181
183
 
182
184
  autoload :CLI, 'cli'
@@ -205,12 +207,12 @@ module KuberKit
205
207
  @current_configuration = nil
206
208
  end
207
209
 
208
- def set_debug_mode(value)
209
- @debug_mode = value
210
+ def set_ui_mode(value)
211
+ @ui_mode = value
210
212
  end
211
213
 
212
- def debug_mode?
213
- !!@debug_mode
214
+ def ui_mode
215
+ @ui_mode
214
216
  end
215
217
 
216
218
  def deprecation_warnings_disabled?
@@ -1,13 +1,10 @@
1
1
  class KuberKit::Actions::ConfigurationLoader
2
- APP_CONFIG_FILENAME = "config.rb".freeze
3
-
4
2
  include KuberKit::Import[
5
3
  "core.registry_store",
6
4
  "core.image_store",
7
5
  "core.service_store",
8
6
  "core.configuration_store",
9
7
  "artifacts_sync.artifacts_updater",
10
- "tools.logger",
11
8
  "shell.local_shell",
12
9
  "ui",
13
10
  "configs"
@@ -16,29 +13,24 @@ class KuberKit::Actions::ConfigurationLoader
16
13
  Contract Hash => Any
17
14
  def call(options)
18
15
  root_path = options[:path] || File.join(Dir.pwd, configs.kuber_kit_dirname)
19
-
20
- # require config file first, in case if other dirs are overriden in config
21
- config_file_path = File.join(root_path, APP_CONFIG_FILENAME)
22
- if File.exists?(config_file_path)
23
- require config_file_path
24
- end
25
-
26
16
  images_path = options[:images_path] || File.join(root_path, configs.images_dirname)
27
17
  services_path = options[:services_path] || File.join(root_path, configs.services_dirname)
28
18
  infra_path = options[:infra_path] || File.join(root_path, configs.infra_dirname)
29
19
  configurations_path = options[:configurations_path] || File.join(root_path, configs.configurations_dirname)
30
20
  configuration_name = ENV["KUBER_KIT_CONFIGURATION"] || options[:configuration]
31
21
 
32
- logger.info "Launching kuber_kit with:"
33
- logger.info " Root path: #{root_path.to_s.yellow}"
34
- logger.info " Images path: #{images_path.to_s.yellow}"
35
- logger.info " Services path: #{services_path.to_s.yellow}"
36
- logger.info " Infrastructure path: #{infra_path.to_s.yellow}"
37
- logger.info " Configurations path: #{configurations_path.to_s.yellow}"
38
- logger.info " Configuration name: #{configuration_name.to_s.yellow}"
22
+ ui.print_debug "ConfigurationLoader", "Launching kuber_kit with:"
23
+ ui.print_debug "ConfigurationLoader", " Root path: #{root_path.to_s.yellow}"
24
+ ui.print_debug "ConfigurationLoader", " Images path: #{images_path.to_s.yellow}"
25
+ ui.print_debug "ConfigurationLoader", " Services path: #{services_path.to_s.yellow}"
26
+ ui.print_debug "ConfigurationLoader", " Infrastructure path: #{infra_path.to_s.yellow}"
27
+ ui.print_debug "ConfigurationLoader", " Configurations path: #{configurations_path.to_s.yellow}"
28
+ ui.print_debug "ConfigurationLoader", " Configuration name: #{configuration_name.to_s.yellow}"
29
+
30
+ ui.print_info("Logs", "See logs at: #{configs.log_file_path}")
39
31
 
40
32
  unless File.exists?(root_path)
41
- ui.print_warning "WARNING", "KuberKit root path #{root_path} doesn't exist. You may want to pass it --path parameter."
33
+ ui.print_warning "ConfigurationLoader", "KuberKit root path #{root_path} doesn't exist. You may want to pass it --path parameter."
42
34
  end
43
35
 
44
36
  if Gem::Version.new(KuberKit::VERSION) < Gem::Version.new(configs.kuber_kit_min_version)
@@ -72,6 +64,7 @@ class KuberKit::Actions::ConfigurationLoader
72
64
  true
73
65
  rescue KuberKit::Error => e
74
66
  ui.print_error("Error", e.message)
67
+
75
68
  false
76
69
  end
77
70
 
@@ -104,6 +97,6 @@ class KuberKit::Actions::ConfigurationLoader
104
97
  require(path)
105
98
  end
106
99
  rescue KuberKit::Shell::AbstractShell::DirNotFoundError
107
- logger.warn("Directory with infrastructure not found: #{infra_path}")
100
+ ui.print_warning("ConfigurationLoader", "Directory with infrastructure not found: #{infra_path}")
108
101
  end
109
102
  end
@@ -15,6 +15,7 @@ class KuberKit::Actions::EnvFileReader
15
15
  true
16
16
  rescue KuberKit::Error => e
17
17
  ui.print_error("Error", e.message)
18
+
18
19
  false
19
20
  end
20
21
  end
@@ -3,7 +3,6 @@ class KuberKit::Actions::ImageCompiler
3
3
  "image_compiler.image_dependency_resolver",
4
4
  "image_compiler.build_server_pool_factory",
5
5
  "shell.local_shell",
6
- "tools.logger",
7
6
  "ui",
8
7
  image_compiler: "image_compiler.action_handler",
9
8
  ]
@@ -13,14 +12,17 @@ class KuberKit::Actions::ImageCompiler
13
12
  build_id = generate_build_id
14
13
  build_server_pool = build_server_pool_factory.create()
15
14
 
15
+ compiled_images = []
16
+ compilation_result = {}
16
17
  image_dependency_resolver.each_with_deps(image_names) do |dep_image_names|
17
18
  result = compile_simultaneously(dep_image_names, build_id, build_server_pool)
18
- abort unless result
19
+ compiled_images += dep_image_names
20
+ compilation_result = compilation_result.merge(result)
19
21
  end
20
22
 
21
23
  build_server_pool.disconnect_all
22
24
 
23
- true
25
+ { images: compiled_images, compilation: compilation_result }
24
26
  rescue KuberKit::Error => e
25
27
  ui.print_error("Error", e.message)
26
28
 
@@ -30,20 +32,22 @@ class KuberKit::Actions::ImageCompiler
30
32
  private
31
33
  def compile_simultaneously(image_names, build_id, build_server_pool)
32
34
  task_group = ui.create_task_group
35
+ compiler_result = {}
33
36
  image_names.map do |image_name|
34
37
 
35
- logger.info("Started compiling: #{image_name.to_s.green}")
38
+ ui.print_debug("ImageCompiler", "Started compiling: #{image_name.to_s.green}")
36
39
  task_group.add("Compiling #{image_name.to_s.yellow}") do |task|
37
40
  shell = build_server_pool.get_shell
38
41
 
39
- image_compiler.call(shell, image_name, build_id)
42
+ compiler_result[image_name] = image_compiler.call(shell, image_name, build_id)
40
43
 
41
44
  task.update_title("Compiled #{image_name.to_s.green}")
42
- logger.info("Finished compiling: #{image_name.to_s.green}")
45
+ ui.print_debug("ImageCompiler", "Finished compiling: #{image_name}")
43
46
  end
44
47
 
45
48
  end
46
49
  task_group.wait
50
+ compiler_result
47
51
  end
48
52
 
49
53
  def generate_build_id
@@ -4,7 +4,6 @@ class KuberKit::Actions::ServiceDeployer
4
4
  "service_deployer.service_list_resolver",
5
5
  "core.service_store",
6
6
  "shell.local_shell",
7
- "tools.logger",
8
7
  "ui",
9
8
  service_deployer: "service_deployer.action_handler",
10
9
  ]
@@ -25,7 +24,7 @@ class KuberKit::Actions::ServiceDeployer
25
24
  )
26
25
 
27
26
  unless service_names.any?
28
- ui.print_warning "WARNING", "No service found with given options, nothing will be deployed."
27
+ ui.print_warning "ServiceDeployer", "No service found with given options, nothing will be deployed."
29
28
  end
30
29
 
31
30
  services = service_names.map do |service_name|
@@ -35,9 +34,9 @@ class KuberKit::Actions::ServiceDeployer
35
34
  images_names = services.map(&:images).flatten.uniq
36
35
 
37
36
  compile_images(images_names) unless skip_compile
38
- deploy_services(service_names)
37
+ deployment_result = deploy_services(service_names)
39
38
 
40
- true
39
+ { services: service_names, deployment: deployment_result }
41
40
  rescue KuberKit::Error => e
42
41
  ui.print_error("Error", e.message)
43
42
 
@@ -47,18 +46,22 @@ class KuberKit::Actions::ServiceDeployer
47
46
  def deploy_services(service_names)
48
47
  task_group = ui.create_task_group
49
48
 
49
+ deployer_result = {}
50
+
50
51
  service_names.each do |service_name|
51
52
 
52
- logger.info("Started deploying: #{service_name.to_s.green}")
53
+ ui.print_debug("ServiceDeployer", "Started deploying: #{service_name.to_s.green}")
53
54
  task_group.add("Deploying #{service_name.to_s.yellow}") do |task|
54
- service_deployer.call(local_shell, service_name.to_sym)
55
+ deployer_result[service_name] = service_deployer.call(local_shell, service_name.to_sym)
55
56
 
56
57
  task.update_title("Deployed #{service_name.to_s.green}")
57
- logger.info("Finished deploying: #{service_name.to_s.green}")
58
+ ui.print_debug("ServiceDeployer", "Finished deploying: #{service_name.to_s.green}")
58
59
  end
59
60
  end
60
61
 
61
62
  task_group.wait
63
+
64
+ deployer_result
62
65
  end
63
66
 
64
67
  def compile_images(images_names)
@@ -14,6 +14,7 @@ class KuberKit::Actions::TemplateReader
14
14
  true
15
15
  rescue KuberKit::Error => e
16
16
  ui.print_error("Error", e.message)
17
+
17
18
  false
18
19
  end
19
20
  end
@@ -4,7 +4,8 @@ class KuberKit::ArtifactsSync::ArtifactsUpdater
4
4
  include KuberKit::Import[
5
5
  "artifacts_sync.git_artifact_resolver",
6
6
  "artifacts_sync.null_artifact_resolver",
7
- "tools.logger"
7
+
8
+ "ui"
8
9
  ]
9
10
 
10
11
  def use_resolver(artifact_resolver, artifact_class:)
@@ -23,7 +24,7 @@ class KuberKit::ArtifactsSync::ArtifactsUpdater
23
24
  artifacts.each do |artifact|
24
25
  resolver = @@resolvers[artifact.class]
25
26
 
26
- logger.info "Updating artifact #{artifact.name.to_s.green}"
27
+ ui.print_debug "ArtifactUpdater", "Updating artifact #{artifact.name.to_s.green}"
27
28
 
28
29
  raise ResolverNotFoundError, "Can't find resolver for artifact #{artifact}" if resolver.nil?
29
30
 
@@ -1,16 +1,19 @@
1
1
  require 'thor'
2
2
 
3
3
  class KuberKit::CLI < Thor
4
+ APP_CONFIG_FILENAME = "config.rb".freeze
5
+
4
6
  class_option :path, :type => :string
5
7
  class_option :images_path, :type => :string
6
8
  class_option :infra_path, :type => :string
7
9
  class_option :configurations_path, :type => :string
10
+ class_option :ui, :type => :string, :desc => "UI mode (interactive|debug|simple)"
8
11
  class_option :debug, :type => :boolean, aliases: ["-d"]
9
12
  class_option :configuration, :type => :string, aliases: ["-C"]
10
13
 
11
14
  desc "compile IMAGE_NAMES", "Compile image with IMAGE_NAMES (comma-separated)"
12
15
  def compile(image_names_str)
13
- KuberKit.set_debug_mode(options[:debug])
16
+ setup(options)
14
17
 
15
18
  image_names = image_names_str.split(",").map(&:strip).map(&:to_sym)
16
19
 
@@ -18,15 +21,10 @@ class KuberKit::CLI < Thor
18
21
  result = KuberKit::Container['actions.image_compiler'].call(image_names, options)
19
22
  end
20
23
 
21
- logger = KuberKit::Container['tools.logger']
22
24
  if result
23
- logger.info("---------------------------")
24
- logger.info("Image compilation finished!")
25
- logger.info("---------------------------")
25
+ print_result("Image compilation finished!", result: result)
26
26
  else
27
- logger.info("-------------------------".red)
28
- logger.info("Image compilation failed!".red)
29
- logger.info("-------------------------".red)
27
+ exit 1
30
28
  end
31
29
  end
32
30
 
@@ -35,7 +33,7 @@ class KuberKit::CLI < Thor
35
33
  method_option :tags, :type => :array, aliases: ["-t"]
36
34
  method_option :skip_compile, :type => :boolean, aliases: ["-B"]
37
35
  def deploy
38
- KuberKit.set_debug_mode(options[:debug])
36
+ setup(options)
39
37
 
40
38
  if KuberKit::Container['actions.configuration_loader'].call(options)
41
39
  result = KuberKit::Container['actions.service_deployer'].call(
@@ -45,21 +43,16 @@ class KuberKit::CLI < Thor
45
43
  )
46
44
  end
47
45
 
48
- logger = KuberKit::Container['tools.logger']
49
46
  if result
50
- logger.info("---------------------------")
51
- logger.info("Service deployment finished!")
52
- logger.info("---------------------------")
47
+ print_result("Service deployment finished!", result: result)
53
48
  else
54
- logger.info("-------------------------".red)
55
- logger.info("Service deployment failed!".red)
56
- logger.info("-------------------------".red)
49
+ exit 1
57
50
  end
58
51
  end
59
52
 
60
53
  desc "env ENV_FILE_NAME", "Return content of Env File ENV_FILE_NAME"
61
54
  def env(env_file_name)
62
- KuberKit.set_debug_mode(options[:debug])
55
+ setup(options)
63
56
 
64
57
  if KuberKit::Container['actions.configuration_loader'].call(options)
65
58
  KuberKit::Container['actions.env_file_reader'].call(env_file_name.to_sym, options)
@@ -68,7 +61,7 @@ class KuberKit::CLI < Thor
68
61
 
69
62
  desc "template TEMPLATE_NAME", "Return content of Template TEMPLATE_NAME"
70
63
  def template(template_name)
71
- KuberKit.set_debug_mode(options[:debug])
64
+ setup(options)
72
65
 
73
66
  if KuberKit::Container['actions.configuration_loader'].call(options)
74
67
  KuberKit::Container['actions.template_reader'].call(template_name.to_sym, options)
@@ -77,7 +70,7 @@ class KuberKit::CLI < Thor
77
70
 
78
71
  desc "service SERVICE_NAME", "Return content of Service SERVICE_NAME"
79
72
  def service(service_name)
80
- KuberKit.set_debug_mode(options[:debug])
73
+ setup(options)
81
74
 
82
75
  if KuberKit::Container['actions.configuration_loader'].call(options)
83
76
  KuberKit::Container['actions.service_reader'].call(service_name.to_sym, options)
@@ -86,7 +79,7 @@ class KuberKit::CLI < Thor
86
79
 
87
80
  desc "apply FILE_PATH", "Apply FILE_PATH with kubectl"
88
81
  def apply(file_path)
89
- KuberKit.set_debug_mode(options[:debug])
82
+ setup(options)
90
83
 
91
84
  if KuberKit::Container['actions.configuration_loader'].call(options)
92
85
  KuberKit::Container['actions.kubectl_applier'].call(File.expand_path(file_path), options)
@@ -95,26 +88,26 @@ class KuberKit::CLI < Thor
95
88
 
96
89
  desc "attach POD_NAME", "Attach to POD_NAME using kubectl"
97
90
  def attach(pod_name = nil)
98
- KuberKit.set_debug_mode(options[:debug])
91
+ setup(options)
99
92
 
100
93
  if KuberKit::Container['actions.configuration_loader'].call(options)
101
94
  KuberKit::Container['actions.kubectl_attacher'].call(pod_name, options)
102
95
  end
103
96
  end
104
97
 
105
- desc "launch console in POD_NAME", "Attach to POD_NAME using kubectl & launch bin/console"
98
+ desc "console POD_NAME", "Attach to POD_NAME using kubectl & launch bin/console"
106
99
  def console(pod_name = nil)
107
- KuberKit.set_debug_mode(options[:debug])
100
+ setup(options)
108
101
 
109
102
  if KuberKit::Container['actions.configuration_loader'].call(options)
110
103
  KuberKit::Container['actions.kubectl_console'].call(pod_name, options)
111
104
  end
112
105
  end
113
106
 
114
- desc "show logs for POD_NAME", "Show logs for POD_NAME using kubectl"
107
+ desc "logs POD_NAME", "Show logs for POD_NAME using kubectl"
115
108
  method_option :follow, :type => :boolean, aliases: ["-f"]
116
109
  def logs(pod_name = nil)
117
- KuberKit.set_debug_mode(options[:debug])
110
+ setup(options)
118
111
 
119
112
  if KuberKit::Container['actions.configuration_loader'].call(options)
120
113
  KuberKit::Container['actions.kubectl_logs'].call(pod_name, options)
@@ -129,4 +122,24 @@ class KuberKit::CLI < Thor
129
122
  def self.exit_on_failure?
130
123
  true
131
124
  end
125
+
126
+ private
127
+ def setup(options)
128
+ if options[:debug]
129
+ KuberKit.set_ui_mode(:debug)
130
+ elsif options[:ui]
131
+ KuberKit.set_ui_mode(options[:ui].to_sym)
132
+ end
133
+
134
+ # We should load config before loading any bean, to make sure that bean won't be built with default config
135
+ root_path = options[:path] || File.join(Dir.pwd, KuberKit::Container['configs'].kuber_kit_dirname)
136
+ config_file_path = File.join(root_path, APP_CONFIG_FILENAME)
137
+ if File.exists?(config_file_path)
138
+ require config_file_path
139
+ end
140
+ end
141
+
142
+ def print_result(message, data = {})
143
+ KuberKit::Container['ui'].print_result(message, data)
144
+ end
132
145
  end