kuber_kit 1.2.6 → 1.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/.ruby-version +1 -1
- data/CHANGELOG.md +7 -0
- data/lib/kuber_kit/actions/service_deployer.rb +7 -1
- data/lib/kuber_kit/cli.rb +2 -0
- data/lib/kuber_kit/container.rb +4 -0
- data/lib/kuber_kit/service_deployer/strategies/helm.rb +41 -0
- data/lib/kuber_kit/service_deployer/strategies/kubernetes.rb +8 -2
- data/lib/kuber_kit/shell/commands/helm_commands.rb +42 -0
- data/lib/kuber_kit/shell/commands/kubectl_commands.rb +3 -2
- data/lib/kuber_kit/version.rb +1 -1
- data/lib/kuber_kit.rb +2 -0
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6afb44a6d4d220f74b0254b1334eb8c1a54eaed3bb343ac701a88bc25f2afcaa
|
4
|
+
data.tar.gz: dde0f72facc6c08af028bc32ba2d024b1838e036836e94f2785695e43f948d96
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 383427ada7a5ca0ecd9a6db9c6747ecdf830866d2a7ea890706b5201566fa8e4aa59b868b6b49c94ab3524c7f5d7f8e85a8ea137e9d8c973d825d8aef028f1dc
|
7
|
+
data.tar.gz: 66c2f065953353e283dc5986582e5d440b03c2e3e532dd70c717e91288aa15d99b872c1eb337b23dc9a4fd4873c72ded43dcd0fd5f630cf579ae76e01c652eeb
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.2.
|
1
|
+
3.2.2
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
**1.3.0**
|
2
|
+
- Allow sending custom apply command for k8s deploy strategy
|
3
|
+
- Added initial support for helm deploy strategy
|
4
|
+
|
5
|
+
**1.2.7**
|
6
|
+
- Added an option to skip deployment and only build images for `deploy` command
|
7
|
+
|
1
8
|
**1.2.6**
|
2
9
|
- Lock cli-ui version on 2.1.0 (2.2.x has some bugs)
|
3
10
|
|
@@ -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
@@ -43,6 +43,7 @@ class KuberKit::CLI < Thor
|
|
43
43
|
method_option :skip_dependencies, :type => :boolean, aliases: ["-D"]
|
44
44
|
method_option :require_confirmation, :type => :boolean, aliases: ["-r"]
|
45
45
|
method_option :skip_confirmation, :type => :boolean, aliases: ["-R"]
|
46
|
+
method_option :skip_deployment, :type => :boolean, aliases: ["-K"]
|
46
47
|
def deploy
|
47
48
|
setup(options)
|
48
49
|
|
@@ -58,6 +59,7 @@ class KuberKit::CLI < Thor
|
|
58
59
|
skip_services: (options[:skip_services] || []).flatten.uniq,
|
59
60
|
skip_compile: options[:skip_compile] || false,
|
60
61
|
skip_dependencies: options[:skip_dependencies] || false,
|
62
|
+
skip_deployment: options[:skip_deployment] || false,
|
61
63
|
require_confirmation: require_confirmation
|
62
64
|
)
|
63
65
|
end
|
data/lib/kuber_kit/container.rb
CHANGED
@@ -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
|
@@ -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, 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(
|
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)
|
@@ -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
|
-
|
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)
|
data/lib/kuber_kit/version.rb
CHANGED
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.
|
4
|
+
version: 1.3.0
|
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-
|
11
|
+
date: 2023-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: contracts
|
@@ -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
|
@@ -397,8 +399,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
397
399
|
- !ruby/object:Gem::Version
|
398
400
|
version: '0'
|
399
401
|
requirements: []
|
400
|
-
rubygems_version: 3.4.
|
401
|
-
signing_key:
|
402
|
+
rubygems_version: 3.4.10
|
403
|
+
signing_key:
|
402
404
|
specification_version: 4
|
403
405
|
summary: Docker Containers Build & Deployment
|
404
406
|
test_files: []
|