kuber_kit 1.1.2 → 1.1.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e8c0e83354ec30de497af66249d04c6215dd969e72cb53e81ebcf3865f3c4aee
4
- data.tar.gz: a3e2cc808700f3ffb3409cf06966fe1a145762cf0b6d992846b9f8a91cc9b2a4
3
+ metadata.gz: 107bd2fce24cb2f396cbca12bb77b5b83c412f8a1e7f2bdf034b382235c9c570
4
+ data.tar.gz: fd76a3ca50d55f869e114dd1a5f3a1bae2eebee3c67bbde664c9365ea89ff606
5
5
  SHA512:
6
- metadata.gz: 937fcf8e351cd6177c5768e6be21dc8c25a4aa4e677a182ae448f4c5838cd5d67cce664b79aefce434ca305796368e3e5c2d103eb84de15ad0340402e8ffbbfe
7
- data.tar.gz: 6fd5a04bb20c18e052256e7747b32d3eb78b68ac69e70897f6794c93f96ecb1f3fdbb232dd9dff1650c1580e298ee3529dd016b70bff3f2e4f27ec1713882256
6
+ metadata.gz: a13c1734350136c2474c3333fc2540096e95aabe05039f2eb0cbdb7fb426aa150e1413a3841d7329cbd09ada0f8302443c42df6875f3b486b2e35100bf84fc0e
7
+ data.tar.gz: f2278b48b2d37cdd526acdf57841505d524fefecc0eba83fa2929722d629e7398c8909fffe717c98ff41619aefce3411bfba2c0f1e18ebbbd11ee518eba5d557
data/CHANGELOG.md CHANGED
@@ -1,3 +1,27 @@
1
+ **1.3.1**
2
+ - Fix upgrade command for helm strategy
3
+
4
+ **1.3.0**
5
+ - Allow sending custom apply command for k8s deploy strategy
6
+ - Added initial support for helm deploy strategy
7
+
8
+ **1.2.7**
9
+ - Added an option to skip deployment and only build images for `deploy` command
10
+
11
+ **1.2.6**
12
+ - Lock cli-ui version on 2.1.0 (2.2.x has some bugs)
13
+
14
+ **1.2.5**
15
+ - Improve handling ContextVars, ability to convert context var to OpenStruct
16
+
17
+ **1.2.4**
18
+ - Fix a mistake in setting env variables
19
+ - Added an option to set "use local deployment" variable
20
+ - Allow finding job resources in kit attach and kit log
21
+
22
+ **1.2.2**
23
+ - Support Ruby 3.2.0
24
+
1
25
  **1.2.1**
2
26
  - Update shell commands so that STDERR stream won't be merged for commands using the command result.
3
27
  - kit sh would also set current default configuration
data/README.md CHANGED
@@ -19,7 +19,8 @@ Please install specific kuber_kit version, depending on Ruby version.
19
19
  | Ruby Version | KuberKit Version |
20
20
  | ------------ | ------------ |
21
21
  | 2.6 | 1.0.1 |
22
- | 2.7 | 1.1.2 |
22
+ | 2.7 | 1.1.3 |
23
+ | > 3.0 | 1.2.6 |
23
24
 
24
25
  ## Usage
25
26
 
data/kuber_kit.gemspec CHANGED
@@ -25,11 +25,7 @@ Gem::Specification.new do |spec|
25
25
 
26
26
  spec.required_ruby_version = ">= 2.7.0"
27
27
 
28
- if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.0.0')
29
- spec.add_dependency "contracts", '0.17.0'
30
- else
31
- spec.add_dependency "contracts", '0.16.0'
32
- end
28
+ spec.add_dependency "contracts", '0.16.0'
33
29
 
34
30
  spec.add_dependency "dry-auto_inject", "~> 0.9.0"
35
31
  spec.add_dependency "dry-core", "~> 0.8.1"
@@ -37,7 +33,7 @@ Gem::Specification.new do |spec|
37
33
  spec.add_dependency "dry-container", "~> 0.10.1"
38
34
 
