kumonos 0.21.0 → 0.22.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 163e9dfcdba83165a65628e04ecad8e020f493b0deb6d26b14dc6c85d1e2a6e4
4
- data.tar.gz: 64b49206fe0a1dd889c2da1cc04765bd2876cf0290ba30085b684e71273ae607
3
+ metadata.gz: e8866f7cfcbde01b26ef5c101d1ddfb4fd99abbbc09268456e024b84a317acbf
4
+ data.tar.gz: ec4bdea0da8f1218218f016c00de3a7ed07c4badb10afc4218e3f976979f2392
5
5
  SHA512:
6
- metadata.gz: 3837861679919253bfab280b0684c1b622a6c1d3defa0b3a8b322bc0e4e6019664f8516fd36dba903155493e26a964c41a33c939758411783f2298340cf24257
7
- data.tar.gz: 3851392c16f44a9890001b7d309d6806c9ef504a6dee210cddea737ec79b875d41a78a9db263101faf659ccb30c1e9bec9b3d9504c429e24ab64c84ab912b6d9
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: [{ name: 'envoy.router' }]
156
+ http_filters: http_filters
148
157
  }
149
158
  }
150
159
  ]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Kumonos
4
- VERSION = '0.21.0'
4
+ VERSION = '0.22.0'
5
5
  end
@@ -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.21.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-08-02 00:00:00.000000000 Z
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