kumonos 0.13.0 → 0.14.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: 2ae6c918ccb97a3cd8816f306186687047f0056b26453e5cfa252b265db6e880
4
- data.tar.gz: ea06b00a734ff9cc2254963219371a241ffd5cfb5ddf4a3264d40d05330d9c68
3
+ metadata.gz: 9089dbc458f5d49fa8de5bafa4172405f30e1d8e90016a28ff8da33e93cb79dc
4
+ data.tar.gz: c9291c46d72a253a4437e202de8868e159960fde7858591584058966fd9c9696
5
5
  SHA512:
6
- metadata.gz: 863c660c821ced47c7074b9b76181972a0d98aab54015306d0fa2a55660c80bcf29f9933dc51fbb371aab192c14970dffe60265041a43b1a895e40f5a39653f6
7
- data.tar.gz: a682fdf456af8ce0fb304a106e187f6ab5e597abe91466bf1e855b6db23f9227c337b18ea550a2e047d21c7eaf45eb7ea6c49b7ca3c47c92bdb5d0c0e471e430
6
+ metadata.gz: d63c045610a4e4c17b9b02a697edca55feeab97a14ed41f4a68e5d44355f9124a8649ae81347845ce86114135f0e4af9ce937188c73dd1ae2e4784e9693089eb
7
+ data.tar.gz: bb62d41d6f18a8f83fbcda3f506f83ce43eaa390b4af7a4e3450312e51a06136ceea45c52ac28abafe0741cfe6f16bed5acf7ca101d6a6ed17a240f3db51751a
data/example/book.yml CHANGED
@@ -4,7 +4,7 @@ version: 1
4
4
  dependencies:
5
5
  - name: 'user'
6
6
  cluster_name: 'user-development'
7
- lb: 'user-app:8080'
7
+ sds: true
8
8
  tls: false
9
9
  connect_timeout_ms: 250
10
10
  circuit_breaker:
@@ -8,7 +8,12 @@ admin:
8
8
  discovery_service:
9
9
  lb: nginx:80
10
10
  tls: false
11
- refresh_delay_ms: 30000
11
+ refresh_delay_ms: 10000
12
+ connect_timeout_ms: 1000
13
+ sds:
14
+ lb: sds:8080
15
+ tls: false
16
+ refresh_delay_ms: 1000
12
17
  connect_timeout_ms: 1000
13
18
  statsd:
14
19
  address: statsd-exporter:9125
data/exe/kumonos CHANGED
@@ -64,6 +64,7 @@ class KumonosCli < Thor
64
64
  definition['dependencies'] = definition.fetch('dependencies')[0..0]
65
65
  dep = definition['dependencies'][0]
66
66
  dep['name'] = 'target-service-name'
67
+ dep['cluster_name'] = 'target-service-name-staging'
67
68
  dep['lb'] = 'hostname-for-load-balancer:port'
68
69
  path = "#{name}.yml"
69
70
  File.open(path, 'w') { |f| YAML.dump(definition, f) }
@@ -9,15 +9,19 @@ module Kumonos
9
9
  end
10
10
  end
11
11
 
12
- Cluster = Struct.new(:name, :connect_timeout_ms, :lb, :tls, :circuit_breaker) do
12
+ Cluster = Struct.new(:name, :connect_timeout_ms, :lb, :tls, :circuit_breaker, :use_sds) do
13
13
  class << self
14
14
  def build(h)
15
+ use_sds = h.fetch('sds', false)
16
+ lb = use_sds ? nil : h.fetch('lb')
17
+
15
18
  new(
16
19
  h.fetch('cluster_name'),
17
20
  h.fetch('connect_timeout_ms'),
18
- h.fetch('lb'),
21
+ lb,
19
22
  h.fetch('tls'),
20
- CircuitBreaker.build(h.fetch('circuit_breaker'))
23
+ CircuitBreaker.build(h.fetch('circuit_breaker')),
24
+ use_sds
21
25
  )
22
26
  end
23
27
  end
@@ -26,10 +30,16 @@ module Kumonos
26
30
  h = super
27
31
 
28
32
  h.delete(:lb)
29
- h[:type] = 'strict_dns'
30
- h[:lb_type] = 'round_robin'
31
- h[:hosts] = [{ url: "tcp://#{lb}" }]
33
+ h.delete(:use_sds)
34
+ if use_sds
35
+ h[:type] = 'sds'
36
+ h[:service_name] = name
37
+ else
38
+ h[:type] = 'strict_dns'
39
+ h[:hosts] = [{ url: "tcp://#{lb}" }]
40
+ end
32
41
 
42
+ h[:lb_type] = 'round_robin'
33
43
  h.delete(:tls)
34
44
  h[:ssl_context] = {} if tls
35
45
 
data/lib/kumonos/envoy.rb CHANGED
@@ -7,10 +7,11 @@ module Kumonos
7
7
  end