39
35
  spec.add_dependency "thor"
40
- spec.add_dependency "cli-ui"
36
+ spec.add_dependency "cli-ui", '2.1.0'
41
37
  spec.add_dependency "net-ssh"
42
38
  spec.add_dependency "tty-prompt"
43
39
 
@@ -20,6 +20,7 @@ class KuberKit::Actions::ConfigurationLoader
20
20
  configurations_path = options[:configurations_path] || File.join(root_path, configs.configurations_dirname)
21
21
  configuration_name = options[:configuration] || ENV["KUBER_KIT_CONFIGURATION"]
22
22
  load_inventory = options.fetch(:load_inventory, true)
23
+ use_local_deploy = options.fetch(:use_local_deploy, false)
23
24
 
24
25
  ui.print_debug "ConfigurationLoader", "Launching kuber_kit with:"
25
26
  ui.print_debug "ConfigurationLoader", " Root path: #{root_path.to_s.yellow}"
@@ -28,10 +29,11 @@ class KuberKit::Actions::ConfigurationLoader
28
29
  ui.print_debug "ConfigurationLoader", " Infrastructure path: #{infra_path.to_s.yellow}"
29
30
  ui.print_debug "ConfigurationLoader", " Configurations path: #{configurations_path.to_s.yellow}"
30
31
  ui.print_debug "ConfigurationLoader", " Configuration name: #{configuration_name.to_s.yellow}"
32
+ ui.print_debug "ConfigurationLoader", " Use local deploy: #{use_local_deploy.to_s.yellow}"
31
33
 
32
34
  ui.print_info("Logs", "See logs at: #{configs.log_file_path}")
33
35
 
34
- unless File.exists?(root_path)
36
+ unless File.exist?(root_path)
35
37
  ui.print_warning "ConfigurationLoader", "KuberKit root path #{root_path} doesn't exist. You may want to pass it --path parameter."
36
38
  end
37
39
 
@@ -39,6 +41,10 @@ class KuberKit::Actions::ConfigurationLoader
39
41
  raise KuberKit::Error, "The minimal required kuber_kit version is #{configs.kuber_kit_min_version}"
40
42
  end
41
43
 
44
+ if use_local_deploy
45
+ ENV["KUBER_KIT_USE_LOCAL_DEPLOYMENT"] = "true"
46
+ end
47
+
42
48
  load_configurations(configurations_path, configuration_name)
43
49
  load_infrastructure(infra_path)
44
50
 
@@ -84,6 +90,10 @@ class KuberKit::Actions::ConfigurationLoader
84
90
  configuration_name = first_configurations.configuration_name
85
91
  end
86
92
 
93
+ if configuration_store.count > 1 && configuration_name
94
+ ui.print_info("Configuration", "Using configuration: #{configuration_name.to_s.cyan}")
95
+ end
96
+
87
97
  if configuration_store.count > 1 && configuration_name.nil?
88
98
  options = all_configurations.map(&:configuration_name).map(&:to_s)
89
99
  configuration_name = ui.prompt("Please select configuration name (or set it using -C option)", options)
@@ -7,17 +7,20 @@ class KuberKit::Actions::KubectlAttacher
7
7
  ]
8
8
 
9
9
  Contract Maybe[String], Hash => Any
10
- def call(pod_name, options)
10
+ def call(resource_name, options)
11
11
  kubeconfig_path = KuberKit.current_configuration.kubeconfig_path
12
12
  kubectl_entrypoint = KuberKit.current_configuration.kubectl_entrypoint
13
13
  deployer_namespace = KuberKit.current_configuration.deployer_namespace
14
14
 
15
- if !pod_name
16
- pod_name = resource_selector.call("attach")
15
+ if !resource_name
16
+ resource_name = resource_selector.call("attach", additional_resources: [
17
+ KuberKit::Kubernetes::Resources::POD,
18
+ KuberKit::Kubernetes::Resources::JOB
19
+ ])
17
20
  end
18
21
 
