kuby-core 0.7.2 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/kuby-core.gemspec +5 -3
- data/lib/kuby.rb +5 -3
- data/lib/kuby/definition.rb +0 -8
- data/lib/kuby/docker/layer.rb +4 -4
- data/lib/kuby/docker/metadata.rb +6 -6
- data/lib/kuby/docker/package_phase.rb +2 -2
- data/lib/kuby/docker/spec.rb +11 -11
- data/lib/kuby/environment.rb +6 -2
- data/lib/kuby/kubernetes.rb +0 -2
- data/lib/kuby/kubernetes/deploy_task.rb +0 -1
- data/lib/kuby/kubernetes/deployer.rb +7 -7
- data/lib/kuby/kubernetes/minikube_provider.rb +4 -0
- data/lib/kuby/kubernetes/provider.rb +5 -5
- data/lib/kuby/kubernetes/spec.rb +8 -8
- data/lib/kuby/plugin.rb +59 -0
- data/lib/kuby/plugins.rb +6 -0
- data/lib/kuby/plugins/nginx_ingress.rb +71 -0
- data/lib/kuby/plugins/rails_app.rb +18 -0
- data/lib/kuby/plugins/rails_app/asset_copy_task.rb +117 -0
- data/lib/kuby/plugins/rails_app/assets.rb +347 -0
- data/lib/kuby/plugins/rails_app/database.rb +75 -0
- data/lib/kuby/{kubernetes/plugins → plugins}/rails_app/generators/kuby.rb +0 -0
- data/lib/kuby/plugins/rails_app/mysql.rb +155 -0
- data/lib/kuby/plugins/rails_app/plugin.rb +398 -0
- data/lib/kuby/plugins/rails_app/postgres.rb +143 -0
- data/lib/kuby/plugins/rails_app/rewrite_db_config.rb +11 -0
- data/lib/kuby/plugins/rails_app/sqlite.rb +32 -0
- data/lib/kuby/{kubernetes/plugins → plugins}/rails_app/tasks.rake +10 -2
- data/lib/kuby/tasks.rb +9 -9
- data/lib/kuby/tasks/kuby.rake +1 -1
- data/lib/kuby/version.rb +1 -1
- metadata +34 -27
- data/lib/ext/krane/kubernetes_resource.rb +0 -16
- data/lib/kuby/kubernetes/plugin.rb +0 -55
- data/lib/kuby/kubernetes/plugins.rb +0 -8
- data/lib/kuby/kubernetes/plugins/nginx_ingress.rb +0 -73
- data/lib/kuby/kubernetes/plugins/rails_app.rb +0 -16
- data/lib/kuby/kubernetes/plugins/rails_app/database.rb +0 -79
- data/lib/kuby/kubernetes/plugins/rails_app/mysql.rb +0 -154
- data/lib/kuby/kubernetes/plugins/rails_app/plugin.rb +0 -379
- data/lib/kuby/kubernetes/plugins/rails_app/postgres.rb +0 -142
- data/lib/kuby/kubernetes/plugins/rails_app/rewrite_db_config.rb +0 -13
- data/lib/kuby/kubernetes/plugins/rails_app/sqlite.rb +0 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac73b245f1fb75244ed166e23a6441cc56dabaec66f532f67517b4dd8d412091
|
4
|
+
data.tar.gz: 6418a3fbca89fdc195e277aeb8309caa2b519e1d3df0fccd53f3ae8b2e9f166f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f7bc8616cfdf23805bf9177198f62888b17372ae67b4fb4a77c4d325adbbcf6d734385edb0614094be95bb443d84b28f6d79fe70a8acaecdfb44b547bcf86b0
|
7
|
+
data.tar.gz: 815fd1ae302c35fdd0fb31f43bb1d607073a9cfb1f24d3c849578b0b8a5271bca5cbe49f2747bdf7bb22d1a4b98d1fa455c3a917e7d27f059f5a4778da215f87
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
## 0.8.0
|
2
|
+
* Upgrade to Krane >= 1.1.4, < 2.0.
|
3
|
+
* Remove Krane monkeypatch in ext/.
|
4
|
+
* Implement a Rails static asset server.
|
5
|
+
* Move plugins from `Kuby::Kubernetes` namespace to `Kuby` namespace.
|
6
|
+
- This is to eventually enable plugins to modify the Dockerfile and introduce additional Dockerfiles (i.e. to enable a development mode, etc).
|
7
|
+
* Pass `Environment` instead of `Definition` instances around.
|
8
|
+
- Providers, plugins, etc all take `Definition` instances. `Definition#kubernetes`, for example, returns the Kubernetes spec for the `Environment` specified by `KUBY_ENV` (or the first env defined if `KUBY_ENV` is not set). This is a problem for Kuby configs that specify multiple environments, and causes plugins to make changes to the default environment instead of the one they've been specifically added to. For example, if the `:production` env is defined first, the `:development` env still gets a cluster issuer from cert-manager even though `enable_tls` is set to `false`.
|
9
|
+
|
1
10
|
## 0.7.2
|
2
11
|
* Fix issue causing `Kuby.environment(...)` to raise an `UndefinedEnvironmentError` for existing environments.
|
3
12
|
|
data/kuby-core.gemspec
CHANGED
@@ -14,10 +14,12 @@ Gem::Specification.new do |s|
|
|
14
14
|
|
15
15
|
s.add_dependency 'colorize', '~> 0.8'
|
16
16
|
s.add_dependency 'docker-remote', '~> 0.1'
|
17
|
-
|
18
|
-
|
17
|
+
# See: https://github.com/Shopify/krane/pull/720
|
18
|
+
# See: https://github.com/Shopify/krane/blob/master/CHANGELOG.md#114
|
19
|
+
s.add_dependency 'krane', '>= 1.1.4', '< 2.0'
|
20
|
+
s.add_dependency 'kuby-cert-manager', '>= 0.3'
|
19
21
|
s.add_dependency 'kube-dsl', '~> 0.3'
|
20
|
-
s.add_dependency 'kuby-kube-db', '
|
22
|
+
s.add_dependency 'kuby-kube-db', '>= 0.5'
|
21
23
|
s.add_dependency 'kubernetes-cli', '~> 0.2'
|
22
24
|
s.add_dependency 'railties', '>= 5.1'
|
23
25
|
s.add_dependency 'rouge', '~> 3.0'
|
data/lib/kuby.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'kuby/railtie'
|
2
2
|
|
3
3
|
begin
|
4
|
-
require 'kuby/
|
4
|
+
require 'kuby/plugins/rails_app/generators/kuby'
|
5
5
|
rescue NameError
|
6
6
|
end
|
7
7
|
|
@@ -13,6 +13,8 @@ module Kuby
|
|
13
13
|
autoload :Environment, 'kuby/environment'
|
14
14
|
autoload :Kubernetes, 'kuby/kubernetes'
|
15
15
|
autoload :Middleware, 'kuby/middleware'
|
16
|
+
autoload :Plugin, 'kuby/plugin'
|
17
|
+
autoload :Plugins, 'kuby/plugins'
|
16
18
|
autoload :Tasks, 'kuby/tasks'
|
17
19
|
autoload :TrailingHash, 'kuby/trailing_hash'
|
18
20
|
|
@@ -107,8 +109,8 @@ end
|
|
107
109
|
Kuby.register_provider(:minikube, Kuby::Kubernetes::MinikubeProvider)
|
108
110
|
|
109
111
|
# plugins
|
110
|
-
Kuby.register_plugin(:rails_app, Kuby::
|
111
|
-
Kuby.register_plugin(:nginx_ingress, Kuby::
|
112
|
+
Kuby.register_plugin(:rails_app, Kuby::Plugins::RailsApp::Plugin)
|
113
|
+
Kuby.register_plugin(:nginx_ingress, Kuby::Plugins::NginxIngress)
|
112
114
|
|
113
115
|
# distros
|
114
116
|
Kuby.register_distro(:debian, Kuby::Docker::Debian)
|
data/lib/kuby/definition.rb
CHANGED
data/lib/kuby/docker/layer.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
module Kuby
|
2
2
|
module Docker
|
3
3
|
class Layer
|
4
|
-
attr_reader :
|
4
|
+
attr_reader :environment
|
5
5
|
|
6
|
-
def initialize(
|
7
|
-
@
|
6
|
+
def initialize(environment)
|
7
|
+
@environment = environment
|
8
8
|
end
|
9
9
|
|
10
10
|
def apply_to(dockerfile)
|
@@ -15,7 +15,7 @@ module Kuby
|
|
15
15
|
private
|
16
16
|
|
17
17
|
def metadata
|
18
|
-
|
18
|
+
environment.docker.metadata
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
data/lib/kuby/docker/metadata.rb
CHANGED
@@ -8,10 +8,10 @@ module Kuby
|
|
8
8
|
LATEST_TAG = 'latest'
|
9
9
|
|
10
10
|
attr_accessor :image_url
|
11
|
-
attr_reader :
|
11
|
+
attr_reader :environment
|
12
12
|
|
13
|
-
def initialize(
|
14
|
-
@
|
13
|
+
def initialize(environment)
|
14
|
+
@environment = environment
|
15
15
|
@tags = []
|
16
16
|
end
|
17
17
|
|
@@ -46,7 +46,7 @@ module Kuby
|
|
46
46
|
|
47
47
|
def tag
|
48
48
|
t = ENV.fetch('KUBY_DOCKER_TAG') do
|
49
|
-
|
49
|
+
environment.docker.tags.latest_timestamp_tag
|
50
50
|
end
|
51
51
|
|
52
52
|
unless t
|
@@ -57,7 +57,7 @@ module Kuby
|
|
57
57
|
end
|
58
58
|
|
59
59
|
def previous_tag(current_tag)
|
60
|
-
t =
|
60
|
+
t = environment.docker.tags.previous_timestamp_tag(current_tag)
|
61
61
|
|
62
62
|
unless t
|
63
63
|
raise MissingTagError, 'could not find previous timestamped tag'
|
@@ -78,7 +78,7 @@ module Kuby
|
|
78
78
|
|
79
79
|
def default_image_url
|
80
80
|
# assuming dockerhub by not specifying full url
|
81
|
-
@default_image_url ||=
|
81
|
+
@default_image_url ||= environment.app_name.downcase
|
82
82
|
end
|
83
83
|
|
84
84
|
def default_tags
|
@@ -40,7 +40,7 @@ module Kuby
|
|
40
40
|
private
|
41
41
|
|
42
42
|
def distro_spec
|
43
|
-
|
43
|
+
environment.docker.distro_spec
|
44
44
|
end
|
45
45
|
|
46
46
|
def get_package(package_name, version)
|
@@ -52,7 +52,7 @@ module Kuby
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def metadata
|
55
|
-
|
55
|
+
environment.docker.metadata
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
data/lib/kuby/docker/spec.rb
CHANGED
@@ -3,10 +3,10 @@ require 'docker/remote'
|
|
3
3
|
module Kuby
|
4
4
|
module Docker
|
5
5
|
class Spec
|
6
|
-
attr_reader :
|
6
|
+
attr_reader :environment
|
7
7
|
|
8
|
-
def initialize(
|
9
|
-
@
|
8
|
+
def initialize(environment)
|
9
|
+
@environment = environment
|
10
10
|
end
|
11
11
|
|
12
12
|
def base_image(image_url)
|
@@ -75,35 +75,35 @@ module Kuby
|
|
75
75
|
end
|
76
76
|
|
77
77
|
def setup_phase
|
78
|
-
@setup_phase ||= SetupPhase.new(
|
78
|
+
@setup_phase ||= SetupPhase.new(environment)
|
79
79
|
end
|
80
80
|
|
81
81
|
def package_phase
|
82
|
-
@package_phase ||= PackagePhase.new(
|
82
|
+
@package_phase ||= PackagePhase.new(environment)
|
83
83
|
end
|
84
84
|
|
85
85
|
def bundler_phase
|
86
|
-
@bundler_phase ||= BundlerPhase.new(
|
86
|
+
@bundler_phase ||= BundlerPhase.new(environment)
|
87
87
|
end
|
88
88
|
|
89
89
|
def yarn_phase
|
90
|
-
@yarn_phase ||= YarnPhase.new(
|
90
|
+
@yarn_phase ||= YarnPhase.new(environment)
|
91
91
|
end
|
92
92
|
|
93
93
|
def copy_phase
|
94
|
-
@copy_phase ||= CopyPhase.new(
|
94
|
+
@copy_phase ||= CopyPhase.new(environment)
|
95
95
|
end
|
96
96
|
|
97
97
|
def assets_phase
|
98
|
-
@assets_phase ||= AssetsPhase.new(
|
98
|
+
@assets_phase ||= AssetsPhase.new(environment)
|
99
99
|
end
|
100
100
|
|
101
101
|
def webserver_phase
|
102
|
-
@webserver_phase ||= WebserverPhase.new(
|
102
|
+
@webserver_phase ||= WebserverPhase.new(environment)
|
103
103
|
end
|
104
104
|
|
105
105
|
def metadata
|
106
|
-
@metadata ||= Metadata.new(
|
106
|
+
@metadata ||= Metadata.new(environment)
|
107
107
|
end
|
108
108
|
|
109
109
|
def tags
|
data/lib/kuby/environment.rb
CHANGED
@@ -8,15 +8,19 @@ module Kuby
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def docker(&block)
|
11
|
-
@docker ||= Docker::Spec.new(
|
11
|
+
@docker ||= Docker::Spec.new(self)
|
12
12
|
@docker.instance_eval(&block) if block
|
13
13
|
@docker
|
14
14
|
end
|
15
15
|
|
16
16
|
def kubernetes(&block)
|
17
|
-
@kubernetes ||= Kubernetes::Spec.new(
|
17
|
+
@kubernetes ||= Kubernetes::Spec.new(self)
|
18
18
|
@kubernetes.instance_eval(&block) if block
|
19
19
|
@kubernetes
|
20
20
|
end
|
21
|
+
|
22
|
+
def app_name
|
23
|
+
definition.app_name
|
24
|
+
end
|
21
25
|
end
|
22
26
|
end
|
data/lib/kuby/kubernetes.rb
CHANGED
@@ -7,8 +7,6 @@ module Kuby
|
|
7
7
|
autoload :DeployTask, 'kuby/kubernetes/deploy_task'
|
8
8
|
autoload :DockerConfig, 'kuby/kubernetes/docker_config'
|
9
9
|
autoload :Manifest, 'kuby/kubernetes/manifest'
|
10
|
-
autoload :Monitors, 'kuby/kubernetes/monitors'
|
11
|
-
autoload :Plugin, 'kuby/kubernetes/plugin'
|
12
10
|
autoload :Plugins, 'kuby/kubernetes/plugins'
|
13
11
|
autoload :Provider, 'kuby/kubernetes/provider'
|
14
12
|
autoload :RegistrySecret, 'kuby/kubernetes/registry_secret'
|
@@ -5,10 +5,10 @@ require 'yaml'
|
|
5
5
|
module Kuby
|
6
6
|
module Kubernetes
|
7
7
|
class Deployer
|
8
|
-
attr_reader :
|
8
|
+
attr_reader :environment
|
9
9
|
|
10
|
-
def initialize(
|
11
|
-
@
|
10
|
+
def initialize(environment)
|
11
|
+
@environment = environment
|
12
12
|
end
|
13
13
|
|
14
14
|
def deploy
|
@@ -42,7 +42,7 @@ module Kuby
|
|
42
42
|
|
43
43
|
cli.apply(res)
|
44
44
|
end
|
45
|
-
rescue InvalidResourceError => e
|
45
|
+
rescue KubernetesCLI::InvalidResourceError => e
|
46
46
|
Kuby.logger.fatal(e.message)
|
47
47
|
Kuby.logger.fatal(e.resource.to_resource.to_yaml)
|
48
48
|
end
|
@@ -74,15 +74,15 @@ module Kuby
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def provider
|
77
|
-
|
77
|
+
environment.kubernetes.provider
|
78
78
|
end
|
79
79
|
|
80
80
|
def namespace
|
81
|
-
|
81
|
+
environment.kubernetes.namespace
|
82
82
|
end
|
83
83
|
|
84
84
|
def all_resources
|
85
|
-
|
85
|
+
environment.kubernetes.resources
|
86
86
|
end
|
87
87
|
|
88
88
|
def cli
|
@@ -3,10 +3,10 @@ require 'kubernetes-cli'
|
|
3
3
|
module Kuby
|
4
4
|
module Kubernetes
|
5
5
|
class Provider
|
6
|
-
attr_reader :
|
6
|
+
attr_reader :environment
|
7
7
|
|
8
|
-
def initialize(
|
9
|
-
@
|
8
|
+
def initialize(environment)
|
9
|
+
@environment = environment
|
10
10
|
after_initialize
|
11
11
|
end
|
12
12
|
|
@@ -66,11 +66,11 @@ module Kuby
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def deployer
|
69
|
-
@deployer ||= Kuby::Kubernetes::Deployer.new(
|
69
|
+
@deployer ||= Kuby::Kubernetes::Deployer.new(environment)
|
70
70
|
end
|
71
71
|
|
72
72
|
def spec
|
73
|
-
|
73
|
+
environment.kubernetes
|
74
74
|
end
|
75
75
|
end
|
76
76
|
end
|
data/lib/kuby/kubernetes/spec.rb
CHANGED
@@ -5,10 +5,10 @@ module Kuby
|
|
5
5
|
class Spec
|
6
6
|
extend ::KubeDSL::ValueFields
|
7
7
|
|
8
|
-
attr_reader :
|
8
|
+
attr_reader :environment, :plugins, :tag
|
9
9
|
|
10
|
-
def initialize(
|
11
|
-
@
|
10
|
+
def initialize(environment)
|
11
|
+
@environment = environment
|
12
12
|
@plugins = TrailingHash.new
|
13
13
|
|
14
14
|
# default plugins
|
@@ -18,7 +18,7 @@ module Kuby
|
|
18
18
|
def provider(provider_name = nil, &block)
|
19
19
|
if provider_name
|
20
20
|
if @provider || provider_klass = Kuby.providers[provider_name]
|
21
|
-
@provider ||= provider_klass.new(
|
21
|
+
@provider ||= provider_klass.new(environment)
|
22
22
|
@provider.configure(&block)
|
23
23
|
else
|
24
24
|
msg = if provider_name
|
@@ -37,7 +37,7 @@ module Kuby
|
|
37
37
|
|
38
38
|
def configure_plugin(plugin_name, &block)
|
39
39
|
if @plugins[plugin_name] || plugin_klass = Kuby.plugins[plugin_name]
|
40
|
-
@plugins[plugin_name] ||= plugin_klass.new(
|
40
|
+
@plugins[plugin_name] ||= plugin_klass.new(environment)
|
41
41
|
@plugins[plugin_name].configure(&block) if block
|
42
42
|
else
|
43
43
|
raise MissingPluginError, "no plugin registered with name #{plugin_name}, "\
|
@@ -118,7 +118,7 @@ module Kuby
|
|
118
118
|
|
119
119
|
@namespace ||= KubeDSL.namespace do
|
120
120
|
metadata do
|
121
|
-
name "#{spec.selector_app}-#{spec.
|
121
|
+
name "#{spec.selector_app}-#{spec.environment.name}"
|
122
122
|
end
|
123
123
|
end
|
124
124
|
|
@@ -156,11 +156,11 @@ module Kuby
|
|
156
156
|
end
|
157
157
|
|
158
158
|
def selector_app
|
159
|
-
@selector_app ||=
|
159
|
+
@selector_app ||= environment.app_name.downcase
|
160
160
|
end
|
161
161
|
|
162
162
|
def docker
|
163
|
-
|
163
|
+
environment.docker
|
164
164
|
end
|
165
165
|
end
|
166
166
|
end
|
data/lib/kuby/plugin.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
module Kuby
|
2
|
+
class Plugin
|
3
|
+
attr_reader :environment
|
4
|
+
|
5
|
+
def initialize(environment)
|
6
|
+
@environment = environment
|
7
|
+
after_initialize
|
8
|
+
end
|
9
|
+
|
10
|
+
def configure(&block)
|
11
|
+
# do nothing by default
|
12
|
+
end
|
13
|
+
|
14
|
+
def setup
|
15
|
+
# do nothing by default
|
16
|
+
end
|
17
|
+
|
18
|
+
# additional kubernetes resources that should be deployed
|
19
|
+
def resources
|
20
|
+
[]
|
21
|
+
end
|
22
|
+
|
23
|
+
# additional dockerfiles that should be built and pushed
|
24
|
+
def dockerfiles
|
25
|
+
[]
|
26
|
+
end
|
27
|
+
|
28
|
+
# called after all plugins have been configured
|
29
|
+
def after_configuration
|
30
|
+
# do nothing by default
|
31
|
+
end
|
32
|
+
|
33
|
+
# called before any plugins have been setup
|
34
|
+
def before_setup
|
35
|
+
# do nothing by default
|
36
|
+
end
|
37
|
+
|
38
|
+
# called after all plugins have been setup
|
39
|
+
def after_setup
|
40
|
+
# do nothing by default
|
41
|
+
end
|
42
|
+
|
43
|
+
# called before deploying any resources
|
44
|
+
def before_deploy(manifest)
|
45
|
+
# do nothing by default
|
46
|
+
end
|
47
|
+
|
48
|
+
# called after deploying all resources
|
49
|
+
def after_deploy(manifest)
|
50
|
+
# do nothing by default
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def after_initialize
|
56
|
+
# override this in derived classes
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|