kumonos 0.13.0 → 0.14.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: 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