19
22
  kubectl_commands.exec(
20
- local_shell, pod_name, "bash", args: "-it",
23
+ local_shell, resource_name, "bash", args: "-it",
21
24
  kubeconfig_path: kubeconfig_path,
22
25
  interactive: true,
23
26
  namespace: deployer_namespace,
@@ -7,12 +7,15 @@ class KuberKit::Actions::KubectlLogs
7
7
  ]
8
8
 
9
9
  Contract Maybe[String], Hash => Any
10
- def call(pod_name, options)
10
+ def call(resource_name, options)
11
11
  kubeconfig_path = KuberKit.current_configuration.kubeconfig_path
12
12
  deployer_namespace = KuberKit.current_configuration.deployer_namespace
13
13
 
14
- if !pod_name
15
- pod_name = resource_selector.call("attach")
14
+ if !resource_name
15
+ resource_name = resource_selector.call("attach", additional_resources: [
16
+ KuberKit::Kubernetes::Resources::POD,
17
+ KuberKit::Kubernetes::Resources::JOB
18
+ ])
16
19
  end
17
20
 
18
21
  args = nil
@@ -21,7 +24,7 @@ class KuberKit::Actions::KubectlLogs
21
24
  end
22
25
 
23
26
  kubectl_commands.logs(
24
- local_shell, pod_name,
27
+ local_shell, resource_name,
25
28
  args: args,
26
29
  kubeconfig_path: kubeconfig_path,
27
30
  namespace: deployer_namespace
@@ -18,9 +18,10 @@ class KuberKit::Actions::ServiceDeployer
18
18
  skip_services: Maybe[ArrayOf[String]],
19
19
  skip_compile: Maybe[Bool],
20
20
  skip_dependencies: Maybe[Bool],
21
+ skip_deployment: Maybe[Bool],
21
22
  require_confirmation: Maybe[Bool],
22
23
  ] => Any
23
- def call(services:, tags:, skip_services: nil, skip_compile: false, skip_dependencies: false, require_confirmation: false)
24
+ def call(services:, tags:, skip_services: nil, skip_compile: false, skip_dependencies: false, skip_deployment: false, require_confirmation: false)
24
25
  deployment_result = KuberKit::Actions::ActionResult.new()
25
26
  current_configuration = KuberKit.current_configuration
26
27
 
@@ -66,6 +67,11 @@ class KuberKit::Actions::ServiceDeployer
66
67
  return false unless compilation_result && compilation_result.succeeded?
67
68
  end
68
69
 
70
+ # Skip service deployment, only compile images.
71
+ if skip_deployment
72
+ return deployment_result
73
+ end
74
+
69
75
  # First deploy initial services.
70
76
  # This feature is used to deploy some services, required for deployment of other services, e.g. env files
71
77
  # Note: Initial services are deployed without dependencies
data/lib/kuber_kit/cli.rb CHANGED
@@ -11,6 +11,7 @@ class KuberKit::CLI < Thor
11
11
  class_option :debug, :type => :boolean, aliases: ["-d"]
12
12
  class_option :configuration, :type => :string, aliases: ["-C"]
13
13
  class_option :user, :type => :string, aliases: ["-u"]
14
+ class_option :use_local_deploy, :type => :boolean, aliases: ["-l"]
14
15
 
15
16
  desc "compile IMAGE_NAMES", "Compile image with IMAGE_NAMES (comma-separated)"
16
17
  def compile(image_names_str)
@@ -42,6 +43,7 @@ class KuberKit::CLI < Thor
42
43
  method_option :skip_dependencies, :type => :boolean, aliases: ["-D"]
43
44
  method_option :require_confirmation, :type => :boolean, aliases: ["-r"]
44
45
  method_option :skip_confirmation, :type => :boolean, aliases: ["-R"]
46
+ method_option :skip_deployment, :type => :boolean, aliases: ["-K"]
45
47
  def deploy
46
48
  setup(options)
47
49
 
@@ -57,6 +59,7 @@ class KuberKit::CLI < Thor
57
59
  skip_services: (options[:skip_services] || []).flatten.uniq,
