dapp 0.29.2 → 0.30.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 +5 -5
- data/bin/dapp +1 -23
- data/config/en/net_status.yml +5 -4
- data/lib/dapp.rb +1 -1
- data/lib/dapp/dapp/sentry.rb +11 -8
- data/lib/dapp/dimg/dapp/command/cleanup_repo.rb +33 -21
- data/lib/dapp/dimg/dimg/git_artifact.rb +2 -5
- data/lib/dapp/dimg/git_artifact.rb +41 -23
- data/lib/dapp/dimg/git_repo/base.rb +19 -39
- data/lib/dapp/dimg/git_repo/local.rb +15 -14
- data/lib/dapp/dimg/git_repo/remote.rb +32 -19
- data/lib/dapp/kube/cli/command/kube/deploy.rb +4 -0
- data/lib/dapp/kube/cli/command/kube/dismiss.rb +4 -0
- data/lib/dapp/kube/cli/command/kube/lint.rb +4 -0
- data/lib/dapp/kube/cli/command/kube/render.rb +4 -0
- data/lib/dapp/kube/cli/command/kube/value_get.rb +4 -0
- data/lib/dapp/kube/dapp/command/common.rb +21 -18
- data/lib/dapp/kube/dapp/command/minikube_setup.rb +6 -2
- data/lib/dapp/kube/helm/release.rb +1 -1
- data/lib/dapp/kube/helm/values.rb +3 -3
- data/lib/dapp/kube/kubernetes/client.rb +21 -90
- data/lib/dapp/kube/kubernetes/config.rb +129 -0
- data/lib/dapp/version.rb +1 -1
- metadata +6 -44
- data/lib/dapp/deployment/app.rb +0 -120
- data/lib/dapp/deployment/cli/cli.rb +0 -1
- data/lib/dapp/deployment/cli/command/base.rb +0 -14
- data/lib/dapp/deployment/cli/command/deployment.rb +0 -18
- data/lib/dapp/deployment/cli/command/deployment/apply.rb +0 -26
- data/lib/dapp/deployment/cli/command/deployment/mrproper.rb +0 -13
- data/lib/dapp/deployment/config/config.rb +0 -46
- data/lib/dapp/deployment/config/directive/app.rb +0 -28
- data/lib/dapp/deployment/config/directive/app/instance_methods.rb +0 -51
- data/lib/dapp/deployment/config/directive/base.rb +0 -13
- data/lib/dapp/deployment/config/directive/deployment.rb +0 -11
- data/lib/dapp/deployment/config/directive/expose.rb +0 -68
- data/lib/dapp/deployment/config/directive/group.rb +0 -27
- data/lib/dapp/deployment/config/directive/job.rb +0 -28
- data/lib/dapp/deployment/config/directive/mod/group.rb +0 -22
- data/lib/dapp/deployment/config/directive/mod/jobs.rb +0 -26
- data/lib/dapp/deployment/config/directive/namespace.rb +0 -26
- data/lib/dapp/deployment/config/directive/namespace/instance_methods.rb +0 -37
- data/lib/dapp/deployment/core_ext/hash.rb +0 -19
- data/lib/dapp/deployment/dapp/command/apply.rb +0 -71
- data/lib/dapp/deployment/dapp/command/common.rb +0 -17
- data/lib/dapp/deployment/dapp/command/mrproper.rb +0 -12
- data/lib/dapp/deployment/dapp/dapp.rb +0 -15
- data/lib/dapp/deployment/dapp/dappfile.rb +0 -23
- data/lib/dapp/deployment/deployment.rb +0 -46
- data/lib/dapp/deployment/error/app.rb +0 -7
- data/lib/dapp/deployment/error/default.rb +0 -7
- data/lib/dapp/deployment/error/deployment.rb +0 -7
- data/lib/dapp/deployment/error/kubernetes.rb +0 -7
- data/lib/dapp/deployment/kube_app.rb +0 -146
- data/lib/dapp/deployment/kube_base.rb +0 -97
- data/lib/dapp/deployment/kube_deployment.rb +0 -51
- data/lib/dapp/deployment/kubernetes.rb +0 -174
- data/lib/dapp/deployment/kubernetes/error.rb +0 -20
- data/lib/dapp/deployment/mod/jobs.rb +0 -37
- data/lib/dapp/deployment/mod/namespace.rb +0 -58
- data/lib/dapp/deployment/mod/system_environments.rb +0 -30
- data/lib/dapp/deployment/secret.rb +0 -93
- data/lib/dapp/kube/error/kubernetes.rb +0 -7
@@ -1,20 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Deployment
|
3
|
-
module Kubernetes::Error
|
4
|
-
class Default < ::Dapp::Deployment::Error::Kubernetes
|
5
|
-
def initialize(**net_status)
|
6
|
-
super(**net_status, context: :kubernetes)
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
class NotFound < Default
|
11
|
-
def initialize(**net_status)
|
12
|
-
super({code: :not_found}.merge(net_status))
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
class Timeout < Default; end
|
17
|
-
class ConnectionRefused < Default; end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Deployment
|
3
|
-
module Mod
|
4
|
-
module Jobs
|
5
|
-
[:bootstrap, :before_apply_job].each do |job|
|
6
|
-
define_method :"to_kube_#{job}_pods" do |repo, image_version|
|
7
|
-
to_kube_default_job_pods(job, repo, image_version)
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
def to_kube_default_job_pods(directive, repo, image_version)
|
12
|
-
return {} if (directive_config = config.public_send("_#{directive}")).empty?
|
13
|
-
{}.tap do |hash|
|
14
|
-
hash[name(directive)] = {}.tap do |pod|
|
15
|
-
pod['metadata'] = {}.tap do |metadata|
|
16
|
-
metadata['name'] = name(directive)
|
17
|
-
metadata['labels'] = kube.labels
|
18
|
-
end
|
19
|
-
pod['spec'] = {}.tap do |spec|
|
20
|
-
spec['restartPolicy'] = 'Never'
|
21
|
-
spec['containers'] = [].tap do |containers|
|
22
|
-
containers << {}.tap do |container|
|
23
|
-
container['imagePullPolicy'] = 'Always'
|
24
|
-
container['image'] = [repo, [directive_config._dimg || config._dimg, image_version].compact.join('-')].join(':')
|
25
|
-
container['name'] = name(directive)
|
26
|
-
container['command'] = directive_config._run unless directive_config._run.empty?
|
27
|
-
container['env'] = environments unless environments.empty?
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,58 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Deployment
|
3
|
-
module Mod
|
4
|
-
module Namespace
|
5
|
-
def environment
|
6
|
-
config._environment
|
7
|
-
.merge(namespace_config_directive(:_environment) || {})
|
8
|
-
.merge(system_environments)
|
9
|
-
end
|
10
|
-
|
11
|
-
def secret_environment
|
12
|
-
return {} if secret.nil?
|
13
|
-
config._secret_environment
|
14
|
-
.merge(namespace_config_directive(:_secret_environment) || {})
|
15
|
-
.each_with_object({}) { |(k, v), environments| environments[k] = secret.extract(v) }
|
16
|
-
end
|
17
|
-
|
18
|
-
def environments
|
19
|
-
[environment, secret_environment]
|
20
|
-
.select { |env| !env.empty? }
|
21
|
-
.map { |h| h.map { |k, v| { 'name' => k.to_s, 'value' => v.to_s } } }
|
22
|
-
.flatten
|
23
|
-
end
|
24
|
-
|
25
|
-
def scale
|
26
|
-
namespace_config_directive(:_scale) || config._scale || 1
|
27
|
-
end
|
28
|
-
|
29
|
-
def namespace_config_directive(name)
|
30
|
-
return if namespace_config.nil?
|
31
|
-
namespace_config.send(name)
|
32
|
-
end
|
33
|
-
|
34
|
-
def namespace_config
|
35
|
-
@namespace_config = begin
|
36
|
-
error_class = Error.const_get(self.class.name.to_s.split('::').last)
|
37
|
-
if config._namespace.include?(namespace)
|
38
|
-
config._namespace[namespace]
|
39
|
-
elsif namespace.nil? || namespace == 'default'
|
40
|
-
if config._namespace.one?
|
41
|
-
config._namespace.values.first
|
42
|
-
elsif config._namespace.empty?
|
43
|
-
else
|
44
|
-
if namespace.nil?
|
45
|
-
raise error_class, code: :namespace_not_defined, data: { name: name }
|
46
|
-
else
|
47
|
-
raise error_class, code: :namespace_not_found, data: { namespace: namespace, name: name }
|
48
|
-
end
|
49
|
-
end
|
50
|
-
else
|
51
|
-
raise error_class, code: :namespace_not_found, data: { namespace: namespace, name: name }
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Deployment
|
3
|
-
module Mod
|
4
|
-
module SystemEnvironments
|
5
|
-
protected
|
6
|
-
|
7
|
-
def system_environments
|
8
|
-
@system_environments ||= begin
|
9
|
-
[namespace_system_env_name_prefix, system_env_name_prefix].each_with_object({}) do |prefix, environments|
|
10
|
-
ENV.map do |k, v|
|
11
|
-
if k.start_with?(prefix)
|
12
|
-
key = k.sub(prefix, '')
|
13
|
-
environments[key] = v unless environments.key?(key)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def namespace_system_env_name_prefix
|
21
|
-
[system_env_name_prefix, namespace.to_s.tr('-', '_').upcase].join('_')
|
22
|
-
end
|
23
|
-
|
24
|
-
def system_env_name_prefix
|
25
|
-
'DAPP_DEPLOYMENT'
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,93 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Deployment
|
3
|
-
class Secret
|
4
|
-
attr_reader :key
|
5
|
-
|
6
|
-
def initialize(key)
|
7
|
-
self.class._validate_key!(key)
|
8
|
-
@key = key
|
9
|
-
end
|
10
|
-
|
11
|
-
def generate(value)
|
12
|
-
cipher = self.class._openssl_cipher
|
13
|
-
cipher.encrypt
|
14
|
-
cipher.key = self.class._hex_to_binary key
|
15
|
-
iv = cipher.random_iv
|
16
|
-
|
17
|
-
iv_size_prefix = [iv.bytesize].pack('S')
|
18
|
-
encrypted = cipher.update(value.to_s) + cipher.final
|
19
|
-
|
20
|
-
self.class._binary_to_hex "#{iv_size_prefix}#{iv}#{encrypted}"
|
21
|
-
end
|
22
|
-
|
23
|
-
def extract(hexdata)
|
24
|
-
data = self.class._hex_to_binary hexdata.to_s
|
25
|
-
|
26
|
-
iv_size = data.unpack('S').first
|
27
|
-
data = data.byteslice(2..-1)
|
28
|
-
raise ExtractionError, code: :bad_data, data: {data: hexdata} unless data
|
29
|
-
|
30
|
-
iv = data.byteslice(0, iv_size)
|
31
|
-
data = data.byteslice(iv_size..-1)
|
32
|
-
raise ExtractionError, code: :bad_data, data: {data: hexdata} unless data
|
33
|
-
|
34
|
-
decipher = self.class._openssl_cipher
|
35
|
-
decipher.decrypt
|
36
|
-
decipher.key = self.class._hex_to_binary(key)
|
37
|
-
|
38
|
-
begin
|
39
|
-
decipher.iv = iv
|
40
|
-
rescue OpenSSL::Cipher::CipherError
|
41
|
-
raise ExtractionError, code: :bad_data, data: {data: hexdata}
|
42
|
-
end
|
43
|
-
|
44
|
-
begin
|
45
|
-
value = decipher.update(data) + decipher.final
|
46
|
-
rescue OpenSSL::Cipher::CipherError
|
47
|
-
raise ExtractionError, code: :bad_data, data: {data: hexdata}
|
48
|
-
end
|
49
|
-
value.force_encoding('utf-8')
|
50
|
-
end
|
51
|
-
|
52
|
-
class << self
|
53
|
-
def generate_key
|
54
|
-
_binary_to_hex _openssl_cipher.random_key
|
55
|
-
end
|
56
|
-
|
57
|
-
def _openssl_cipher
|
58
|
-
OpenSSL::Cipher::AES.new(128, :CBC)
|
59
|
-
end
|
60
|
-
|
61
|
-
def _hex_to_binary(key)
|
62
|
-
[key].pack('H*')
|
63
|
-
end
|
64
|
-
|
65
|
-
def _binary_to_hex(key)
|
66
|
-
key.unpack('H*').first
|
67
|
-
end
|
68
|
-
|
69
|
-
def _validate_key!(key)
|
70
|
-
# Требуется 128 битный ключ — это 16 байт.
|
71
|
-
# Ключ закодирован в hex кодировке для пользователя.
|
72
|
-
# 2 hex символа на 1 байт в hex кодировке.
|
73
|
-
# Поэтому требуется длина ключа в hex кодировке в 32 символа.
|
74
|
-
if key.bytesize < 32
|
75
|
-
raise InvalidKeyError, code: :key_length_too_short, data: {required_size: 32}
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
class Error < ::Dapp::Deployment::Error::Default
|
81
|
-
def initialize(**net_status)
|
82
|
-
super(net_status.merge(context: :secret))
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
class InvalidKeyError < Error
|
87
|
-
end
|
88
|
-
|
89
|
-
class ExtractionError < Error
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|