kumonos 0.16.0 → 0.17.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 +4 -4
- data/example/book.jsonnet +27 -0
- data/example/circuit_breaker.libsonnet +5 -0
- data/example/routes.libsonnet +11 -0
- data/exe/kumonos +19 -6
- data/kumonos.gemspec +1 -0
- data/lib/kumonos/version.rb +1 -1
- metadata +20 -4
- data/example/book.yml +0 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 529353de6d713d922bfa8a74af3e04166ecbb949755c945014c51fd5bcd0ed24
|
4
|
+
data.tar.gz: c73615662f4f8f87dcf82c0505d2581ddccf2a9b27c318b84dcd2590ba070cea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c19e7a8a6d07d450f7b930f7bddf2eb5961d09e177ac42817bc8cf540159354f12af12786f304a0a04ac5821ea6ea61cc973dedea3f7030f91abad9ce8f2d3c
|
7
|
+
data.tar.gz: 727084fb53fb46d101e090903bf26ef52f098fb2aad16b90db0cc3405a2bbc77fbf34de7d89ecf8cf477e1a936d7876d4e23a35d07c87c41fef06b6cb0f1b09c
|
@@ -0,0 +1,27 @@
|
|
1
|
+
local circuit_breaker = import 'circuit_breaker.libsonnet';
|
2
|
+
local routes = import 'routes.libsonnet';
|
3
|
+
|
4
|
+
{
|
5
|
+
version: 1,
|
6
|
+
dependencies: [
|
7
|
+
{
|
8
|
+
name: "user",
|
9
|
+
cluster_name: "user-development",
|
10
|
+
lb: "user-app:8080",
|
11
|
+
host_header: "user-service",
|
12
|
+
tls: false,
|
13
|
+
connect_timeout_ms: 250,
|
14
|
+
circuit_breaker: circuit_breaker,
|
15
|
+
routes: [routes.root],
|
16
|
+
},
|
17
|
+
{
|
18
|
+
name: "ab-testing",
|
19
|
+
cluster_name: "ab-testing-development",
|
20
|
+
sds: true,
|
21
|
+
tls: false,
|
22
|
+
connect_timeout_ms: 250,
|
23
|
+
circuit_breaker: circuit_breaker,
|
24
|
+
routes: [routes.root],
|
25
|
+
},
|
26
|
+
],
|
27
|
+
}
|
data/exe/kumonos
CHANGED
@@ -5,6 +5,9 @@ $LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
|
|
5
5
|
require 'kumonos'
|
6
6
|
require 'thor'
|
7
7
|
|
8
|
+
require 'json'
|
9
|
+
require 'jsonnet'
|
10
|
+
|
8
11
|
# KumonosCli
|
9
12
|
class KumonosCli < Thor
|
10
13
|
def self.exit_on_failure?
|
@@ -17,7 +20,7 @@ class KumonosCli < Thor
|
|
17
20
|
method_option :'service-node', desc: 'Service node', required: true, type: :string
|
18
21
|
def envoy(path)
|
19
22
|
validate_path!(path)
|
20
|
-
definition =
|
23
|
+
definition = load_definition(path)
|
21
24
|
validate_envoy_definition!(definition, path)
|
22
25
|
|
23
26
|
config = Kumonos::Envoy.generate(
|
@@ -35,7 +38,7 @@ class KumonosCli < Thor
|
|
35
38
|
validate_path!(filepath)
|
36
39
|
validate_path!(output_dir)
|
37
40
|
|
38
|
-
definition =
|
41
|
+
definition = load_definition(filepath)
|
39
42
|
validate_service_definition!(definition, filepath)
|
40
43
|
json = JSON.dump(Kumonos::Clusters.generate(definition))
|
41
44
|
|
@@ -50,7 +53,7 @@ class KumonosCli < Thor
|
|
50
53
|
validate_path!(filepath)
|
51
54
|
validate_path!(output_dir)
|
52
55
|
|
53
|
-
definition =
|
56
|
+
definition = load_definition(filepath)
|
54
57
|
validate_service_definition!(definition, filepath)
|
55
58
|
json = JSON.dump(Kumonos::Routes.generate(definition))
|
56
59
|
|
@@ -60,15 +63,15 @@ class KumonosCli < Thor
|
|
60
63
|
|
61
64
|
desc 'init NAME', 'Generate a service definition'
|
62
65
|
def init(name)
|
63
|
-
definition =
|
66
|
+
definition = load_definition(File.expand_path('../example/book.jsonnet', __dir__))
|
64
67
|
definition['dependencies'] = definition.fetch('dependencies')[0..0]
|
65
68
|
dep = definition['dependencies'][0]
|
66
69
|
dep['name'] = 'target-service-name'
|
67
70
|
dep['cluster_name'] = 'target-service-name-staging'
|
68
71
|
dep['lb'] = 'hostname-for-load-balancer:port'
|
69
72
|
dep.delete('sds')
|
70
|
-
path = "#{name}.
|
71
|
-
File.
|
73
|
+
path = "#{name}.jsonnet"
|
74
|
+
File.write(path, JSON.pretty_generate(definition))
|
72
75
|
puts path
|
73
76
|
end
|
74
77
|
|
@@ -99,6 +102,16 @@ class KumonosCli < Thor
|
|
99
102
|
warn("The schema file is #{schema_path}")
|
100
103
|
exit 1
|
101
104
|
end
|
105
|
+
|
106
|
+
def load_definition(path)
|
107
|
+
if path.end_with?('.jsonnet')
|
108
|
+
Jsonnet.load(path)
|
109
|
+
elsif path.end_with?('.yml', '.yaml')
|
110
|
+
YAML.load_file(path)
|
111
|
+
else
|
112
|
+
raise "Unknown extension given, expected '.jsonnet', '.yml' or 'yaml': #{path}"
|
113
|
+
end
|
114
|
+
end
|
102
115
|
end
|
103
116
|
|
104
117
|
KumonosCli.start(ARGV)
|
data/kumonos.gemspec
CHANGED
data/lib/kumonos/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kumonos
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.17.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Taiki Ono
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-04-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json-schema
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: jsonnet
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: thor
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -171,9 +185,11 @@ files:
|
|
171
185
|
- bin/console
|
172
186
|
- bin/setup
|
173
187
|
- bump
|
174
|
-
- example/book.
|
188
|
+
- example/book.jsonnet
|
189
|
+
- example/circuit_breaker.libsonnet
|
175
190
|
- example/envoy_config.yml
|
176
191
|
- example/example-with-tls.yml
|
192
|
+
- example/routes.libsonnet
|
177
193
|
- exe/kumonos
|
178
194
|
- kumonos.gemspec
|
179
195
|
- lib/kumonos.rb
|
@@ -205,7 +221,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
205
221
|
version: '0'
|
206
222
|
requirements: []
|
207
223
|
rubyforge_project:
|
208
|
-
rubygems_version: 2.7.
|
224
|
+
rubygems_version: 2.7.6
|
209
225
|
signing_key:
|
210
226
|
specification_version: 4
|
211
227
|
summary: A "control plane" for Microservices "service mesh".
|
data/example/book.yml
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
# A example definition for book service.
|
2
|
-
# The book service uses user service and ab-testing service.
|
3
|
-
version: 1
|
4
|
-
dependencies:
|
5
|
-
- name: 'user'
|
6
|
-
cluster_name: 'user-development'
|
7
|
-
lb: 'user-app:8080'
|
8
|
-
host_header: 'user-service'
|
9
|
-
tls: false
|
10
|
-
connect_timeout_ms: 250
|
11
|
-
circuit_breaker:
|
12
|
-
max_connections: 64
|
13
|
-
max_pending_requests: 128
|
14
|
-
max_retries: 3
|
15
|
-
routes:
|
16
|
-
- prefix: '/'
|
17
|
-
timeout_ms: 3000
|
18
|
-
retry_policy:
|
19
|
-
retry_on: '5xx,connect-failure,refused-stream'
|
20
|
-
num_retries: 3
|
21
|
-
per_try_timeout_ms: 1000
|
22
|
-
- name: 'ab-testing'
|
23
|
-
cluster_name: 'ab-testing-development'
|
24
|
-
sds: true
|
25
|
-
tls: false
|
26
|
-
connect_timeout_ms: 250
|
27
|
-
circuit_breaker:
|
28
|
-
max_connections: 64
|
29
|
-
max_pending_requests: 128
|
30
|
-
max_retries: 3
|
31
|
-
routes:
|
32
|
-
- prefix: '/'
|
33
|
-
timeout_ms: 3000
|
34
|
-
retry_policy:
|
35
|
-
retry_on: '5xx,connect-failure,refused-stream'
|
36
|
-
num_retries: 3
|
37
|
-
per_try_timeout_ms: 1000
|