58
60
  skip_compile: options[:skip_compile] || false,
59
61
  skip_dependencies: options[:skip_dependencies] || false,
62
+ skip_deployment: options[:skip_deployment] || false,
60
63
  require_confirmation: require_confirmation
61
64
  )
62
65
  end
@@ -209,7 +212,7 @@ class KuberKit::CLI < Thor
209
212
  # We should load config before loading any bean, to make sure that bean won't be built with default config
210
213
  root_path = KuberKit::Container['tools.workdir_detector'].call(options)
211
214
  config_file_path = File.join(root_path, APP_CONFIG_FILENAME)
212
- if File.exists?(config_file_path)
215
+ if File.exist?(config_file_path)
213
216
  require config_file_path
214
217
  end
215
218
  end
@@ -181,6 +181,10 @@ class KuberKit::Container
181
181
  KuberKit::Shell::Commands::SystemCommands.new
182
182
  end
183
183
 
184
+ register "shell.helm_commands" do
185
+ KuberKit::Shell::Commands::HelmCommands.new
186
+ end
187
+
184
188
  register "shell.local_shell" do
185
189
  KuberKit::Shell::LocalShell.new
186
190
  end
@@ -1,15 +1,21 @@
1
+ require 'ostruct'
1
2
  class KuberKit::Core::ContextHelper::ContextVars
2
3
  attr_reader :parent, :parent_name
3
4
 
4
5
  BuildArgUndefined = Class.new(KuberKit::Error)
5
6
 
6
- def initialize(context_vars, parent_name = nil, parent = nil)
7
+ def initialize(context_vars, parent_name = nil)
7
8
  @context_vars = context_vars
8
9
  @parent_name = parent_name
9
- @parent = parent
10
10
  end
11
11
 
12
- def read(*variable_names)
12
+ def read(*variable_names, default: nil)
13
+ dig(*variable_names)
14
+ rescue BuildArgUndefined
15
+ return default
16
+ end
17
+
18
+ def dig(*variable_names)
13
19
  result = self
14
20
  variable_names.each do |var|
15
21
  result = result.get_variable_value(var)
@@ -18,7 +24,7 @@ class KuberKit::Core::ContextHelper::ContextVars
18
24
  end
19
25
 
20
26
  def variable_defined?(*variable_names)
21
- read(*variable_names)
27
+ dig(*variable_names)
22
28
  return true
23
29
  rescue BuildArgUndefined
24
30
  return false
@@ -29,15 +35,30 @@ class KuberKit::Core::ContextHelper::ContextVars
29
35
  raise ArgumentError.new("context args does not accept any arguments")
30
36
  end
31
37
 
32
- read(name)
38
+ dig(name)
39
+ end
40
+
41
+ def keys
42
+ @context_vars.keys
33
43
  end
34
44
 
35
45
  def to_h
36
- if @context_vars.is_a?(Hash)
37
- return @context_vars
38
- else
39
- return {value: @context_vars}
46
+ values = keys.map do |key|
47
+ value = get_variable_value(key)
48
+ hash_value = value.respond_to?(:to_h) ? value.to_h : value
49
+ [key, hash_value]
40
50
  end
51
+ Hash[values]
52
+ end
53
+
54
+ def to_struct
55
+ values = keys.map do |key|
56
+ value = get_variable_value(key)
57
+ hash_value = value.respond_to?(:to_struct) ? value.to_struct : value
58
+ [key, hash_value]
59
+ end
60
+ hash = Hash[values]
61
+ OpenStruct.new(hash)
41
62
  end
42
63
 
43
64
  def get_variable_value(variable_name)
@@ -46,23 +67,16 @@ class KuberKit::Core::ContextHelper::ContextVars
46
67
  end
47
68
 
48
69
  if value.is_a?(Hash)
49
- return self.class.new(value, variable_name, self)
70
+ return self.class.new(value, format_arg(variable_name))
50
71
  end
51
72
 
52
73
  value
53
74
  end
54
75
 
55
76
  private