8
8
  end
9
9
 
10
- EnvoyConfig = Struct.new(:version, :discovery_service, :statsd, :listener, :admin, :cluster, :node) do
10
+ EnvoyConfig = Struct.new(:version, :discovery_service, :statsd, :listener, :admin, :cluster, :node, :sds) do
11
11
  class << self
12
12
  def build(h, cluster:, node:)
13
13
  discovery_service = DiscoverService.build(h.fetch('discovery_service'))
14
+ sds = DiscoverService.build(h.fetch('sds'))
14
15
  new(
15
16
  h.fetch('version'),
16
17
  discovery_service,
@@ -18,7 +19,8 @@ module Kumonos
18
19
  Listener.build(h.fetch('listener'), discovery_service),
19
20
  Admin.build(h.fetch('admin')),
20
21
  cluster,
21
- node
22
+ node,
23
+ sds
22
24
  )
23
25
  end
24
26
 
@@ -40,6 +42,7 @@ module Kumonos
40
42
  h = super
41
43
  h.delete(:version)
42
44
  h.delete(:discovery_service)
45
+ h.delete(:sds)
43
46
  h.delete(:statsd)
44
47
  h.delete(:listener)
45
48
  h.delete(:cluster)
@@ -47,7 +50,7 @@ module Kumonos
47
50
  h[:admin] = admin.to_h
48
51
  h[:static_resources] = {
49
52
  listeners: [listener.to_h],
50
- clusters: [discovery_service.cluster.to_h]
53
+ clusters: [discovery_service.cluster.to_h, sds.cluster.to_h]
51
54
  }
52
55
  h[:dynamic_resources] = {
53
56
  cds_config: {
@@ -57,6 +60,16 @@ module Kumonos
57
60
  seconds: discovery_service.refresh_delay_ms / 1000.0
58
61
  }
59
62
  }
63
+ },
64
+ deprecated_v1: {
65
+ sds_config: {
66
+ api_config_source: {
67
+ cluster_names: [sds.cluster.name],
68
+ refresh_delay: {
69
+ seconds: sds.refresh_delay_ms / 1000.0
70
+ }
71
+ }
72
+ }
60
73
  }
61
74
  }
62
75
 
@@ -1,3 +1,3 @@
1
1
  module Kumonos
2
- VERSION = '0.13.0'.freeze
2
+ VERSION = '0.14.0'.freeze
3
3
  end
@@ -8,7 +8,8 @@
8
8
  "version",
9
9
  "listener",
10
10
  "admin",
11
- "discovery_service"
11
+ "discovery_service",
12
+ "sds"
12
13
  ],
13
14
  "properties": {
14
15
  "version": {
@@ -82,6 +83,35 @@
82
83
  }
83
84
  }
84
85
  },
86
+ "sds": {
87
+ "type": "object",
88
+ "id": "/properties/sds",
89
+ "additionalProperties": false,
90
+ "required": [
91
+ "lb",
92
+ "tls",
93
+ "refresh_delay_ms",
94
+ "connect_timeout_ms"
95
+ ],
96
+ "properties": {
97
+ "lb": {
98
+ "type": "string",
99
+ "id": "/properties/sds/properties/properties/lb"
100
+ },
101
+ "tls": {
102
+ "type": "boolean",
103
+ "id": "/properties/sds/properties/properties/tls"
104
+ },
105
+ "refresh_delay_ms": {
106
+ "type": "integer",
107
+ "id": "/properties/sds/properties/refresh_delay_ms"
108
+ },
109
+ "connect_timeout_ms": {
110
+ "type": "integer",
111
+ "id": "/properties/sds/properties/properties/connect_timeout_ms"
112
+ }
113
+ }
114
+ },
85
115
  "statsd": {
86
116
  "type": "object",
87
117
  "id": "/properties/statsd",
@@ -20,11 +20,10 @@
20
20
  "items": {
21
21
  "type": "object",
22
22
  "id": "/properties/dependencies/items",
23
- "additionalProperties": false,
23
+ "additionalProperties": true,
24
24
  "required": [
25
25
  "name",
26
26
  "cluster_name",
27
- "lb",
28
27
  "tls",
29
28
  "connect_timeout_ms",
30
29
  "circuit_breaker",
@@ -41,6 +40,11 @@
41
40
  "id": "/properties/dependencies/items/properties/name",
42
41
  "default": "dependency-service-name-development"
43
42
  },
43
+ "sds": {
44
+ "type": "boolean",
45
+ "id": "/properties/dependencies/items/properties/sds",
46
+ "default": false
47
+ },
44
48
  "lb": {
45
49
  "type": "string",
46
50
  "id": "/properties/dependencies/items/properties/lb",
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.13.0
4
+ version: 0.14.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-02-02 00:00:00.000000000 Z
11
+ date: 2018-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json-schema