kuber_kit 1.1.4 → 1.1.6
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/CHANGELOG.md +32 -0
- data/README.md +2 -1
- data/kuber_kit.gemspec +3 -6
- data/lib/kuber_kit/actions/configuration_loader.rb +7 -1
- data/lib/kuber_kit/actions/kubectl_attacher.rb +7 -4
- data/lib/kuber_kit/actions/kubectl_logs.rb +7 -4
- data/lib/kuber_kit/actions/service_deployer.rb +33 -26
- data/lib/kuber_kit/actions/service_generator.rb +20 -0
- data/lib/kuber_kit/artifacts_sync/artifact_updater.rb +19 -9
- data/lib/kuber_kit/artifacts_sync/strategies/abstract.rb +9 -0
- data/lib/kuber_kit/artifacts_sync/strategies/git_updater.rb +46 -0
- data/lib/kuber_kit/artifacts_sync/strategies/null_updater.rb +12 -0
- data/lib/kuber_kit/cli.rb +29 -1
- data/lib/kuber_kit/configs.rb +3 -1
- data/lib/kuber_kit/container.rb +28 -4
- data/lib/kuber_kit/core/artifacts/abstract_artifact.rb +4 -0
- data/lib/kuber_kit/core/artifacts/git.rb +6 -1
- data/lib/kuber_kit/core/artifacts/local.rb +4 -0
- data/lib/kuber_kit/core/configuration.rb +10 -6
- data/lib/kuber_kit/core/configuration_definition.rb +30 -9
- data/lib/kuber_kit/core/configuration_factory.rb +3 -1
- data/lib/kuber_kit/core/context_helper/abstract_helper.rb +5 -0
- data/lib/kuber_kit/core/context_helper/base_helper.rb +1 -7
- data/lib/kuber_kit/core/context_helper/context_helper_factory.rb +3 -1
- data/lib/kuber_kit/core/context_helper/context_vars.rb +20 -4
- data/lib/kuber_kit/core/context_helper/local_context_helper.rb +14 -0
- data/lib/kuber_kit/core/context_helper/service_helper.rb +15 -1
- data/lib/kuber_kit/core/dependencies/abstract_dependency_resolver.rb +7 -0
- data/lib/kuber_kit/core/service.rb +8 -5
- data/lib/kuber_kit/core/service_definition.rb +16 -4
- data/lib/kuber_kit/core/service_factory.rb +2 -1
- data/lib/kuber_kit/defaults.rb +13 -4
- 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/helm.rb +41 -0
- data/lib/kuber_kit/service_deployer/strategies/kubernetes.rb +8 -2
- data/lib/kuber_kit/service_generator/action_handler.rb +16 -0
- data/lib/kuber_kit/service_generator/generator.rb +26 -0
- data/lib/kuber_kit/service_generator/strategies/abstract.rb +5 -0
- data/lib/kuber_kit/service_generator/strategies/helm.rb +33 -0
- data/lib/kuber_kit/service_generator/strategy_detector.rb +6 -0
- data/lib/kuber_kit/service_reader/reader.rb +2 -10
- data/lib/kuber_kit/shell/commands/docker_commands.rb +1 -1
- data/lib/kuber_kit/shell/commands/git_commands.rb +10 -0
- 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/shell/local_shell.rb +1 -1
- data/lib/kuber_kit/shell_launcher/strategies/kubernetes.rb +1 -1
- data/lib/kuber_kit/template_reader/reader.rb +1 -0
- data/lib/kuber_kit/template_reader/renderer.rb +17 -0
- data/lib/kuber_kit/template_reader/strategies/artifact_file.rb +1 -0
- data/lib/kuber_kit/tools/logger_factory.rb +1 -1
- data/lib/kuber_kit/version.rb +1 -1
- data/lib/kuber_kit.rb +23 -3
- metadata +35 -10
- data/lib/kuber_kit/artifacts_sync/abstract_artifact_resolver.rb +0 -5
- data/lib/kuber_kit/artifacts_sync/git_artifact_resolver.rb +0 -31
- data/lib/kuber_kit/artifacts_sync/null_artifact_resolver.rb +0 -7
@@ -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)
|
@@ -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.
|
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:
|
29
|
+
shell.replace!(env: env_vars)
|
30
30
|
end
|
31
31
|
end
|
@@ -11,6 +11,7 @@ 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
|
14
15
|
def read(shell, template)
|
15
16
|
reader = @@readers[template.class]
|
16
17
|
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class KuberKit::TemplateReader::Renderer
|
2
|
+
include KuberKit::Import[
|
3
|
+
"core.template_store",
|
4
|
+
"preprocessing.text_preprocessor",
|
5
|
+
template_reader: "template_reader.reader"
|
6
|
+
]
|
7
|
+
|
8
|
+
|
9
|
+
Contract KuberKit::Shell::AbstractShell, Symbol, KeywordArgs[
|
10
|
+
context_helper: KuberKit::Core::ContextHelper::AbstractHelper
|
11
|
+
] => String
|
12
|
+
def call(shell, template_name, context_helper:)
|
13
|
+
template = template_store.get(template_name)
|
14
|
+
template_text = template_reader.read(shell, template)
|
15
|
+
text_preprocessor.compile(template_text, context_helper: context_helper)
|
16
|
+
end
|
17
|
+
end
|
@@ -3,6 +3,7 @@ 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
|
6
7
|
def read(shell, template)
|
7
8
|
artifact = artifact_store.get(template.artifact_name)
|
8
9
|
|
data/lib/kuber_kit/version.rb
CHANGED
data/lib/kuber_kit.rb
CHANGED
@@ -61,11 +61,13 @@ module KuberKit
|
|
61
61
|
end
|
62
62
|
|
63
63
|
module ContextHelper
|
64
|
+
autoload :AbstractHelper, 'core/context_helper/abstract_helper'
|
64
65
|
autoload :BaseHelper, 'core/context_helper/base_helper'
|
65
66
|
autoload :ImageHelper, 'core/context_helper/image_helper'
|
66
67
|
autoload :ServiceHelper, 'core/context_helper/service_helper'
|
67
68
|
autoload :ContextHelperFactory, 'core/context_helper/context_helper_factory'
|
68
69
|
autoload :ContextVars, 'core/context_helper/context_vars'
|
70
|
+
autoload :LocalContextHelper, 'core/context_helper/local_context_helper'
|
69
71
|
end
|
70
72
|
|
71
73
|
module Registries
|
@@ -104,6 +106,7 @@ module KuberKit
|
|
104
106
|
autoload :RsyncCommands, 'shell/commands/rsync_commands'
|
105
107
|
autoload :KubectlCommands, 'shell/commands/kubectl_commands'
|
106
108
|
autoload :SystemCommands, 'shell/commands/system_commands'
|
109
|
+
autoload :HelmCommands, 'shell/commands/helm_commands'
|
107
110
|
end
|
108
111
|
end
|
109
112
|
|
@@ -124,10 +127,13 @@ module KuberKit
|
|
124
127
|
end
|
125
128
|
|
126
129
|
module ArtifactsSync
|
127
|
-
autoload :AbstractArtifactResolver, 'artifacts_sync/abstract_artifact_resolver'
|
128
130
|
autoload :ArtifactUpdater, 'artifacts_sync/artifact_updater'
|
129
|
-
|
130
|
-
|
131
|
+
|
132
|
+
module Strategies
|
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
|
131
137
|
end
|
132
138
|
|
133
139
|
module EnvFileReader
|
@@ -146,6 +152,7 @@ module KuberKit
|
|
146
152
|
module TemplateReader
|
147
153
|
autoload :ActionHandler, 'template_reader/action_handler'
|
148
154
|
autoload :Reader, 'template_reader/reader'
|
155
|
+
autoload :Renderer, 'template_reader/renderer'
|
149
156
|
|
150
157
|
module Strategies
|
151
158
|
autoload :Abstract, 'template_reader/strategies/abstract'
|
@@ -166,6 +173,18 @@ module KuberKit
|
|
166
173
|
autoload :Docker, 'service_deployer/strategies/docker'
|
167
174
|
autoload :DockerCompose, 'service_deployer/strategies/docker_compose'
|
168
175
|
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'
|
169
188
|
end
|
170
189
|
end
|
171
190
|
|
@@ -192,6 +211,7 @@ module KuberKit
|
|
192
211
|
autoload :ServiceReader, 'actions/service_reader'
|
193
212
|
autoload :ServiceDeployer, 'actions/service_deployer'
|
194
213
|
autoload :ServiceChecker, 'actions/service_checker'
|
214
|
+
autoload :ServiceGenerator, 'actions/service_generator'
|
195
215
|
autoload :ConfigurationLoader, 'actions/configuration_loader'
|
196
216
|
autoload :KubectlApplier, 'actions/kubectl_applier'
|
197
217
|
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.1.
|
4
|
+
version: 1.1.6
|
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-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: contracts
|
@@ -96,6 +96,20 @@ dependencies:
|
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: cli-ui
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 2.1.0
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 2.1.0
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: net-ssh
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
115
|
- - ">="
|
@@ -109,7 +123,7 @@ dependencies:
|
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '0'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
126
|
+
name: tty-prompt
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
114
128
|
requirements:
|
115
129
|
- - ">="
|
@@ -123,7 +137,7 @@ dependencies:
|
|
123
137
|
- !ruby/object:Gem::Version
|
124
138
|
version: '0'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
140
|
+
name: ed25519
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
128
142
|
requirements:
|
129
143
|
- - ">="
|
@@ -259,13 +273,14 @@ files:
|
|
259
273
|
- lib/kuber_kit/actions/kubectl_logs.rb
|
260
274
|
- lib/kuber_kit/actions/service_checker.rb
|
261
275
|
- lib/kuber_kit/actions/service_deployer.rb
|
276
|
+
- lib/kuber_kit/actions/service_generator.rb
|
262
277
|
- lib/kuber_kit/actions/service_reader.rb
|
263
278
|
- lib/kuber_kit/actions/shell_launcher.rb
|
264
279
|
- lib/kuber_kit/actions/template_reader.rb
|
265
|
-
- lib/kuber_kit/artifacts_sync/abstract_artifact_resolver.rb
|
266
280
|
- lib/kuber_kit/artifacts_sync/artifact_updater.rb
|
267
|
-
- lib/kuber_kit/artifacts_sync/
|
268
|
-
- lib/kuber_kit/artifacts_sync/
|
281
|
+
- lib/kuber_kit/artifacts_sync/strategies/abstract.rb
|
282
|
+
- lib/kuber_kit/artifacts_sync/strategies/git_updater.rb
|
283
|
+
- lib/kuber_kit/artifacts_sync/strategies/null_updater.rb
|
269
284
|
- lib/kuber_kit/cli.rb
|
270
285
|
- lib/kuber_kit/configs.rb
|
271
286
|
- lib/kuber_kit/container.rb
|
@@ -283,10 +298,12 @@ files:
|
|
283
298
|
- lib/kuber_kit/core/configuration_definition_factory.rb
|
284
299
|
- lib/kuber_kit/core/configuration_factory.rb
|
285
300
|
- lib/kuber_kit/core/configuration_store.rb
|
301
|
+
- lib/kuber_kit/core/context_helper/abstract_helper.rb
|
286
302
|
- lib/kuber_kit/core/context_helper/base_helper.rb
|
287
303
|
- lib/kuber_kit/core/context_helper/context_helper_factory.rb
|
288
304
|
- lib/kuber_kit/core/context_helper/context_vars.rb
|
289
305
|
- lib/kuber_kit/core/context_helper/image_helper.rb
|
306
|
+
- lib/kuber_kit/core/context_helper/local_context_helper.rb
|
290
307
|
- lib/kuber_kit/core/context_helper/service_helper.rb
|
291
308
|
- lib/kuber_kit/core/dependencies/abstract_dependency_resolver.rb
|
292
309
|
- lib/kuber_kit/core/env_files/abstract_env_file.rb
|
@@ -343,8 +360,14 @@ files:
|
|
343
360
|
- lib/kuber_kit/service_deployer/strategies/abstract.rb
|
344
361
|
- lib/kuber_kit/service_deployer/strategies/docker.rb
|
345
362
|
- lib/kuber_kit/service_deployer/strategies/docker_compose.rb
|
363
|
+
- lib/kuber_kit/service_deployer/strategies/helm.rb
|
346
364
|
- lib/kuber_kit/service_deployer/strategies/kubernetes.rb
|
347
365
|
- lib/kuber_kit/service_deployer/strategy_detector.rb
|
366
|
+
- lib/kuber_kit/service_generator/action_handler.rb
|
367
|
+
- lib/kuber_kit/service_generator/generator.rb
|
368
|
+
- lib/kuber_kit/service_generator/strategies/abstract.rb
|
369
|
+
- lib/kuber_kit/service_generator/strategies/helm.rb
|
370
|
+
- lib/kuber_kit/service_generator/strategy_detector.rb
|
348
371
|
- lib/kuber_kit/service_reader/action_handler.rb
|
349
372
|
- lib/kuber_kit/service_reader/reader.rb
|
350
373
|
- lib/kuber_kit/shell/abstract_shell.rb
|
@@ -353,6 +376,7 @@ files:
|
|
353
376
|
- lib/kuber_kit/shell/commands/docker_commands.rb
|
354
377
|
- lib/kuber_kit/shell/commands/docker_compose_commands.rb
|
355
378
|
- lib/kuber_kit/shell/commands/git_commands.rb
|
379
|
+
- lib/kuber_kit/shell/commands/helm_commands.rb
|
356
380
|
- lib/kuber_kit/shell/commands/kubectl_commands.rb
|
357
381
|
- lib/kuber_kit/shell/commands/rsync_commands.rb
|
358
382
|
- lib/kuber_kit/shell/commands/system_commands.rb
|
@@ -365,6 +389,7 @@ files:
|
|
365
389
|
- lib/kuber_kit/shell_launcher/strategies/kubernetes.rb
|
366
390
|
- lib/kuber_kit/template_reader/action_handler.rb
|
367
391
|
- lib/kuber_kit/template_reader/reader.rb
|
392
|
+
- lib/kuber_kit/template_reader/renderer.rb
|
368
393
|
- lib/kuber_kit/template_reader/strategies/abstract.rb
|
369
394
|
- lib/kuber_kit/template_reader/strategies/artifact_file.rb
|
370
395
|
- lib/kuber_kit/tools/build_dir_cleaner.rb
|
@@ -382,7 +407,7 @@ homepage: https://github.com/ArtStation/kuber_kit
|
|
382
407
|
licenses:
|
383
408
|
- MIT
|
384
409
|
metadata: {}
|
385
|
-
post_install_message:
|
410
|
+
post_install_message:
|
386
411
|
rdoc_options: []
|
387
412
|
require_paths:
|
388
413
|
- lib
|
@@ -398,7 +423,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
398
423
|
version: '0'
|
399
424
|
requirements: []
|
400
425
|
rubygems_version: 3.1.6
|
401
|
-
signing_key:
|
426
|
+
signing_key:
|
402
427
|
specification_version: 4
|
403
428
|
summary: Docker Containers Build & Deployment
|
404
429
|
test_files: []
|
@@ -1,31 +0,0 @@
|
|
1
|
-
class KuberKit::ArtifactsSync::GitArtifactResolver < KuberKit::ArtifactsSync::AbstractArtifactResolver
|
2
|
-
|
3
|
-
include KuberKit::Import[
|
4
|
-
"shell.git_commands",
|
5
|
-
]
|
6
|
-
|
7
|
-
Contract KuberKit::Shell::AbstractShell, KuberKit::Core::Artifacts::Git => Any
|
8
|
-
def resolve(shell, artifact)
|
9
|
-
already_cloned = artifact_already_cloned?(
|
10
|
-
shell: shell,
|
11
|
-
target_path: artifact.cloned_path,
|
12
|
-
remote_url: artifact.remote_url,
|
13
|
-
)
|
14
|
-
|
15
|
-
if already_cloned
|
16
|
-
git_commands.force_pull_repo(shell,
|
17
|
-
path: artifact.cloned_path, branch: artifact.branch
|
18
|
-
)
|
19
|
-
else
|
20
|
-
git_commands.download_repo(shell,
|
21
|
-
remote_url: artifact.remote_url, path: artifact.cloned_path, branch: artifact.branch
|
22
|
-
)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
def artifact_already_cloned?(shell:, target_path:, remote_url:)
|
28
|
-
target_remote_url = git_commands.get_remote_url(shell, target_path)
|
29
|
-
target_remote_url == remote_url
|
30
|
-
end
|
31
|
-
end
|