77
+
56
78
 
57
79
  def format_arg(name)
58
- string = [@parent_name, name].compact.join(".")
59
- parent = @parent
60
-
61
- while parent do
62
- string = [parent.parent_name, string].compact.join(".")
63
- parent = parent.parent
64
- end
65
-
66
- string
80
+ [@parent_name, name].compact.join(".")
67
81
  end
68
82
  end
@@ -39,6 +39,10 @@ class KuberKit::Defaults
39
39
  :docker_compose,
40
40
  KuberKit::ServiceDeployer::Strategies::DockerCompose.new
41
41
  )
42
+ container["service_deployer.deployer"].register_strategy(
43
+ :helm,
44
+ KuberKit::ServiceDeployer::Strategies::Helm.new
45
+ )
42
46
 
43
47
  container["shell_launcher.launcher"].register_strategy(
44
48
  :kubernetes,
@@ -0,0 +1,41 @@
1
+ class KuberKit::ServiceDeployer::Strategies::Helm < KuberKit::ServiceDeployer::Strategies::Abstract
2
+ include KuberKit::Import[
3
+ "service_reader.reader",
4
+ "shell.helm_commands",
5
+ "shell.bash_commands",
6
+ "configs",
7
+ ]
8
+
9
+ Contract KuberKit::Shell::AbstractShell, KuberKit::Core::Service => Any
10
+ def deploy(shell, service)
11
+ service_config = reader.read(shell, service)
12
+ chart_root_path = File.join(configs.service_config_dir, "#{service.name}_chart")
13
+ chart_templates_path = File.join(chart_root_path, "templates")
14
+ chart_config_path = File.join(chart_root_path, "Chart.yaml")
15
+ release_path = File.join(chart_templates_path, "release.yaml")
16
+
17
+ bash_commands.mkdir_p(shell, File.dirname(chart_root_path))
18
+ bash_commands.mkdir_p(shell, File.dirname(chart_templates_path))
19
+
20
+ shell.write(release_path, service_config)
21
+ shell.write(chart_config_path, chart_config_content(service.uri))
22
+
23
+ kubeconfig_path = KuberKit.current_configuration.kubeconfig_path
24
+ namespace = KuberKit.current_configuration.deployer_namespace
25
+
26
+ upgrade_result = helm_commands.upgrade(shell, service.uri, chart_root_path, kubeconfig_path: kubeconfig_path, namespace: namespace)
27
+
28
+ upgrade_result
29
+ end
30
+
31
+ def chart_config_content(release_name)
32
+ query = <<-CHART
33
+ apiVersion: v2
34
+ name: #{release_name}
35
+ description: #{release_name}
36
+ type: application
37
+ version: 1.0.0
38
+ appVersion: "1.0.0"
39
+ CHART
40
+ end
41
+ end
@@ -10,7 +10,8 @@ class KuberKit::ServiceDeployer::Strategies::Kubernetes < KuberKit::ServiceDeplo
10
10
  :resource_name,
11
11
  :delete_if_exists,
12
12
  :restart_if_exists,
13
- :wait_for_rollout
13
+ :wait_for_rollout,
14
+ :apply_command
14
15
  ]
15
16
 
16
17
  Contract KuberKit::Shell::AbstractShell, KuberKit::Core::Service => Any
@@ -40,7 +41,12 @@ class KuberKit::ServiceDeployer::Strategies::Kubernetes < KuberKit::ServiceDeplo
40
41
  kubectl_commands.delete_resource(shell, resource_type, resource_name, kubeconfig_path: kubeconfig_path, namespace: namespace)
41
42
  end
42
43
 
43
- apply_result = kubectl_commands.apply_file(shell, config_path, kubeconfig_path: kubeconfig_path, namespace: namespace)
44
+ apply_result = kubectl_commands.apply_file(
45
+ shell, config_path,
46
+ kubeconfig_path: kubeconfig_path,
47
+ namespace: namespace,
48
+ apply_command: strategy_options.fetch(:apply_command, "apply")
49
+ )
44
50
 
