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
@@ -5,13 +5,12 @@ class KuberKit::Core::Artifacts::Git < KuberKit::Core::Artifacts::AbstractArtifa
|
|
5
5
|
DEFAULT_REMOTE_NAME = "origin"
|
6
6
|
DEFAULT_BRANCH = "master"
|
7
7
|
|
8
|
-
def setup(remote_url:, remote_name: DEFAULT_REMOTE_NAME, branch: DEFAULT_BRANCH, clone_path: nil, ssh_key: DEFAULT_SSH_KEY
|
8
|
+
def setup(remote_url:, remote_name: DEFAULT_REMOTE_NAME, branch: DEFAULT_BRANCH, clone_path: nil, ssh_key: DEFAULT_SSH_KEY)
|
9
9
|
@remote_name = remote_name
|
10
10
|
@remote_url = remote_url
|
11
11
|
@branch = branch
|
12
12
|
@clone_path = clone_path
|
13
13
|
@ssh_key = ssh_key
|
14
|
-
@cache_result = cache_result
|
15
14
|
self
|
16
15
|
end
|
17
16
|
|
@@ -20,12 +19,4 @@ class KuberKit::Core::Artifacts::Git < KuberKit::Core::Artifacts::AbstractArtifa
|
|
20
19
|
configs = KuberKit::Container['configs']
|
21
20
|
"#{configs.artifact_clone_dir}/#{name}"
|
22
21
|
end
|
23
|
-
|
24
|
-
def sync_description
|
25
|
-
"#{remote_url}:#{branch}"
|
26
|
-
end
|
27
|
-
|
28
|
-
def cleanup_needed?
|
29
|
-
!@cache_result
|
30
|
-
end
|
31
22
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
class KuberKit::Core::Configuration
|
2
2
|
attr_reader :name, :artifacts, :registries, :env_files, :templates, :kubeconfig_path, :kubectl_entrypoint,
|
3
3
|
:services_attributes, :enabled_services, :disabled_services, :default_services,
|
4
|
-
:
|
4
|
+
:initial_services, :build_servers, :global_build_vars,
|
5
5
|
:deployer_strategy, :deployer_namespace, :deployer_require_confirmation,
|
6
|
-
:shell_launcher_strategy
|
6
|
+
:shell_launcher_strategy
|
7
7
|
|
8
8
|
Contract KeywordArgs[
|
9
9
|
name: Symbol,
|
@@ -17,20 +17,18 @@ class KuberKit::Core::Configuration
|
|
17
17
|
enabled_services: ArrayOf[Symbol],
|
18
18
|
disabled_services: ArrayOf[Symbol],
|
19
19
|
default_services: ArrayOf[Symbol],
|
20
|
-
|
21
|
-
post_deploy_services: ArrayOf[Symbol],
|
20
|
+
initial_services: ArrayOf[Symbol],
|
22
21
|
build_servers: ArrayOf[KuberKit::Core::BuildServers::AbstractBuildServer],
|
23
22
|
global_build_vars: HashOf[Symbol => Any],
|
24
23
|
deployer_strategy: Symbol,
|
25
24
|
deployer_namespace: Maybe[Or[Symbol, String]],
|
26
25
|
deployer_require_confirmation: Bool,
|
27
26
|
shell_launcher_strategy: Symbol,
|
28
|
-
generator_strategy: Symbol,
|
29
27
|
] => Any
|
30
28
|
def initialize(name:, artifacts:, registries:, env_files:, templates:, kubeconfig_path:, kubectl_entrypoint:,
|
31
29
|
services_attributes:, enabled_services:, disabled_services:, default_services:,
|
32
|
-
|
33
|
-
deployer_strategy:, deployer_namespace:, deployer_require_confirmation:, shell_launcher_strategy
|
30
|
+
initial_services:, build_servers:, global_build_vars:,
|
31
|
+
deployer_strategy:, deployer_namespace:, deployer_require_confirmation:, shell_launcher_strategy:)
|
34
32
|
@name = name
|
35
33
|
@artifacts = artifacts
|
36
34
|
@registries = registries
|
@@ -43,14 +41,12 @@ class KuberKit::Core::Configuration
|
|
43
41
|
@enabled_services = enabled_services
|
44
42
|
@disabled_services = disabled_services
|
45
43
|
@default_services = default_services
|
46
|
-
@
|
47
|
-
@post_deploy_services = post_deploy_services
|
44
|
+
@initial_services = initial_services
|
48
45
|
@global_build_vars = global_build_vars
|
49
46
|
@deployer_strategy = deployer_strategy
|
50
47
|
@deployer_namespace = deployer_namespace
|
51
48
|
@deployer_require_confirmation = deployer_require_confirmation
|
52
49
|
@shell_launcher_strategy = shell_launcher_strategy
|
53
|
-
@generator_strategy = generator_strategy
|
54
50
|
end
|
55
51
|
|
56
52
|
def service_attributes(service_name)
|
@@ -9,14 +9,13 @@ class KuberKit::Core::ConfigurationDefinition
|
|
9
9
|
@artifacts = {}
|
10
10
|
@registries = {}
|
11
11
|
@env_files = {}
|
12
|
-
@templates = {}
|
13
|
-
@build_servers
|
14
|
-
@enabled_services
|
15
|
-
@disabled_services
|
16
|
-
@default_services
|
17
|
-
@
|
18
|
-
@
|
19
|
-
@services_attributes = {}
|
12
|
+
@templates = {}
|
13
|
+
@build_servers = []
|
14
|
+
@enabled_services = []
|
15
|
+
@disabled_services = []
|
16
|
+
@default_services = []
|
17
|
+
@initial_services = []
|
18
|
+
@services_attributes = {}
|
20
19
|
end
|
21
20
|
|
22
21
|
def to_attrs
|
@@ -31,8 +30,7 @@ class KuberKit::Core::ConfigurationDefinition
|
|
31
30
|
enabled_services: @enabled_services,
|
32
31
|
disabled_services: @disabled_services,
|
33
32
|
default_services: @default_services,
|
34
|
-
|
35
|
-
post_deploy_services: @post_deploy_services,
|
33
|
+
initial_services: @initial_services,
|
36
34
|
build_servers: @build_servers,
|
37
35
|
services_attributes: @services_attributes,
|
38
36
|
global_build_vars: @global_build_vars,
|
@@ -40,7 +38,6 @@ class KuberKit::Core::ConfigurationDefinition
|
|
40
38
|
deployer_namespace: @deployer_namespace,
|
41
39
|
deployer_require_confirmation: @deployer_require_confirmation || false,
|
42
40
|
shell_launcher_strategy: @shell_launcher_strategy,
|
43
|
-
generator_strategy: @generator_strategy,
|
44
41
|
)
|
45
42
|
end
|
46
43
|
|
@@ -112,12 +109,6 @@ class KuberKit::Core::ConfigurationDefinition
|
|
112
109
|
self
|
113
110
|
end
|
114
111
|
|
115
|
-
def generator_strategy(strategy)
|
116
|
-
@generator_strategy = strategy
|
117
|
-
|
118
|
-
self
|
119
|
-
end
|
120
|
-
|
121
112
|
def deployer_require_confirmation
|
122
113
|
@deployer_require_confirmation = true
|
123
114
|
|
@@ -152,19 +143,7 @@ class KuberKit::Core::ConfigurationDefinition
|
|
152
143
|
end
|
153
144
|
|
154
145
|
def initial_services(services)
|
155
|
-
|
156
|
-
puts "WARNING: initial_services is deprecated, please use pre_deploy_services instead"
|
157
|
-
end
|
158
|
-
pre_deploy_services(services)
|
159
|
-
end
|
160
|
-
|
161
|
-
def pre_deploy_services(services)
|
162
|
-
@pre_deploy_services += services.map(&:to_sym)
|
163
|
-
return self
|
164
|
-
end
|
165
|
-
|
166
|
-
def post_deploy_services(services)
|
167
|
-
@post_deploy_services += services.map(&:to_sym)
|
146
|
+
@initial_services += services.map(&:to_sym)
|
168
147
|
return self
|
169
148
|
end
|
170
149
|
|
@@ -32,14 +32,12 @@ class KuberKit::Core::ConfigurationFactory
|
|
32
32
|
enabled_services: configuration_attrs.enabled_services,
|
33
33
|
disabled_services: configuration_attrs.disabled_services,
|
34
34
|
default_services: configuration_attrs.default_services,
|
35
|
-
|
36
|
-
post_deploy_services: configuration_attrs.post_deploy_services,
|
35
|
+
initial_services: configuration_attrs.initial_services,
|
37
36
|
global_build_vars: configuration_attrs.global_build_vars || {},
|
38
37
|
deployer_strategy: configuration_attrs.deployer_strategy || configs.deployer_strategy,
|
39
38
|
deployer_namespace: configuration_attrs.deployer_namespace,
|
40
39
|
deployer_require_confirmation: configuration_attrs.deployer_require_confirmation,
|
41
40
|
shell_launcher_strategy: configuration_attrs.shell_launcher_strategy || configs.shell_launcher_strategy,
|
42
|
-
generator_strategy: configuration_attrs.generator_strategy || configs.generator_strategy,
|
43
41
|
)
|
44
42
|
end
|
45
43
|
|
@@ -1,4 +1,6 @@
|
|
1
|
-
class KuberKit::Core::ContextHelper::BaseHelper
|
1
|
+
class KuberKit::Core::ContextHelper::BaseHelper
|
2
|
+
CONTRACT = RespondTo[:get_binding]
|
3
|
+
|
2
4
|
attr_reader :shell, :artifact_store, :image_store, :env_file_reader
|
3
5
|
|
4
6
|
def initialize(image_store:, artifact_store:, shell:, env_file_reader:)
|
@@ -37,4 +39,8 @@ class KuberKit::Core::ContextHelper::BaseHelper < KuberKit::Core::ContextHelper:
|
|
37
39
|
end
|
38
40
|
global_build_vars
|
39
41
|
end
|
42
|
+
|
43
|
+
def get_binding
|
44
|
+
binding
|
45
|
+
end
|
40
46
|
end
|
@@ -2,8 +2,7 @@ class KuberKit::Core::ContextHelper::ContextHelperFactory
|
|
2
2
|
include KuberKit::Import[
|
3
3
|
"core.image_store",
|
4
4
|
"core.artifact_store",
|
5
|
-
|
6
|
-
env_file_reader: "env_file_reader.action_handler"
|
5
|
+
env_file_reader: "env_file_reader.action_handler"
|
7
6
|
]
|
8
7
|
|
9
8
|
def build_image_context(shell, image)
|
@@ -23,7 +22,6 @@ class KuberKit::Core::ContextHelper::ContextHelperFactory
|
|
23
22
|
shell: shell,
|
24
23
|
env_file_reader: env_file_reader,
|
25
24
|
service: service,
|
26
|
-
template_renderer: template_renderer
|
27
25
|
)
|
28
26
|
end
|
29
27
|
end
|
@@ -1,21 +1,15 @@
|
|
1
|
-
require 'ostruct'
|
2
1
|
class KuberKit::Core::ContextHelper::ContextVars
|
3
2
|
attr_reader :parent, :parent_name
|
4
3
|
|
5
4
|
BuildArgUndefined = Class.new(KuberKit::Error)
|
6
5
|
|
7
|
-
def initialize(context_vars, parent_name = nil)
|
6
|
+
def initialize(context_vars, parent_name = nil, parent = nil)
|
8
7
|
@context_vars = context_vars
|
9
8
|
@parent_name = parent_name
|
9
|
+
@parent = parent
|
10
10
|
end
|
11
11
|
|
12
|
-
def read(*variable_names
|
13
|
-
dig(*variable_names)
|
14
|
-
rescue BuildArgUndefined
|
15
|
-
return default
|
16
|
-
end
|
17
|
-
|
18
|
-
def dig(*variable_names)
|
12
|
+
def read(*variable_names)
|
19
13
|
result = self
|
20
14
|
variable_names.each do |var|
|
21
15
|
result = result.get_variable_value(var)
|
@@ -24,7 +18,7 @@ class KuberKit::Core::ContextHelper::ContextVars
|
|
24
18
|
end
|
25
19
|
|
26
20
|
def variable_defined?(*variable_names)
|
27
|
-
|
21
|
+
read(*variable_names)
|
28
22
|
return true
|
29
23
|
rescue BuildArgUndefined
|
30
24
|
return false
|
@@ -35,30 +29,15 @@ class KuberKit::Core::ContextHelper::ContextVars
|
|
35
29
|
raise ArgumentError.new("context args does not accept any arguments")
|
36
30
|
end
|
37
31
|
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
def keys
|
42
|
-
@context_vars.keys
|
32
|
+
read(name)
|
43
33
|
end
|
44
34
|
|
45
35
|
def to_h
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
36
|
+
if @context_vars.is_a?(Hash)
|
37
|
+
return @context_vars
|
38
|
+
else
|
39
|
+
return {value: @context_vars}
|
50
40
|
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)
|
62
41
|
end
|
63
42
|
|
64
43
|
def get_variable_value(variable_name)
|
@@ -67,16 +46,23 @@ class KuberKit::Core::ContextHelper::ContextVars
|
|
67
46
|
end
|
68
47
|
|
69
48
|
if value.is_a?(Hash)
|
70
|
-
return self.class.new(value,
|
49
|
+
return self.class.new(value, variable_name, self)
|
71
50
|
end
|
72
51
|
|
73
52
|
value
|
74
53
|
end
|
75
54
|
|
76
55
|
private
|
77
|
-
|
78
56
|
|
79
57
|
def format_arg(name)
|
80
|
-
[@parent_name, name].compact.join(".")
|
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
|
81
67
|
end
|
82
68
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class KuberKit::Core::ContextHelper::ServiceHelper < KuberKit::Core::ContextHelper::BaseHelper
|
2
|
-
def initialize(image_store:, artifact_store:, shell:, env_file_reader:, service
|
2
|
+
def initialize(image_store:, artifact_store:, shell:, env_file_reader:, service:)
|
3
3
|
super(
|
4
4
|
image_store: image_store,
|
5
5
|
artifact_store: artifact_store,
|
@@ -7,7 +7,6 @@ class KuberKit::Core::ContextHelper::ServiceHelper < KuberKit::Core::ContextHelp
|
|
7
7
|
env_file_reader: env_file_reader
|
8
8
|
)
|
9
9
|
@service = service
|
10
|
-
@template_renderer = template_renderer
|
11
10
|
end
|
12
11
|
|
13
12
|
def service_name
|
@@ -21,17 +20,4 @@ class KuberKit::Core::ContextHelper::ServiceHelper < KuberKit::Core::ContextHelp
|
|
21
20
|
def attribute(attribute_name, default: nil)
|
22
21
|
@service.attribute(attribute_name, default: default)
|
23
22
|
end
|
24
|
-
|
25
|
-
Contract Maybe[String, Symbol], Hash => String
|
26
|
-
def render(template_name, variables = {})
|
27
|
-
context_helper = KuberKit::Core::ContextHelper::LocalContextHelper.new(
|
28
|
-
parent_context_helper: self,
|
29
|
-
variables: variables
|
30
|
-
)
|
31
|
-
@template_renderer.call(shell, template_name.to_sym, context_helper: context_helper)
|
32
|
-
end
|
33
|
-
|
34
|
-
def method_missing(m, *args, &block)
|
35
|
-
raise("Unknown variable: #{m} while rendering '#{service_name}' with '#{@service.template_name}' template.")
|
36
|
-
end
|
37
23
|
end
|
@@ -50,13 +50,6 @@ class KuberKit::Core::Dependencies::AbstractDependencyResolver
|
|
50
50
|
(deps + item_names).uniq
|
51
51
|
end
|
52
52
|
|
53
|
-
# Get all dependencies for items (excluding the items themself), without any limitations
|
54
|
-
Contract Or[Symbol, ArrayOf[Symbol]] => Any
|
55
|
-
def get_all_deps(item_names)
|
56
|
-
deps = Array(item_names).map { |i| get_recursive_deps(i) }.flatten
|
57
|
-
deps.uniq - item_names
|
58
|
-
end
|
59
|
-
|
60
53
|
def get_recursive_deps(item_name, dependency_tree: [])
|
61
54
|
deps = get_deps(item_name)
|
62
55
|
|
@@ -1,28 +1,25 @@
|
|
1
1
|
class KuberKit::Core::Service
|
2
2
|
AttributeNotSet = Class.new(KuberKit::Error)
|
3
3
|
|
4
|
-
attr_reader :name, :
|
5
|
-
:deployer_strategy, :generator_strategy
|
4
|
+
attr_reader :name, :dependencies, :template_name, :tags, :images, :attributes, :deployer_strategy
|
6
5
|
|
7
6
|
Contract KeywordArgs[
|
8
7
|
name: Symbol,
|
9
|
-
|
8
|
+
dependencies: ArrayOf[Symbol],
|
10
9
|
template_name: Maybe[Symbol],
|
11
10
|
tags: ArrayOf[Symbol],
|
12
11
|
images: ArrayOf[Symbol],
|
13
12
|
attributes: HashOf[Symbol => Any],
|
14
|
-
deployer_strategy: Maybe[Symbol]
|
15
|
-
generator_strategy: Maybe[Symbol]
|
13
|
+
deployer_strategy: Maybe[Symbol]
|
16
14
|
] => Any
|
17
|
-
def initialize(name:,
|
15
|
+
def initialize(name:, dependencies:, template_name:, tags:, images:, attributes:, deployer_strategy:)
|
18
16
|
@name = name
|
19
|
-
@
|
17
|
+
@dependencies = dependencies
|
20
18
|
@template_name = template_name
|
21
19
|
@tags = tags
|
22
20
|
@images = images
|
23
21
|
@attributes = attributes
|
24
22
|
@deployer_strategy = deployer_strategy
|
25
|
-
@generator_strategy = generator_strategy
|
26
23
|
end
|
27
24
|
|
28
25
|
def uri
|
@@ -1,32 +1,26 @@
|
|
1
1
|
class KuberKit::Core::ServiceDefinition
|
2
|
-
attr_reader :service_name, :template_name, :dependencies
|
2
|
+
attr_reader :service_name, :template_name, :dependencies
|
3
3
|
|
4
4
|
Contract Or[Symbol, String] => Any
|
5
5
|
def initialize(service_name)
|
6
6
|
@service_name = service_name.to_sym
|
7
|
-
@
|
7
|
+
@dependencies = []
|
8
8
|
end
|
9
9
|
|
10
10
|
def to_service_attrs
|
11
11
|
OpenStruct.new(
|
12
12
|
name: @service_name,
|
13
|
-
|
13
|
+
dependencies: @dependencies,
|
14
14
|
template_name: get_value(@template_name),
|
15
15
|
tags: Array(get_value(@tags)).map(&:to_sym),
|
16
16
|
images: Array(get_value(@images)).map(&:to_sym),
|
17
17
|
attributes: get_value(@attributes),
|
18
18
|
deployer_strategy: get_value(@deployer_strategy),
|
19
|
-
generator_strategy: get_value(@generator_strategy),
|
20
19
|
)
|
21
20
|
end
|
22
21
|
|
23
22
|
def depends_on(*value, &block)
|
24
|
-
|
25
|
-
self
|
26
|
-
end
|
27
|
-
|
28
|
-
def initialize_with(*value, &block)
|
29
|
-
@initializers = Array(value).flatten
|
23
|
+
@dependencies = Array(value).flatten
|
30
24
|
self
|
31
25
|
end
|
32
26
|
|
@@ -60,12 +54,6 @@ class KuberKit::Core::ServiceDefinition
|
|
60
54
|
self
|
61
55
|
end
|
62
56
|
|
63
|
-
def generator_strategy(value = nil, &block)
|
64
|
-
@generator_strategy = block_given? ? block : value
|
65
|
-
|
66
|
-
self
|
67
|
-
end
|
68
|
-
|
69
57
|
private
|
70
58
|
def get_value(variable)
|
71
59
|
variable.is_a?(Proc) ? variable.call : variable
|
@@ -7,13 +7,12 @@ class KuberKit::Core::ServiceFactory
|
|
7
7
|
|
8
8
|
KuberKit::Core::Service.new(
|
9
9
|
name: service_attrs.name,
|
10
|
-
|
10
|
+
dependencies: service_attrs.dependencies,
|
11
11
|
template_name: service_attrs.template_name,
|
12
12
|
tags: service_attrs.tags,
|
13
13
|
images: service_attrs.images,
|
14
14
|
attributes: attributes,
|
15
15
|
deployer_strategy: service_attrs.deployer_strategy,
|
16
|
-
generator_strategy: service_attrs.generator_strategy,
|
17
16
|
)
|
18
17
|
end
|
19
18
|
end
|
data/lib/kuber_kit/defaults.rb
CHANGED
@@ -7,12 +7,12 @@ class KuberKit::Defaults
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def init!
|
10
|
-
container["artifacts_sync.artifact_updater"].
|
11
|
-
container["artifacts_sync.
|
10
|
+
container["artifacts_sync.artifact_updater"].use_resolver(
|
11
|
+
container["artifacts_sync.git_artifact_resolver"],
|
12
12
|
artifact_class: KuberKit::Core::Artifacts::Git
|
13
13
|
)
|
14
|
-
container["artifacts_sync.artifact_updater"].
|
15
|
-
container["artifacts_sync.
|
14
|
+
container["artifacts_sync.artifact_updater"].use_resolver(
|
15
|
+
container["artifacts_sync.null_artifact_resolver"],
|
16
16
|
artifact_class: KuberKit::Core::Artifacts::Local
|
17
17
|
)
|
18
18
|
container["env_file_reader.reader"].use_reader(
|
@@ -39,15 +39,6 @@ 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
|
-
)
|
46
|
-
|
47
|
-
container["service_generator.generator"].register_strategy(
|
48
|
-
:helm,
|
49
|
-
KuberKit::ServiceGenerator::Strategies::Helm.new
|
50
|
-
)
|
51
42
|
|
52
43
|
container["shell_launcher.launcher"].register_strategy(
|
53
44
|
:kubernetes,
|
@@ -5,7 +5,7 @@ class KuberKit::ImageCompiler::ImageBuilder
|
|
5
5
|
]
|
6
6
|
|
7
7
|
Contract KuberKit::Shell::AbstractShell, KuberKit::Core::Image, String, KeywordArgs[
|
8
|
-
context_helper: Maybe[KuberKit::Core::ContextHelper::
|
8
|
+
context_helper: Maybe[KuberKit::Core::ContextHelper::BaseHelper::CONTRACT]
|
9
9
|
] => Any
|
10
10
|
def build(shell, image, build_dir, context_helper: nil)
|
11
11
|
image.before_build_callback.call(context_helper, build_dir) if image.before_build_callback
|
@@ -5,7 +5,7 @@ class KuberKit::ServiceDeployer::ServiceDependencyResolver < KuberKit::Core::Dep
|
|
5
5
|
]
|
6
6
|
|
7
7
|
def get_deps(service_name)
|
8
|
-
service_store.get_definition(service_name).
|
8
|
+
service_store.get_definition(service_name).dependencies
|
9
9
|
end
|
10
10
|
|
11
11
|
def dependency_batch_size
|
@@ -10,8 +10,7 @@ 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
|
14
|
-
:apply_command
|
13
|
+
:wait_for_rollout
|
15
14
|
]
|
16
15
|
|
17
16
|
Contract KuberKit::Shell::AbstractShell, KuberKit::Core::Service => Any
|
@@ -41,12 +40,7 @@ class KuberKit::ServiceDeployer::Strategies::Kubernetes < KuberKit::ServiceDeplo
|
|
41
40
|
kubectl_commands.delete_resource(shell, resource_type, resource_name, kubeconfig_path: kubeconfig_path, namespace: namespace)
|
42
41
|
end
|
43
42
|
|
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
|
-
)
|
43
|
+
apply_result = kubectl_commands.apply_file(shell, config_path, kubeconfig_path: kubeconfig_path, namespace: namespace)
|
50
44
|
|
51
45
|
restart_enabled = strategy_options.fetch(:restart_if_exists, true)
|
52
46
|
wait_for_rollout = strategy_options.fetch(:wait_for_rollout, true)
|
@@ -1,7 +1,9 @@
|
|
1
1
|
class KuberKit::ServiceReader::Reader
|
2
2
|
include KuberKit::Import[
|
3
|
+
"core.template_store",
|
3
4
|
"core.context_helper_factory",
|
4
|
-
"template_reader.
|
5
|
+
"template_reader.reader",
|
6
|
+
"preprocessing.text_preprocessor"
|
5
7
|
]
|
6
8
|
|
7
9
|
AttributeNotSetError = Class.new(KuberKit::Error)
|
@@ -12,8 +14,14 @@ class KuberKit::ServiceReader::Reader
|
|
12
14
|
raise AttributeNotSetError, "Please set template for service using #template method"
|
13
15
|
end
|
14
16
|
|
17
|
+
template = template_store.get(service.template_name)
|
18
|
+
|
15
19
|
context_helper = context_helper_factory.build_service_context(shell, service)
|
16
20
|
|
17
|
-
|
21
|
+
template = reader.read(shell, template)
|
22
|
+
|
23
|
+
result = text_preprocessor.compile(template, context_helper: context_helper)
|
24
|
+
|
25
|
+
result
|
18
26
|
end
|
19
27
|
end
|
@@ -1,27 +1,27 @@
|
|
1
1
|
require 'time'
|
2
2
|
class KuberKit::Shell::Commands::BashCommands
|
3
3
|
def rm(shell, path)
|
4
|
-
shell.exec!(%Q{rm "#{path}"}
|
4
|
+
shell.exec!(%Q{rm "#{path}"})
|
5
5
|
end
|
6
6
|
|
7
7
|
def rm_rf(shell, path)
|
8
|
-
shell.exec!(%Q{rm -rf "#{path}"}
|
8
|
+
shell.exec!(%Q{rm -rf "#{path}"})
|
9
9
|
end
|
10
10
|
|
11
11
|
def cp(shell, source_path, dest_path)
|
12
|
-
shell.exec!(%Q{cp "#{source_path}" "#{dest_path}"}
|
12
|
+
shell.exec!(%Q{cp "#{source_path}" "#{dest_path}"})
|
13
13
|
end
|
14
14
|
|
15
15
|
def cp_r(shell, source_path, dest_path)
|
16
|
-
shell.exec!(%Q{cp -r "#{source_path}" "#{dest_path}"}
|
16
|
+
shell.exec!(%Q{cp -r "#{source_path}" "#{dest_path}"})
|
17
17
|
end
|
18
18
|
|
19
19
|
def mkdir(shell, path)
|
20
|
-
shell.exec!(%Q{mkdir "#{path}"}
|
20
|
+
shell.exec!(%Q{mkdir "#{path}"})
|
21
21
|
end
|
22
22
|
|
23
23
|
def mkdir_p(shell, path)
|
24
|
-
shell.exec!(%Q{mkdir -p "#{path}"}
|
24
|
+
shell.exec!(%Q{mkdir -p "#{path}"})
|
25
25
|
end
|
26
26
|
|
27
27
|
def ctime(shell, path)
|
@@ -3,15 +3,15 @@ class KuberKit::Shell::Commands::DockerCommands
|
|
3
3
|
default_args = ["--rm=true"]
|
4
4
|
args_list = (default_args + args).join(" ")
|
5
5
|
|
6
|
-
shell.exec!(%Q{docker image build #{build_dir} #{args_list}}
|
6
|
+
shell.exec!(%Q{docker image build #{build_dir} #{args_list}})
|
7
7
|
end
|
8
8
|
|
9
9
|
def tag(shell, image_name, tag_name)
|
10
|
-
shell.exec!(%Q{docker tag #{image_name} #{tag_name}}
|
10
|
+
shell.exec!(%Q{docker tag #{image_name} #{tag_name}})
|
11
11
|
end
|
12
12
|
|
13
13
|
def push(shell, tag_name)
|
14
|
-
shell.exec!(%Q{docker push #{tag_name}}
|
14
|
+
shell.exec!(%Q{docker push #{tag_name}})
|
15
15
|
end
|
16
16
|
|
17
17
|
def run(shell, image_name, args: nil, command: nil, detached: false, interactive: false)
|
@@ -25,7 +25,7 @@ class KuberKit::Shell::Commands::DockerCommands
|
|
25
25
|
if interactive
|
26
26
|
shell.interactive!(command_parts.join(" "))
|
27
27
|
else
|
28
|
-
shell.exec!(command_parts.join(" ")
|
28
|
+
shell.exec!(command_parts.join(" "))
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
@@ -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
|
47
|
+
command_parts << "--filter=\"name=#{container_name}\""
|
48
48
|
|
49
49
|
shell.exec!(command_parts.join(" "))
|
50
50
|
end
|