kuber_kit 1.1.8 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/rspec.yml +1 -1
- data/.ruby-version +1 -1
- data/CHANGELOG.md +0 -48
- data/README.md +2 -2
- data/kuber_kit.gemspec +3 -3
- data/lib/kuber_kit/actions/configuration_loader.rb +3 -13
- data/lib/kuber_kit/actions/kubectl_attacher.rb +4 -7
- data/lib/kuber_kit/actions/kubectl_get.rb +3 -3
- data/lib/kuber_kit/actions/kubectl_logs.rb +4 -7
- data/lib/kuber_kit/actions/service_deployer.rb +27 -40
- data/lib/kuber_kit/artifacts_sync/abstract_artifact_resolver.rb +5 -0
- data/lib/kuber_kit/artifacts_sync/artifact_updater.rb +9 -19
- data/lib/kuber_kit/artifacts_sync/git_artifact_resolver.rb +31 -0
- data/lib/kuber_kit/artifacts_sync/null_artifact_resolver.rb +7 -0
- data/lib/kuber_kit/cli.rb +2 -36
- data/lib/kuber_kit/configs.rb +1 -4
- data/lib/kuber_kit/container.rb +4 -28
- data/lib/kuber_kit/core/artifacts/abstract_artifact.rb +0 -8
- data/lib/kuber_kit/core/artifacts/git.rb +1 -10
- data/lib/kuber_kit/core/artifacts/local.rb +0 -8
- data/lib/kuber_kit/core/configuration.rb +6 -10
- data/lib/kuber_kit/core/configuration_definition.rb +9 -30
- data/lib/kuber_kit/core/configuration_factory.rb +1 -3
- data/lib/kuber_kit/core/context_helper/base_helper.rb +7 -1
- data/lib/kuber_kit/core/context_helper/context_helper_factory.rb +1 -3
- data/lib/kuber_kit/core/context_helper/context_vars.rb +19 -33
- data/lib/kuber_kit/core/context_helper/service_helper.rb +1 -15
- data/lib/kuber_kit/core/dependencies/abstract_dependency_resolver.rb +0 -7
- data/lib/kuber_kit/core/service.rb +5 -8
- data/lib/kuber_kit/core/service_definition.rb +4 -16
- data/lib/kuber_kit/core/service_factory.rb +1 -2
- data/lib/kuber_kit/defaults.rb +4 -13
- data/lib/kuber_kit/image_compiler/image_builder.rb +1 -1
- data/lib/kuber_kit/service_deployer/service_dependency_resolver.rb +1 -1
- data/lib/kuber_kit/service_deployer/strategies/kubernetes.rb +2 -8
- data/lib/kuber_kit/service_reader/reader.rb +10 -2
- data/lib/kuber_kit/shell/commands/bash_commands.rb +6 -6
- data/lib/kuber_kit/shell/commands/docker_commands.rb +5 -5
- data/lib/kuber_kit/shell/commands/docker_compose_commands.rb +1 -1
- data/lib/kuber_kit/shell/commands/git_commands.rb +12 -19
- data/lib/kuber_kit/shell/commands/kubectl_commands.rb +4 -5
- data/lib/kuber_kit/shell/commands/rsync_commands.rb +1 -1
- data/lib/kuber_kit/shell/commands/system_commands.rb +1 -1
- data/lib/kuber_kit/shell/local_shell.rb +8 -12
- data/lib/kuber_kit/shell/ssh_session.rb +1 -5
- data/lib/kuber_kit/shell/ssh_shell.rb +2 -2
- data/lib/kuber_kit/shell_launcher/strategies/kubernetes.rb +1 -10
- data/lib/kuber_kit/template_reader/reader.rb +0 -1
- data/lib/kuber_kit/template_reader/strategies/artifact_file.rb +0 -1
- data/lib/kuber_kit/tools/logger_factory.rb +1 -1
- data/lib/kuber_kit/version.rb +1 -1
- data/lib/kuber_kit.rb +3 -23
- metadata +13 -24
- data/lib/kuber_kit/actions/service_generator.rb +0 -20
- data/lib/kuber_kit/artifacts_sync/strategies/abstract.rb +0 -9
- data/lib/kuber_kit/artifacts_sync/strategies/git_updater.rb +0 -46
- data/lib/kuber_kit/artifacts_sync/strategies/null_updater.rb +0 -12
- data/lib/kuber_kit/core/context_helper/abstract_helper.rb +0 -5
- data/lib/kuber_kit/core/context_helper/local_context_helper.rb +0 -14
- data/lib/kuber_kit/service_deployer/strategies/helm.rb +0 -41
- data/lib/kuber_kit/service_generator/action_handler.rb +0 -16
- data/lib/kuber_kit/service_generator/generator.rb +0 -26
- data/lib/kuber_kit/service_generator/strategies/abstract.rb +0 -5
- data/lib/kuber_kit/service_generator/strategies/helm.rb +0 -33
- data/lib/kuber_kit/service_generator/strategy_detector.rb +0 -6
- data/lib/kuber_kit/shell/commands/helm_commands.rb +0 -42
- data/lib/kuber_kit/template_reader/renderer.rb +0 -17
@@ -1,43 +1,36 @@
|
|
1
1
|
class KuberKit::Shell::Commands::GitCommands
|
2
2
|
def get_remote_url(shell, git_repo_path, remote_name: "origin")
|
3
|
-
shell.exec!
|
3
|
+
shell.exec! [
|
4
4
|
"cd #{git_repo_path}",
|
5
5
|
"git config --get remote.#{remote_name}.url",
|
6
|
-
].join(" && ")
|
7
|
-
rescue KuberKit::Shell::AbstractShell::ShellError
|
8
|
-
return nil
|
9
|
-
end
|
10
|
-
|
11
|
-
def get_branch_name(shell, git_repo_path, remote_name: "origin")
|
12
|
-
shell.exec!([
|
13
|
-
"cd #{git_repo_path}",
|
14
|
-
"git rev-parse --abbrev-ref HEAD",
|
15
|
-
].join(" && "), merge_stderr: true)
|
6
|
+
].join(" && ")
|
16
7
|
rescue KuberKit::Shell::AbstractShell::ShellError
|
17
8
|
return nil
|
18
9
|
end
|
19
10
|
|
20
11
|
def get_version_hash(shell, git_repo_path)
|
21
|
-
shell.exec!
|
12
|
+
shell.exec! [
|
22
13
|
"cd #{git_repo_path}",
|
23
14
|
"git rev-parse --short HEAD",
|
24
|
-
].join(" && ")
|
15
|
+
].join(" && ")
|
25
16
|
end
|
26
17
|
|
27
18
|
def download_repo(shell, remote_url:, path:, branch:)
|
28
|
-
shell.exec!
|
19
|
+
shell.exec! [
|
29
20
|
"rm -rf #{path}",
|
30
21
|
"mkdir -p #{path}",
|
31
22
|
"git clone -b #{branch} --depth 1 #{remote_url} #{path}",
|
32
|
-
].join(" && ")
|
23
|
+
].join(" && ")
|
33
24
|
end
|
34
25
|
|
35
26
|
def force_pull_repo(shell, path:, branch:)
|
36
|
-
shell.exec!
|
27
|
+
shell.exec! [
|
37
28
|
"cd #{path}",
|
38
29
|
"git add .",
|
39
|
-
"git
|
40
|
-
"git
|
41
|
-
|
30
|
+
"git reset HEAD --hard",
|
31
|
+
"git checkout #{branch}",
|
32
|
+
"git reset --hard '@{u}'",
|
33
|
+
"git pull --force",
|
34
|
+
].join(" && ")
|
42
35
|
end
|
43
36
|
end
|
@@ -10,8 +10,8 @@ class KuberKit::Shell::Commands::KubectlCommands
|
|
10
10
|
kubeconfig_path: Maybe[Or[
|
11
11
|
String, KuberKit::Core::ArtifactPath
|
12
12
|
]],
|
13
|
-
namespace:
|
14
|
-
interactive:
|
13
|
+
namespace: Maybe[Or[Symbol, String]],
|
14
|
+
interactive: Optional[Bool],
|
15
15
|
] => Any
|
16
16
|
def kubectl_run(shell, command_list, kubeconfig_path: nil, namespace: nil, interactive: false)
|
17
17
|
command_parts = []
|
@@ -39,9 +39,8 @@ 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
|
-
|
44
|
-
kubectl_run(shell, "#{apply_command} -f #{file_path}", kubeconfig_path: kubeconfig_path, namespace: namespace)
|
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)
|
45
44
|
end
|
46
45
|
|
47
46
|
def exec(shell, pod_name, command, args: nil, kubeconfig_path: nil, interactive: false, namespace: nil, entrypoint: nil)
|
@@ -2,7 +2,7 @@ class KuberKit::Shell::Commands::SystemCommands
|
|
2
2
|
def kill_process(shell, pid)
|
3
3
|
# we need to use kill command directly sometimes,
|
4
4
|
# because Process.kill doesn't kill processes created by system() call
|
5
|
-
shell.exec!("kill -9 #{pid}"
|
5
|
+
shell.exec!("kill -9 #{pid}")
|
6
6
|
true
|
7
7
|
rescue
|
8
8
|
false
|
@@ -9,9 +9,7 @@ class KuberKit::Shell::LocalShell < KuberKit::Shell::AbstractShell
|
|
9
9
|
"ui",
|
10
10
|
]
|
11
11
|
|
12
|
-
|
13
|
-
# Should be false, if we want to read & use the result of the command.
|
14
|
-
def exec!(command, log_command: true, merge_stderr: false)
|
12
|
+
def exec!(command, log_command: true)
|
15
13
|
command_number = command_counter.get_number.to_s.rjust(2, "0")
|
16
14
|
|
17
15
|
if log_command
|
@@ -19,9 +17,7 @@ class KuberKit::Shell::LocalShell < KuberKit::Shell::AbstractShell
|
|
19
17
|
end
|
20
18
|
|
21
19
|
result = nil
|
22
|
-
|
23
|
-
options = merge_stderr ? {err: [:child, :out]} : {}
|
24
|
-
IO.popen(wrap_command_with_pid(command), **options) do |io|
|
20
|
+
IO.popen(wrap_command_with_pid(command), err: [:child, :out]) do |io|
|
25
21
|
result = io.read.chomp.strip
|
26
22
|
end
|
27
23
|
|
@@ -92,21 +88,21 @@ class KuberKit::Shell::LocalShell < KuberKit::Shell::AbstractShell
|
|
92
88
|
end
|
93
89
|
|
94
90
|
def delete(file_path)
|
95
|
-
exec!("rm #{file_path}"
|
91
|
+
exec!("rm #{file_path}")
|
96
92
|
end
|
97
93
|
|
98
94
|
def file_exists?(file_path)
|
99
|
-
exec!("test -f #{file_path} && echo 'true' || echo 'false'", log_command: false
|
95
|
+
exec!("test -f #{file_path} && echo 'true' || echo 'false'", log_command: false) == 'true'
|
100
96
|
end
|
101
97
|
|
102
98
|
def dir_exists?(dir_path)
|
103
|
-
exec!("test -d #{dir_path} && echo 'true' || echo 'false'", log_command: false
|
99
|
+
exec!("test -d #{dir_path} && echo 'true' || echo 'false'", log_command: false) == 'true'
|
104
100
|
end
|
105
101
|
|
106
102
|
def recursive_list_files(path, name: nil)
|
107
103
|
command = %Q{find -L #{path} -type f}
|
108
104
|
command += " -name '#{name}'" if name
|
109
|
-
exec!(command
|
105
|
+
exec!(command).split(/[\r\n]+/)
|
110
106
|
rescue => e
|
111
107
|
if e.message.include?("No such file or directory")
|
112
108
|
raise DirNotFoundError.new("Dir not found: #{path}")
|
@@ -117,7 +113,7 @@ class KuberKit::Shell::LocalShell < KuberKit::Shell::AbstractShell
|
|
117
113
|
|
118
114
|
def list_dirs(path)
|
119
115
|
command = %Q{find -L #{path} -maxdepth 0 -type d}
|
120
|
-
exec!(command
|
116
|
+
exec!(command).split(/[\r\n]+/)
|
121
117
|
rescue => e
|
122
118
|
if e.message.include?("No such file or directory")
|
123
119
|
raise DirNotFoundError.new("Dir not found: #{path}")
|
@@ -138,7 +134,7 @@ class KuberKit::Shell::LocalShell < KuberKit::Shell::AbstractShell
|
|
138
134
|
def ensure_directory_exists(file_path)
|
139
135
|
dir_path = File.dirname(file_path)
|
140
136
|
|
141
|
-
unless Dir.
|
137
|
+
unless Dir.exists?(dir_path)
|
142
138
|
FileUtils.mkdir_p(dir_path)
|
143
139
|
end
|
144
140
|
end
|
@@ -22,7 +22,7 @@ class KuberKit::Shell::SshSession
|
|
22
22
|
@session = nil
|
23
23
|
end
|
24
24
|
|
25
|
-
def exec!(command
|
25
|
+
def exec!(command)
|
26
26
|
stdout_data = ''
|
27
27
|
stderr_data = ''
|
28
28
|
exit_code = nil
|
@@ -38,10 +38,6 @@ class KuberKit::Shell::SshSession
|
|
38
38
|
|
39
39
|
channel.on_extended_data do |ch,type,data|
|
40
40
|
stderr_data += data
|
41
|
-
|
42
|
-
if merge_stderr
|
43
|
-
stdout_data += data
|
44
|
-
end
|
45
41
|
end
|
46
42
|
|
47
43
|
channel.on_request('exit-status') do |ch,data|
|
@@ -20,14 +20,14 @@ class KuberKit::Shell::SshShell < KuberKit::Shell::LocalShell
|
|
20
20
|
@ssh_session.disconnect if @ssh_session
|
21
21
|
end
|
22
22
|
|
23
|
-
def exec!(command, log_command: true
|
23
|
+
def exec!(command, log_command: true)
|
24
24
|
command_number = command_counter.get_number.to_s.rjust(2, "0")
|
25
25
|
|
26
26
|
if log_command
|
27
27
|
ui.print_debug("SshShell", "#{ssh_session.host.green} > Execute: [#{command_number}]: #{command.to_s.cyan}")
|
28
28
|
end
|
29
29
|
|
30
|
-
result = ssh_session.exec!(wrap_command_with_pid(command)
|
30
|
+
result = ssh_session.exec!(wrap_command_with_pid(command))
|
31
31
|
|
32
32
|
if result && result != "" && log_command
|
33
33
|
ui.print_debug("SshShell", "#{ssh_session.host.green} > Finished [#{command_number}] with result: \n#{result.grey}")
|
@@ -17,15 +17,6 @@ class KuberKit::ShellLauncher::Strategies::Kubernetes < KuberKit::ShellLauncher:
|
|
17
17
|
kubectl_commands.set_namespace(shell, deployer_namespace, kubeconfig_path: kubeconfig_path)
|
18
18
|
end
|
19
19
|
|
20
|
-
|
21
|
-
"KUBECONFIG=#{kubeconfig_path}",
|
22
|
-
"KUBER_KIT_SHELL_CONFIGURATION=#{KuberKit.current_configuration.name}"
|
23
|
-
]
|
24
|
-
|
25
|
-
if configs.shell_launcher_sets_configration
|
26
|
-
env_vars << "KUBER_KIT_CONFIGURATION=#{KuberKit.current_configuration.name}"
|
27
|
-
end
|
28
|
-
|
29
|
-
shell.replace!(env: env_vars)
|
20
|
+
shell.replace!(env: ["KUBECONFIG=#{kubeconfig_path}", "KUBER_KIT_SHELL_CONFIGURATION=#{KuberKit.current_configuration.name}"])
|
30
21
|
end
|
31
22
|
end
|
@@ -11,7 +11,6 @@ class KuberKit::TemplateReader::Reader
|
|
11
11
|
@@readers[template_class] = template_reader
|
12
12
|
end
|
13
13
|
|
14
|
-
Contract KuberKit::Shell::AbstractShell, KuberKit::Core::Templates::AbstractTemplate => String
|
15
14
|
def read(shell, template)
|
16
15
|
reader = @@readers[template.class]
|
17
16
|
|
@@ -3,7 +3,6 @@ class KuberKit::TemplateReader::Strategies::ArtifactFile < KuberKit::TemplateRea
|
|
3
3
|
"core.artifact_store"
|
4
4
|
]
|
5
5
|
|
6
|
-
Contract KuberKit::Shell::AbstractShell, KuberKit::Core::Templates::AbstractTemplate => String
|
7
6
|
def read(shell, template)
|
8
7
|
artifact = artifact_store.get(template.artifact_name)
|
9
8
|
|
data/lib/kuber_kit/version.rb
CHANGED
data/lib/kuber_kit.rb
CHANGED
@@ -61,13 +61,11 @@ module KuberKit
|
|
61
61
|
end
|
62
62
|
|
63
63
|
module ContextHelper
|
64
|
-
autoload :AbstractHelper, 'core/context_helper/abstract_helper'
|
65
64
|
autoload :BaseHelper, 'core/context_helper/base_helper'
|
66
65
|
autoload :ImageHelper, 'core/context_helper/image_helper'
|
67
66
|
autoload :ServiceHelper, 'core/context_helper/service_helper'
|
68
67
|
autoload :ContextHelperFactory, 'core/context_helper/context_helper_factory'
|
69
68
|
autoload :ContextVars, 'core/context_helper/context_vars'
|
70
|
-
autoload :LocalContextHelper, 'core/context_helper/local_context_helper'
|
71
69
|
end
|
72
70
|
|
73
71
|
module Registries
|
@@ -106,7 +104,6 @@ module KuberKit
|
|
106
104
|
autoload :RsyncCommands, 'shell/commands/rsync_commands'
|
107
105
|
autoload :KubectlCommands, 'shell/commands/kubectl_commands'
|
108
106
|
autoload :SystemCommands, 'shell/commands/system_commands'
|
109
|
-
autoload :HelmCommands, 'shell/commands/helm_commands'
|
110
107
|
end
|
111
108
|
end
|
112
109
|
|
@@ -127,13 +124,10 @@ module KuberKit
|
|
127
124
|
end
|
128
125
|
|
129
126
|
module ArtifactsSync
|
127
|
+
autoload :AbstractArtifactResolver, 'artifacts_sync/abstract_artifact_resolver'
|
130
128
|
autoload :ArtifactUpdater, 'artifacts_sync/artifact_updater'
|
131
|
-
|
132
|
-
|
133
|
-
autoload :Abstract, 'artifacts_sync/strategies/abstract'
|
134
|
-
autoload :GitUpdater, 'artifacts_sync/strategies/git_updater'
|
135
|
-
autoload :NullUpdater, 'artifacts_sync/strategies/null_updater'
|
136
|
-
end
|
129
|
+
autoload :GitArtifactResolver, 'artifacts_sync/git_artifact_resolver'
|
130
|
+
autoload :NullArtifactResolver, 'artifacts_sync/null_artifact_resolver'
|
137
131
|
end
|
138
132
|
|
139
133
|
module EnvFileReader
|
@@ -152,7 +146,6 @@ module KuberKit
|
|
152
146
|
module TemplateReader
|
153
147
|
autoload :ActionHandler, 'template_reader/action_handler'
|
154
148
|
autoload :Reader, 'template_reader/reader'
|
155
|
-
autoload :Renderer, 'template_reader/renderer'
|
156
149
|
|
157
150
|
module Strategies
|
158
151
|
autoload :Abstract, 'template_reader/strategies/abstract'
|
@@ -173,18 +166,6 @@ module KuberKit
|
|
173
166
|
autoload :Docker, 'service_deployer/strategies/docker'
|
174
167
|
autoload :DockerCompose, 'service_deployer/strategies/docker_compose'
|
175
168
|
autoload :Kubernetes, 'service_deployer/strategies/kubernetes'
|
176
|
-
autoload :Helm, 'service_deployer/strategies/helm'
|
177
|
-
end
|
178
|
-
end
|
179
|
-
|
180
|
-
module ServiceGenerator
|
181
|
-
autoload :ActionHandler, 'service_generator/action_handler'
|
182
|
-
autoload :StrategyDetector, 'service_generator/strategy_detector'
|
183
|
-
autoload :Generator, 'service_generator/generator'
|
184
|
-
|
185
|
-
module Strategies
|
186
|
-
autoload :Abstract, 'service_generator/strategies/abstract'
|
187
|
-
autoload :Helm, 'service_generator/strategies/helm'
|
188
169
|
end
|
189
170
|
end
|
190
171
|
|
@@ -211,7 +192,6 @@ module KuberKit
|
|
211
192
|
autoload :ServiceReader, 'actions/service_reader'
|
212
193
|
autoload :ServiceDeployer, 'actions/service_deployer'
|
213
194
|
autoload :ServiceChecker, 'actions/service_checker'
|
214
|
-
autoload :ServiceGenerator, 'actions/service_generator'
|
215
195
|
autoload :ConfigurationLoader, 'actions/configuration_loader'
|
216
196
|
autoload :KubectlApplier, 'actions/kubectl_applier'
|
217
197
|
autoload :KubectlAttacher, 'actions/kubectl_attacher'
|
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.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Iskander Khaziev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: contracts
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.17.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.17.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: dry-auto_inject
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -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:
|
103
|
+
version: '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:
|
110
|
+
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: net-ssh
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -259,14 +259,13 @@ files:
|
|
259
259
|
- lib/kuber_kit/actions/kubectl_logs.rb
|
260
260
|
- lib/kuber_kit/actions/service_checker.rb
|
261
261
|
- lib/kuber_kit/actions/service_deployer.rb
|
262
|
-
- lib/kuber_kit/actions/service_generator.rb
|
263
262
|
- lib/kuber_kit/actions/service_reader.rb
|
264
263
|
- lib/kuber_kit/actions/shell_launcher.rb
|
265
264
|
- lib/kuber_kit/actions/template_reader.rb
|
265
|
+
- lib/kuber_kit/artifacts_sync/abstract_artifact_resolver.rb
|
266
266
|
- lib/kuber_kit/artifacts_sync/artifact_updater.rb
|
267
|
-
- lib/kuber_kit/artifacts_sync/
|
268
|
-
- lib/kuber_kit/artifacts_sync/
|
269
|
-
- lib/kuber_kit/artifacts_sync/strategies/null_updater.rb
|
267
|
+
- lib/kuber_kit/artifacts_sync/git_artifact_resolver.rb
|
268
|
+
- lib/kuber_kit/artifacts_sync/null_artifact_resolver.rb
|
270
269
|
- lib/kuber_kit/cli.rb
|
271
270
|
- lib/kuber_kit/configs.rb
|
272
271
|
- lib/kuber_kit/container.rb
|
@@ -284,12 +283,10 @@ files:
|
|
284
283
|
- lib/kuber_kit/core/configuration_definition_factory.rb
|
285
284
|
- lib/kuber_kit/core/configuration_factory.rb
|
286
285
|
- lib/kuber_kit/core/configuration_store.rb
|
287
|
-
- lib/kuber_kit/core/context_helper/abstract_helper.rb
|
288
286
|
- lib/kuber_kit/core/context_helper/base_helper.rb
|
289
287
|
- lib/kuber_kit/core/context_helper/context_helper_factory.rb
|
290
288
|
- lib/kuber_kit/core/context_helper/context_vars.rb
|
291
289
|
- lib/kuber_kit/core/context_helper/image_helper.rb
|
292
|
-
- lib/kuber_kit/core/context_helper/local_context_helper.rb
|
293
290
|
- lib/kuber_kit/core/context_helper/service_helper.rb
|
294
291
|
- lib/kuber_kit/core/dependencies/abstract_dependency_resolver.rb
|
295
292
|
- lib/kuber_kit/core/env_files/abstract_env_file.rb
|
@@ -346,14 +343,8 @@ files:
|
|
346
343
|
- lib/kuber_kit/service_deployer/strategies/abstract.rb
|
347
344
|
- lib/kuber_kit/service_deployer/strategies/docker.rb
|
348
345
|
- lib/kuber_kit/service_deployer/strategies/docker_compose.rb
|
349
|
-
- lib/kuber_kit/service_deployer/strategies/helm.rb
|
350
346
|
- lib/kuber_kit/service_deployer/strategies/kubernetes.rb
|
351
347
|
- lib/kuber_kit/service_deployer/strategy_detector.rb
|
352
|
-
- lib/kuber_kit/service_generator/action_handler.rb
|
353
|
-
- lib/kuber_kit/service_generator/generator.rb
|
354
|
-
- lib/kuber_kit/service_generator/strategies/abstract.rb
|
355
|
-
- lib/kuber_kit/service_generator/strategies/helm.rb
|
356
|
-
- lib/kuber_kit/service_generator/strategy_detector.rb
|
357
348
|
- lib/kuber_kit/service_reader/action_handler.rb
|
358
349
|
- lib/kuber_kit/service_reader/reader.rb
|
359
350
|
- lib/kuber_kit/shell/abstract_shell.rb
|
@@ -362,7 +353,6 @@ files:
|
|
362
353
|
- lib/kuber_kit/shell/commands/docker_commands.rb
|
363
354
|
- lib/kuber_kit/shell/commands/docker_compose_commands.rb
|
364
355
|
- lib/kuber_kit/shell/commands/git_commands.rb
|
365
|
-
- lib/kuber_kit/shell/commands/helm_commands.rb
|
366
356
|
- lib/kuber_kit/shell/commands/kubectl_commands.rb
|
367
357
|
- lib/kuber_kit/shell/commands/rsync_commands.rb
|
368
358
|
- lib/kuber_kit/shell/commands/system_commands.rb
|
@@ -375,7 +365,6 @@ files:
|
|
375
365
|
- lib/kuber_kit/shell_launcher/strategies/kubernetes.rb
|
376
366
|
- lib/kuber_kit/template_reader/action_handler.rb
|
377
367
|
- lib/kuber_kit/template_reader/reader.rb
|
378
|
-
- lib/kuber_kit/template_reader/renderer.rb
|
379
368
|
- lib/kuber_kit/template_reader/strategies/abstract.rb
|
380
369
|
- lib/kuber_kit/template_reader/strategies/artifact_file.rb
|
381
370
|
- lib/kuber_kit/tools/build_dir_cleaner.rb
|
@@ -401,14 +390,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
401
390
|
requirements:
|
402
391
|
- - ">="
|
403
392
|
- !ruby/object:Gem::Version
|
404
|
-
version:
|
393
|
+
version: 3.0.0
|
405
394
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
406
395
|
requirements:
|
407
396
|
- - ">="
|
408
397
|
- !ruby/object:Gem::Version
|
409
398
|
version: '0'
|
410
399
|
requirements: []
|
411
|
-
rubygems_version: 3.
|
400
|
+
rubygems_version: 3.3.7
|
412
401
|
signing_key:
|
413
402
|
specification_version: 4
|
414
403
|
summary: Docker Containers Build & Deployment
|
@@ -1,20 +0,0 @@
|
|
1
|
-
class KuberKit::Actions::ServiceGenerator
|
2
|
-
include KuberKit::Import[
|
3
|
-
"shell.local_shell",
|
4
|
-
"service_generator.action_handler",
|
5
|
-
"ui",
|
6
|
-
]
|
7
|
-
|
8
|
-
Contract Symbol, String => Any
|
9
|
-
def call(service_name, path)
|
10
|
-
expanded_path = File.expand_path(path)
|
11
|
-
puts expanded_path
|
12
|
-
action_handler.call(local_shell, service_name, expanded_path)
|
13
|
-
|
14
|
-
true
|
15
|
-
rescue KuberKit::Error => e
|
16
|
-
ui.print_error("Error", e.message)
|
17
|
-
|
18
|
-
false
|
19
|
-
end
|
20
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
class KuberKit::ArtifactsSync::Strategies::GitUpdater < KuberKit::ArtifactsSync::Strategies::Abstract
|
2
|
-
|
3
|
-
include KuberKit::Import[
|
4
|
-
"shell.git_commands",
|
5
|
-
"shell.bash_commands",
|
6
|
-
]
|
7
|
-
|
8
|
-
Contract KuberKit::Shell::AbstractShell, KuberKit::Core::Artifacts::Git => Any
|
9
|
-
def update(shell, artifact)
|
10
|
-
already_cloned = artifact_already_cloned?(
|
11
|
-
shell: shell,
|
12
|
-
repo_path: artifact.cloned_path,
|
13
|
-
artifact: artifact
|
14
|
-
)
|
15
|
-
|
16
|
-
if already_cloned
|
17
|
-
git_commands.force_pull_repo(shell,
|
18
|
-
path: artifact.cloned_path, branch: artifact.branch
|
19
|
-
)
|
20
|
-
else
|
21
|
-
git_commands.download_repo(shell,
|
22
|
-
remote_url: artifact.remote_url, path: artifact.cloned_path, branch: artifact.branch
|
23
|
-
)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
Contract KuberKit::Shell::AbstractShell, KuberKit::Core::Artifacts::Git => Any
|
28
|
-
def cleanup(shell, artifact)
|
29
|
-
bash_commands.rm_rf(shell, artifact.cloned_path)
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
def artifact_already_cloned?(shell:, repo_path:, artifact:)
|
34
|
-
target_remote_url = git_commands.get_remote_url(shell, repo_path)
|
35
|
-
if target_remote_url != artifact.remote_url
|
36
|
-
return false
|
37
|
-
end
|
38
|
-
|
39
|
-
target_branch = git_commands.get_branch_name(shell, repo_path)
|
40
|
-
if target_branch != artifact.branch.to_s
|
41
|
-
return false
|
42
|
-
end
|
43
|
-
|
44
|
-
return true
|
45
|
-
end
|
46
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
class KuberKit::ArtifactsSync::Strategies::NullUpdater < KuberKit::ArtifactsSync::Strategies::Abstract
|
2
|
-
|
3
|
-
Contract KuberKit::Shell::AbstractShell, Any => Any
|
4
|
-
def update(shell, artifact)
|
5
|
-
return true
|
6
|
-
end
|
7
|
-
|
8
|
-
Contract KuberKit::Shell::AbstractShell, Any => Any
|
9
|
-
def cleanup(shell, artifact)
|
10
|
-
return true
|
11
|
-
end
|
12
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
class KuberKit::Core::ContextHelper::LocalContextHelper < KuberKit::Core::ContextHelper::AbstractHelper
|
2
|
-
def initialize(parent_context_helper:, variables:)
|
3
|
-
@parent_context_helper = parent_context_helper
|
4
|
-
@variables = variables
|
5
|
-
end
|
6
|
-
|
7
|
-
def method_missing(method_name, *args, **kwargs, &block)
|
8
|
-
if @variables.has_key?(method_name)
|
9
|
-
@variables[method_name]
|
10
|
-
else
|
11
|
-
@parent_context_helper.send(method_name, *args, **kwargs, &block)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
@@ -1,41 +0,0 @@
|
|
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, chart_root_path)
|
18
|
-
bash_commands.mkdir_p(shell, 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
|
@@ -1,16 +0,0 @@
|
|
1
|
-
class KuberKit::ServiceGenerator::ActionHandler
|
2
|
-
include KuberKit::Import[
|
3
|
-
"service_generator.generator",
|
4
|
-
"service_generator.strategy_detector",
|
5
|
-
"core.service_store",
|
6
|
-
]
|
7
|
-
|
8
|
-
Contract KuberKit::Shell::AbstractShell, Symbol, String => Any
|
9
|
-
def call(shell, service_name, export_path)
|
10
|
-
service = service_store.get_service(service_name)
|
11
|
-
|
12
|
-
strategy_name = strategy_detector.call(service)
|
13
|
-
|
14
|
-
generator.generate(shell, service, export_path, strategy_name)
|
15
|
-
end
|
16
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
class KuberKit::ServiceGenerator::Generator
|
2
|
-
StrategyNotFoundError = Class.new(KuberKit::NotFoundError)
|
3
|
-
|
4
|
-
include KuberKit::Import[
|
5
|
-
"core.service_store",
|
6
|
-
]
|
7
|
-
|
8
|
-
def register_strategy(strategy_name, strategy)
|
9
|
-
@@strategies ||= {}
|
10
|
-
|
11
|
-
if !strategy.is_a?(KuberKit::ServiceGenerator::Strategies::Abstract)
|
12
|
-
raise ArgumentError.new("should be an instance of KuberKit::ServiceGenerator::Strategies::Abstract, got: #{strategy.inspect}")
|
13
|
-
end
|
14
|
-
|
15
|
-
@@strategies[strategy_name] = strategy
|
16
|
-
end
|
17
|
-
|
18
|
-
Contract KuberKit::Shell::AbstractShell, KuberKit::Core::Service, String, Symbol => Any
|
19
|
-
def generate(shell, service, export_path, strategy_name)
|
20
|
-
generator = @@strategies[strategy_name]
|
21
|
-
|
22
|
-
raise StrategyNotFoundError, "Can't find strategy with name #{strategy_name}" if generator.nil?
|
23
|
-
|
24
|
-
generator.generate(shell, service, export_path)
|
25
|
-
end
|
26
|
-
end
|