45
51
  restart_enabled = strategy_options.fetch(:restart_if_exists, true)
46
52
  wait_for_rollout = strategy_options.fetch(:wait_for_rollout, true)
@@ -44,7 +44,7 @@ class KuberKit::Shell::Commands::DockerCommands
44
44
  if status
45
45
  command_parts << "--filter=\"status=#{status}\""
46
46
  end
47
- command_parts << "--filter=\"name=#{container_name}\""
47
+ command_parts << "--filter=\"name=^/#{container_name}$\""
48
48
 
49
49
  shell.exec!(command_parts.join(" "))
50
50
  end
@@ -0,0 +1,42 @@
1
+ class KuberKit::Shell::Commands::HelmCommands
2
+ Contract KuberKit::Shell::AbstractShell, Or[String, ArrayOf[String]], KeywordArgs[
3
+ kubeconfig_path: Maybe[Or[
4
+ String, KuberKit::Core::ArtifactPath
5
+ ]],
6
+ namespace: Maybe[Or[Symbol, String]],
7
+ interactive: Optional[Bool],
8
+ ] => Any
9
+ def helm_run(shell, command_list, kubeconfig_path: nil, namespace: nil, interactive: false)
10
+ command_parts = []
11
+
12
+ if kubeconfig_path.is_a?(KuberKit::Core::ArtifactPath)
13
+ kubeconfig_path = artifact_path_resolver.call(kubeconfig_path)
14
+ end
15
+
16
+ if kubeconfig_path
17
+ command_parts << "KUBECONFIG=#{kubeconfig_path}"
18
+ end
19
+
20
+ command_parts << "helm"
21
+
22
+ if namespace
23
+ command_parts << "-n #{namespace}"
24
+ end
25
+
26
+ command_parts += Array(command_list).compact
27
+
28
+ if interactive
29
+ shell.interactive!(command_parts.join(" "))
30
+ else
31
+ shell.exec!(command_parts.join(" "))
32
+ end
33
+ end
34
+
35
+ def install(shell, release_name, chart_path, kubeconfig_path: nil, namespace: nil)
36
+ helm_run(shell, "install #{release_name} #{chart_path}", kubeconfig_path: kubeconfig_path, namespace: namespace)
37
+ end
38
+
39
+ def upgrade(shell, release_name, chart_path, kubeconfig_path: nil, namespace: nil)
40
+ helm_run(shell, "upgrade #{release_name} #{chart_path} --install", kubeconfig_path: kubeconfig_path, namespace: namespace)
41
+ end
42
+ end
@@ -39,8 +39,9 @@ class KuberKit::Shell::Commands::KubectlCommands
39
39
  end
40
40
  end
41
41
 
42
- def apply_file(shell, file_path, kubeconfig_path: nil, namespace: nil)
43
- kubectl_run(shell, "apply -f #{file_path}", kubeconfig_path: kubeconfig_path, namespace: namespace)
42
+ def apply_file(shell, file_path, kubeconfig_path: nil, namespace: nil, apply_command: nil)
43
+ apply_command ||= "apply"
44
+ kubectl_run(shell, "#{apply_command} -f #{file_path}", kubeconfig_path: kubeconfig_path, namespace: namespace)
44
45
  end
45
46
 
46
47
  def exec(shell, pod_name, command, args: nil, kubeconfig_path: nil, interactive: false, namespace: nil, entrypoint: nil)
@@ -138,7 +138,7 @@ class KuberKit::Shell::LocalShell < KuberKit::Shell::AbstractShell
138
138
  def ensure_directory_exists(file_path)
139
139
  dir_path = File.dirname(file_path)
140
140
 
141
- unless Dir.exists?(dir_path)
141
+ unless Dir.exist?(dir_path)
142
142
  FileUtils.mkdir_p(dir_path)
143
143
  end
144
144
  end
@@ -26,6 +26,6 @@ class KuberKit::ShellLauncher::Strategies::Kubernetes < KuberKit::ShellLauncher:
26
26
  env_vars << "KUBER_KIT_CONFIGURATION=#{KuberKit.current_configuration.name}"
