-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathzilla.yaml
415 lines (413 loc) · 9.4 KB
/
zilla.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
# Generated with: yq '.' *-zilla.yaml > zilla.yaml
---
name: grpc-quickstart
#region route_guide_proto
catalogs:
host_filesystem:
type: filesystem
options:
subjects:
route_guide:
path: proto/route_guide.proto
#endregion route_guide_proto
bindings:
# Proxy service entrypoint
north_tcp_server:
type: tcp
kind: server
options:
host: 0.0.0.0
port:
- 7151
routes:
- when:
- port: 7151
exit: north_grpc_http_server
telemetry:
metrics:
- stream.*
north_grpc_http_server:
type: http
kind: server
options:
versions:
- h2
access-control:
policy: cross-origin
exit: north_grpc_server
telemetry:
metrics:
- stream.*
- http.*
# gRPC service definition to Kafka topics
#region route_guide_service_definition
north_grpc_server:
type: grpc
kind: server
catalog:
host_filesystem:
- subject: route_guide
exit: north_grpc_kafka_mapping
#endregion route_guide_service_definition
telemetry:
metrics:
- stream.*
- grpc.*
#region route_guide_service_mapping
north_grpc_kafka_mapping:
type: grpc-kafka
kind: proxy
routes:
- when:
- method: routeguide.RouteGuide/*
exit: north_kafka_cache_client
with:
capability: produce
topic: grpc-request
acks: leader_only
reply-to: grpc-response
#endregion route_guide_service_mapping
# Kafka sync layer
north_kafka_cache_client:
type: kafka
kind: cache_client
exit: south_kafka_cache_server
south_kafka_cache_server:
type: kafka
kind: cache_server
options:
bootstrap:
- grpc-request
- grpc-response
exit: south_kafka_client
# Connect to local Kafka
south_kafka_client:
type: kafka
kind: client
options:
servers:
- ${{env.KAFKA_BOOTSTRAP_SERVER}}
exit: south_tcp_client
south_tcp_client:
type: tcp
kind: client
# Kafka to external gRPC server
#region route_guide_interface
west_kafka_grpc_remote_server:
type: kafka-grpc
kind: remote_server
entry: north_kafka_cache_client
options:
acks: leader_only
routes:
- when:
- topic: grpc-request
reply-to: grpc-response
method: routeguide.RouteGuide/*
with:
scheme: http
authority: ${{env.ROUTE_GUIDE_SERVER_HOST}}:${{env.ROUTE_GUIDE_SERVER_PORT}}
#endregion route_guide_interface
exit: west_route_guide_grpc_client
# gRPC RoutGuide server config
west_route_guide_grpc_client:
type: grpc
kind: client
exit: west_route_guide_http_client
west_route_guide_http_client:
type: http
kind: client
options:
versions:
- h2
exit: west_route_guide_tcp_client
#region route_guide_server
west_route_guide_tcp_client:
type: tcp
kind: client
options:
host: ${{env.ROUTE_GUIDE_SERVER_HOST}}
port: ${{env.ROUTE_GUIDE_SERVER_PORT}}
#endregion route_guide_server
telemetry:
# Desired metrics to track
metrics:
- http.active.requests
- http.request.size
- http.response.size
- stream.opens.sent
- stream.opens.received
- stream.closes.sent
- stream.closes.received
- stream.errors.sent
- stream.errors.received
- stream.active.sent
- stream.active.received
- grpc.active.requests
- grpc.requests.per.rpc
- grpc.responses.per.rpc
exporters:
# Enable Standard Out logs
stdout_logs_exporter:
type: stdout
---
name: http-quickstart
bindings:
# Proxy service entrypoint
north_tcp_server:
type: tcp
kind: server
options:
host: 0.0.0.0
port:
- 7114
routes:
- when:
- port: 7114
exit: north_http_server
telemetry:
metrics:
- stream.*
north_http_server:
type: http
kind: server
options:
versions:
- h2
- http/1.1
access-control:
policy: cross-origin
routes:
- when:
- headers:
:path: /api/stream
exit: north_sse_server
- when:
- headers:
:path: /api/stream/*
exit: north_sse_server
- when:
- headers:
:path: /api/*
exit: north_rest_api_http_kafka_mapping
telemetry:
metrics:
- stream.*
- http.*
# REST proxy endpoints to Kafka a topic
north_rest_api_http_kafka_mapping:
type: http-kafka
kind: proxy
routes:
#region rest_create
- when:
- method: POST
path: /api/items
exit: north_kafka_cache_client
with:
capability: produce
topic: http-messages
key: ${idempotencyKey}
#endregion rest_create
#region rest_update
- when:
- method: PUT
path: /api/items/{id}
exit: north_kafka_cache_client
with:
capability: produce
topic: http-messages
key: ${params.id}
#endregion rest_update
#region rest_delete
- when:
- method: DELETE
path: /api/items/{id}
exit: north_kafka_cache_client
with:
capability: produce
topic: http-messages
key: ${params.id}
#endregion rest_delete
#region rest_retrieve_all
- when:
- method: GET
path: /api/items
exit: north_kafka_cache_client
with:
capability: fetch
topic: http-messages
merge:
content-type: application/json
#endregion rest_retrieve_all
#region rest_retrieve_id
- when:
- method: GET
path: /api/items/{id}
exit: north_kafka_cache_client
with:
capability: fetch
topic: http-messages
filters:
- key: ${params.id}
#endregion rest_retrieve_id
# SSE Server to Kafka topics
north_sse_server:
type: sse
kind: server
exit: north_sse_kafka_mapping
north_sse_kafka_mapping:
type: sse-kafka
kind: proxy
routes:
#region sse_stream_all
- when:
- path: /api/stream
exit: north_kafka_cache_client
with:
topic: http-messages
#endregion sse_stream_all
#region sse_stream_id
- when:
- path: /api/stream/{id}
exit: north_kafka_cache_client
with:
topic: http-messages
filters:
- key: ${params.id}
#endregion sse_stream_id
# Kafka sync layer
north_kafka_cache_client:
type: kafka
kind: cache_client
exit: south_kafka_cache_server
south_kafka_cache_server:
type: kafka
kind: cache_server
options:
bootstrap:
- http-messages
exit: south_kafka_client
# Connect to local Kafka
south_kafka_client:
type: kafka
kind: client
options:
servers:
- ${{env.KAFKA_BOOTSTRAP_SERVER}}
exit: south_tcp_client
south_tcp_client:
type: tcp
kind: client
telemetry:
# Desired metrics to track
metrics:
- http.active.requests
- http.request.size
- http.response.size
- stream.opens.sent
- stream.opens.received
- stream.closes.sent
- stream.closes.received
- stream.errors.sent
- stream.errors.received
- stream.active.sent
- stream.active.received
exporters:
# Enable Standard Out logs
stdout_logs_exporter:
type: stdout
---
name: mqtt-quickstart
bindings:
# Proxy service entrypoint
north_tcp_server:
type: tcp
kind: server
options:
host: 0.0.0.0
port:
- 7183
routes:
- when:
- port: 7183
exit: north_mqtt_server
telemetry:
metrics:
- stream.*
# MQTT Server to Kafka topics
#region mqtt_broker_mapping
north_mqtt_server:
type: mqtt
kind: server
exit: north_mqtt_kafka_mapping
north_mqtt_kafka_mapping:
type: mqtt-kafka
kind: proxy
options:
topics:
sessions: mqtt-sessions
messages: mqtt-messages
retained: mqtt-retained
#endregion mqtt_broker_mapping
exit: north_kafka_cache_client
telemetry:
metrics:
- stream.*
# Kafka sync layer
north_kafka_cache_client:
type: kafka
kind: cache_client
exit: south_kafka_cache_server
telemetry:
metrics:
- stream.*
south_kafka_cache_server:
type: kafka
kind: cache_server
options:
bootstrap:
- mqtt-messages
- mqtt-retained
exit: south_kafka_client
telemetry:
metrics:
- stream.*
# Connect to local Kafka
south_kafka_client:
type: kafka
kind: client
options:
servers:
- ${{env.KAFKA_BOOTSTRAP_SERVER}}
exit: south_tcp_client
south_tcp_client:
type: tcp
kind: client
telemetry:
# Desired metrics to track
metrics:
- stream.opens.sent
- stream.opens.received
- stream.closes.sent
- stream.closes.received
- stream.errors.sent
- stream.errors.received
- stream.active.sent
- stream.active.received
exporters:
# Enable Standard Out logs
stdout_logs_exporter:
type: stdout
---
name: telemetry-exporters
telemetry:
exporters:
# Prometheus endpoint definition
prometheus_metric_exporter:
type: prometheus
options:
endpoints:
- scheme: http
path: /metrics
port: 7190