Slide 1

Slide 1 text

Dynamic Routing by Envoy + Istio Envoy Meetup Tokyo #1 Yuki Ito

Slide 2

Slide 2 text

Merpay Architect Team Backend Engineer Yuki Ito

Slide 3

Slide 3 text

Goal Multi-line QA microservice A PR 1 PR 2 PR 3

Slide 4

Slide 4 text

Architecture API Gateway VirtualService microservice A Service Pod PR 3 Service Pod PR 2 Service Pod PR 1 JWT

Slide 5

Slide 5 text

Architecture API Gateway VirtualService microservice A Service Pod PR 3 Service Pod PR 2 Service Pod PR 1 JWT microservice-A: PR-1

Slide 6

Slide 6 text

Custom HTTP Filter { "microservice-A": "PR-1", "microservice-B": "PR-2" } microservice-A: PR-1 microservice-B: PR-2 Request from APP Request to Upstream JWT Payload HTTP Header ɾɾɾ ɾɾɾ

Slide 7

Slide 7 text

Custom HTTP Filter EnvoyFilter spec: workloadLabels: mercari.com/service-router: enabled filters: - listenerMatch: listenerType: SIDECAR_OUTBOUND listenerProtocol: HTTP filterName: envoy.lua filterType: HTTP filterConfig: inlineCode: | ...

Slide 8

Slide 8 text

Custom HTTP Filter

Slide 9

Slide 9 text

Routing via VirtualService VirtualService http: - match: - headers: microservice-A: exact: "PR-1" route: - destination: host: pr-1.microservice-a.svc.cluster.local ...

Slide 10

Slide 10 text

Architecture API Gateway VirtualService microservice A Service Pod PR 3 Service Pod PR 2 Service Pod PR 1 JWT