![Page 1: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/1.jpg)
Spring Cloud GatewayThe Cloud-Native Gateway Developers Love
Spencer Gibb - @spencerbgibbRyan Baxter @ryanjbaxterStephane Maldini - @smaldini
![Page 2: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/2.jpg)
![Page 3: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/3.jpg)
Monoliths to Microservices
![Page 4: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/4.jpg)
![Page 5: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/5.jpg)
![Page 6: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/6.jpg)
Cloud Native
![Page 7: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/7.jpg)
Cloud Native
Independently Deployable
![Page 8: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/8.jpg)
Cloud Native
Service Registry Integration
![Page 9: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/9.jpg)
Cloud Native
Distributed Configuration
![Page 10: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/10.jpg)
Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 10
spring: cloud: gateway: - id: foo_route uri: lb://foo predicates: - Host=**.foo.org - Path=/headers - Method=GET - Header=X-Request-Id, \d+ - Query=foo, ba. - Query=baz - Cookie=chocolate, ch.p - After=1900-01-20T17:42:47.789-07:00[America/Denver] filters: - AddRequestHeader=X-Request-Foo, Bar - AddResponseHeader=X-Response-Foo, Bar - Hystrix=foo - SecureHeaders - RewritePath=/foo/(?<segment>.*), /$\{segment}
Route Configuration: YAML
![Page 11: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/11.jpg)
Cloud Native
Fault Tolerance
![Page 12: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/12.jpg)
Teams Love It
![Page 13: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/13.jpg)
Teams Love It
![Page 14: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/14.jpg)
Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 14
Project Reactor
![Page 15: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/15.jpg)
Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 15
Reactor Netty: Non-Blocking
![Page 16: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/16.jpg)
Teams Love It
![Page 17: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/17.jpg)
Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 17
Route Configuration: Java@Beanpublic RouteLocator customRouteLocator(RouteLocatorBuilder builder) { return builder.routes() .route("bypath", r -> r.path("/get").or().host("*.get.org") .uri("http://httpbin.org")) .route("host_segment", r -> r.host("{sub}.yourhost.org") .filters(f -> f.addRequestHeader("X-Foo", "Bar-{sub}")) .uri("http://httpbin.org")) .route("hystrix", r -> r.host("**.hystrix.org") .filters(f -> f.hystrix(config ->
config.setName("mycmd").setFallbackUri("forward:/myfallback"))) .uri("http://httpbin.org")) .route("rewrite", r -> r.host("**.rewrite.org") .filters(f -> f.rewritePath("/foo/(?<segment>.*)", "/${segment}")) .uri("http://httpbin.org")) .route("websockets", r -> r.path("/echo") .uri("ws://localhost:9000")) .build();}
![Page 18: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/18.jpg)
Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 18
Route Configuration: Kotlinval routeLocator = builder.routes { route(id = "test") { host("**.abc.org") and path("/image/png") filters { addResponseHeader("X-TestHeader", "foobar") } uri("http://httpbin.org:80") } route(id = "test2") { path("/image/webp") or path("/image/anotherone") filters { addResponseHeader("X-AnotherHeader", "baz") addResponseHeader("X-AnotherHeader-2", "baz-2") } uri("https://httpbin.org:443") }}
![Page 19: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/19.jpg)
Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 19
Inside the Gateway
![Page 20: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/20.jpg)
Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 20
Inside the GatewayPredicates
PathHostDate/TimeMethodHeadersQuery ParamsCookiesRead Body….
![Page 21: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/21.jpg)
Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 21
Inside the Gateway
Pre-Filters
HeadersPathRate LimitingCookiesHystrixModify Body…
![Page 22: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/22.jpg)
Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 22
Inside the Gateway
Global Filters
Netty RouterWeb SocketsLoad BalancerMetrics…
![Page 23: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/23.jpg)
Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
23
Inside the Gateway
Post Filters
Set statusHeadersCookies…
![Page 24: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/24.jpg)
Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 24
Custom Filterspublic class SetStatusGatewayFilterFactory
implements GatewayFilter { public GatewayFilter apply(Config config) { HttpStatusHolder statusHolder =
HttpStatusHolder.parse(config.status);
return chain.filter(exchange).then(Mono.fromRunnable(() -> {
setResponseStatus(exchange, statusHolder); })); }}
![Page 25: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/25.jpg)
Demo!
![Page 26: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/26.jpg)
Teams Love It
Management Console with:
Links to API Docs, Metrics & Tracing.
API Discoverability
![Page 27: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/27.jpg)
![Page 28: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/28.jpg)
Teams Love It
Releases, Not Tickets
![Page 29: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/29.jpg)
Teams Love It
Polyglot Clients and Services
![Page 30: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/30.jpg)
Security Loves It
![Page 31: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/31.jpg)
Security Loves It
Spring Security
![Page 32: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/32.jpg)
Security Loves It
Single Sign On (SSO)
![Page 33: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/33.jpg)
Security Loves It
Cross-Cutting Security
![Page 34: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/34.jpg)
Operators Love It
![Page 35: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/35.jpg)
Operators Love It
Deconstructing Monoliths
![Page 36: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/36.jpg)
Operators Love It
Exports Metrics To Existing Systems
![Page 37: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/37.jpg)
Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 37
Micrometer Support
![Page 38: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/38.jpg)
Operators Love It
Distributed Tracing Integration
![Page 39: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/39.jpg)
Operators Love It
Request Rate Limiting
![Page 40: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/40.jpg)
Operators Love It
Customized Actuator Endpoints
![Page 41: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/41.jpg)
Operators Love It
![Page 42: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/42.jpg)
Spring Cloud GatewayThe Cloud-Native Gateway Enterprises Love
![Page 43: Spring Cloud Gateway - Pivotal Software...Spring Cloud Gateway The Cloud-Native Gateway Developers Love Spencer Gibb - @spencerbgibb Ryan Baxter @ryanjbaxter Stephane Maldini - …](https://reader034.vdocument.in/reader034/viewer/2022042114/5e9078f967915617210f66ee/html5/thumbnails/43.jpg)
https://github.com/spring-cloud/spring-cloud-gateway
https://github.com/spring-cloud-samples/spring-cloud-gateway-sample
http://slides.com/spencer/spring-cloud-gateway
https://github.com/ryanjbaxter/gateway-s1p-2018
Spencer Gibb - @spencerbgibbRyan Baxter @ryanjbaxterStephane Maldini - @smaldini
Questions?