27
27
  end
28
28
 
29
- shell.replace!(env: ["KUBECONFIG=#{kubeconfig_path}", "KUBER_KIT_SHELL_CONFIGURATION=#{KuberKit.current_configuration.name}"])
29
+ shell.replace!(env: env_vars)
30
30
  end
31
31
  end
@@ -45,7 +45,7 @@ class KuberKit::Tools::LoggerFactory
45
45
  private
46
46
  def prepare_log_file(file_path)
47
47
  dir_path = File.dirname(file_path)
48
- unless Dir.exists?(dir_path)
48
+ unless Dir.exist?(dir_path)
49
49
  FileUtils.mkdir_p(dir_path)
50
50
  end
51
51
  FileUtils.touch(file_path)
@@ -1,3 +1,3 @@
1
1
  module KuberKit
2
- VERSION = "1.1.2"
2
+ VERSION = "1.1.5"
3
3
  end
data/lib/kuber_kit.rb CHANGED
@@ -104,6 +104,7 @@ module KuberKit
104
104
  autoload :RsyncCommands, 'shell/commands/rsync_commands'
105
105
  autoload :KubectlCommands, 'shell/commands/kubectl_commands'
106
106
  autoload :SystemCommands, 'shell/commands/system_commands'
107
+ autoload :HelmCommands, 'shell/commands/helm_commands'
107
108
  end
108
109
  end
109
110
 
@@ -166,6 +167,7 @@ module KuberKit
166
167
  autoload :Docker, 'service_deployer/strategies/docker'
167
168
  autoload :DockerCompose, 'service_deployer/strategies/docker_compose'
168
169
  autoload :Kubernetes, 'service_deployer/strategies/kubernetes'
170
+ autoload :Helm, 'service_deployer/strategies/helm'
169
171
  end
170
172
  end
171
173
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kuber_kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Iskander Khaziev
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-16 00:00:00.000000000 Z
11
+ date: 2023-09-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: contracts
@@ -98,16 +98,16 @@ dependencies:
98
98
  name: cli-ui
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: 2.1.0
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: 2.1.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: net-ssh
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -343,6 +343,7 @@ files:
343
343
  - lib/kuber_kit/service_deployer/strategies/abstract.rb
344
344
  - lib/kuber_kit/service_deployer/strategies/docker.rb
345
345
  - lib/kuber_kit/service_deployer/strategies/docker_compose.rb
346
+ - lib/kuber_kit/service_deployer/strategies/helm.rb
346
347
  - lib/kuber_kit/service_deployer/strategies/kubernetes.rb
347
348
  - lib/kuber_kit/service_deployer/strategy_detector.rb
348
349
  - lib/kuber_kit/service_reader/action_handler.rb
@@ -353,6 +354,7 @@ files:
353
354
  - lib/kuber_kit/shell/commands/docker_commands.rb
354
355
  - lib/kuber_kit/shell/commands/docker_compose_commands.rb
355
356
  - lib/kuber_kit/shell/commands/git_commands.rb
357
+ - lib/kuber_kit/shell/commands/helm_commands.rb
356
358
  - lib/kuber_kit/shell/commands/kubectl_commands.rb
357
359
  - lib/kuber_kit/shell/commands/rsync_commands.rb
358
360
  - lib/kuber_kit/shell/commands/system_commands.rb
@@ -382,7 +384,7 @@ homepage: https://github.com/ArtStation/kuber_kit
382
384
  licenses:
383
385
  - MIT
384
386
  metadata: {}
385
- post_install_message:
387
+ post_install_message:
386
388
  rdoc_options: []
387
389
  require_paths:
388
390
  - lib
@@ -398,7 +400,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
398
400
  version: '0'
399
401
  requirements: []
400
402
  rubygems_version: 3.1.6
401
- signing_key:
403
+ signing_key:
402
404
  specification_version: 4
403
405
  summary: Docker Containers Build & Deployment
404
406
  test_files: []