kumonos 0.21.0 → 0.22.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/{bump → bin/bump} +0 -0
- data/example/example-fault-injection.yml +29 -0
- data/exe/kumonos +2 -0
- data/lib/kumonos/envoy.rb +14 -5
- data/lib/kumonos/version.rb +1 -1
- data/lib/schemas/envoy.json +18 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8866f7cfcbde01b26ef5c101d1ddfb4fd99abbbc09268456e024b84a317acbf
|
4
|
+
data.tar.gz: ec4bdea0da8f1218218f016c00de3a7ed07c4badb10afc4218e3f976979f2392
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 717264d12963101864f6cecdd9a77a62567ea1ed31acc4236cb77ef94a311b056a02d912833dc2233d932bc50fbdde44bf9a3ee307c6d32be291ef6559e601a5
|
7
|
+
data.tar.gz: 0e7b504106524768b2114afab799730b90cb0d901b5c7f067f670e33fe82bc0047e981db1838dc464ec36055c23328732ce990007b8a9ffe17e546717618388b
|
data/{bump → bin/bump}
RENAMED
File without changes
|
@@ -0,0 +1,29 @@
|
|
1
|
+
version: 1
|
2
|
+
listener:
|
3
|
+
address: tcp://0.0.0.0:9211
|
4
|
+
access_log_path: /dev/stdout
|
5
|
+
additional_http_filters:
|
6
|
+
- name: envoy.fault
|
7
|
+
config:
|
8
|
+
abort:
|
9
|
+
percent: 0
|
10
|
+
http_status: 503
|
11
|
+
admin:
|
12
|
+
address: tcp://0.0.0.0:9901
|
13
|
+
access_log_path: /dev/stdout
|
14
|
+
discovery_service:
|
15
|
+
lb: nginx:80
|
16
|
+
tls: false
|
17
|
+
refresh_delay_ms: 10000
|
18
|
+
connect_timeout_ms: 100
|
19
|
+
sds:
|
20
|
+
lb: sds:8080
|
21
|
+
tls: false
|
22
|
+
refresh_delay_ms: 1000
|
23
|
+
connect_timeout_ms: 1500
|
24
|
+
statsd:
|
25
|
+
address: statsd-exporter:9125
|
26
|
+
runtime:
|
27
|
+
symlink_root: /srv/runtime/current
|
28
|
+
subdirectory: envoy
|
29
|
+
override_subdirectory: envoy_override
|
data/exe/kumonos
CHANGED
@@ -98,12 +98,14 @@ class KumonosCli < Thor
|
|
98
98
|
def validate_envoy_definition!(h, path)
|
99
99
|
result = Kumonos::Schemas.validate_envoy_definition(h)
|
100
100
|
return if result.empty?
|
101
|
+
|
101
102
|
warn_and_exit(result, path, Kumonos::Schemas::ENVOY_SCHEMA_PATH)
|
102
103
|
end
|
103
104
|
|
104
105
|
def validate_service_definition!(h, path)
|
105
106
|
result = Kumonos::Schemas.validate_service_definition(h)
|
106
107
|
return if result.empty?
|
108
|
+
|
107
109
|
warn_and_exit(result, path, Kumonos::Schemas::SERVIVE_DEFINITION_PATH)
|
108
110
|
end
|
109
111
|
|
data/lib/kumonos/envoy.rb
CHANGED
@@ -3,13 +3,15 @@
|
|
3
3
|
module Kumonos
|
4
4
|
# Generate envoy configuration.
|
5
5
|
module Envoy
|
6
|
+
DEFAULT_HTTP_FILTERS = [{ name: 'envoy.router' }].freeze
|
7
|
+
|
6
8
|
class << self
|
7
9
|
def generate(definition, cluster:, node:)
|
8
10
|
EnvoyConfig.build(definition, cluster: cluster, node: node).to_h
|
9
11
|
end
|
10
12
|
end
|
11
13
|
|
12
|
-
EnvoyConfig = Struct.new(:version, :discovery_service, :statsd, :listener, :admin, :cluster, :node, :sds) do
|
14
|
+
EnvoyConfig = Struct.new(:version, :discovery_service, :statsd, :listener, :admin, :cluster, :node, :sds, :runtime) do
|
13
15
|
class << self
|
14
16
|
def build(h, cluster:, node:)
|
15
17
|
discovery_service = DiscoverService.build(h.fetch('discovery_service'))
|
@@ -22,7 +24,8 @@ module Kumonos
|
|
22
24
|
Admin.build(h.fetch('admin')),
|
23
25
|
cluster,
|
24
26
|
node,
|
25
|
-
sds
|
27
|
+
sds,
|
28
|
+
h['runtime']
|
26
29
|
)
|
27
30
|
end
|
28
31
|
|
@@ -49,7 +52,9 @@ module Kumonos
|
|
49
52
|
h.delete(:listener)
|
50
53
|
h.delete(:cluster)
|
51
54
|
h.delete(:node)
|
55
|
+
h.delete(:runtime)
|
52
56
|
h[:admin] = admin.to_h
|
57
|
+
h[:runtime] = runtime.to_h if runtime
|
53
58
|
h[:static_resources] = {
|
54
59
|
listeners: [listener.to_h],
|
55
60
|
clusters: [discovery_service.cluster.to_h, sds.cluster.to_h]
|
@@ -104,11 +109,11 @@ module Kumonos
|
|
104
109
|
end
|
105
110
|
end
|
106
111
|
|
107
|
-
Listener = Struct.new(:address, :access_log_path, :discovery_service) do
|
112
|
+
Listener = Struct.new(:address, :access_log_path, :discovery_service, :additional_http_filters) do
|
108
113
|
class << self
|
109
114
|
def build(h, discovery_service)
|
110
115
|
address = AddressParser.call(h.fetch('address'))
|
111
|
-
new(address, h.fetch('access_log_path'), discovery_service)
|
116
|
+
new(address, h.fetch('access_log_path'), discovery_service, h['additional_http_filters'])
|
112
117
|
end
|
113
118
|
end
|
114
119
|
|
@@ -116,6 +121,10 @@ module Kumonos
|
|
116
121
|
h = super
|
117
122
|
h.delete(:discovery_service)
|
118
123
|
h.delete(:access_log_path)
|
124
|
+
h.delete(:additional_http_filters)
|
125
|
+
|
126
|
+
http_filters = (additional_http_filters || []) + DEFAULT_HTTP_FILTERS
|
127
|
+
|
119
128
|
h[:name] = 'egress'
|
120
129
|
h[:filter_chains] = [
|
121
130
|
{
|
@@ -144,7 +153,7 @@ module Kumonos
|
|
144
153
|
},
|
145
154
|
route_config_name: DEFAULT_ROUTE_NAME
|
146
155
|
},
|
147
|
-
http_filters:
|
156
|
+
http_filters: http_filters
|
148
157
|
}
|
149
158
|
}
|
150
159
|
]
|
data/lib/kumonos/version.rb
CHANGED
data/lib/schemas/envoy.json
CHANGED
@@ -32,6 +32,19 @@
|
|
32
32
|
"access_log_path": {
|
33
33
|
"type": "string",
|
34
34
|
"id": "/properties/listener/properties/access_log_path"
|
35
|
+
},
|
36
|
+
"additional_http_filters": {
|
37
|
+
"type": "array",
|
38
|
+
"id": "/properties/listener/properties/additional_http_filters",
|
39
|
+
"additionalProperties": true,
|
40
|
+
"items": {
|
41
|
+
"type": "object",
|
42
|
+
"additionalProperties": true,
|
43
|
+
"required": [
|
44
|
+
"name",
|
45
|
+
"config"
|
46
|
+
]
|
47
|
+
}
|
35
48
|
}
|
36
49
|
}
|
37
50
|
},
|
@@ -125,6 +138,11 @@
|
|
125
138
|
"id": "/properties/statsd/properties/address"
|
126
139
|
}
|
127
140
|
}
|
141
|
+
},
|
142
|
+
"runtime": {
|
143
|
+
"type": "object",
|
144
|
+
"id": "/properties/runtime",
|
145
|
+
"additionalProperties": true
|
128
146
|
}
|
129
147
|
}
|
130
148
|
}
|
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.22.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-09-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json-schema
|
@@ -182,12 +182,13 @@ files:
|
|
182
182
|
- LICENSE.txt
|
183
183
|
- README.md
|
184
184
|
- Rakefile
|
185
|
+
- bin/bump
|
185
186
|
- bin/console
|
186
187
|
- bin/setup
|
187
|
-
- bump
|
188
188
|
- example/book.jsonnet
|
189
189
|
- example/circuit_breaker.libsonnet
|
190
190
|
- example/envoy_config.yml
|
191
|
+
- example/example-fault-injection.yml
|
191
192
|
- example/example-with-tls.yml
|
192
193
|
- example/routes.libsonnet
|
193
194
|
- exe/kumonos
|