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 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