SpringOne 2021
Session Title: Next-Generation Cloud Native Apps with Spring Cloud and Kubernetes
Speaker: Ryan Baxter, Staff Software Engineer at VMware
2. Safe Harbor Statement
The following is intended to outline the general direction of VMware's oïŹerings. It is intended for information
purposes only and may not be incorporated into any contract. Any information regarding pre-release of
VMware oïŹerings, future updates or other planned modiïŹcations is subject to ongoing evaluation by
VMware and is subject to change. This information is provided without warranty or any kind, express or
implied, and is not a commitment to deliver any material, code, or functionality, and should not be relied
upon in making purchasing decisions regarding VMware's oïŹerings. These purchasing decisions should only
be based on features currently available. The development, release, and timing of any features or
functionality described for VMware's oïŹerings in this presentation remain at the sole discretion of Pivotal.
Pivotal has no obligation to update forward looking information in this presentation.
2
3. About Me
â Husband, Father
â Long time Java developer
â Spring Cloud Engineer
â Exercise Enthusiast, OCR Athlete
3
5. Cloud Native Applications
Back in the day...when we didnât have cloud
platforms
â Service Discovery
â Externalize ConïŹguration
â Prepare for failure
â Load Balancing
â Routing
5
6. Lets Make Things Simple
What if we create a platform that made
these things easier?
6
7. Spring Cloud In Action
7
Git
Config Server
Service Discovery
Server
Boot App A
Load Balancing
Circuit Breaker
Tracing
Boot App B
Tracing
RabbitMQ
9. Spring Apps On Kubernetes
9
Config Map
POD A
Circuit Breaker
Tracing
Volume
Env Vars
Service A
(Load Balancer)
POD B
Tracing
Service B
(Load Balancer)
10. Kubernetes Equivalents
â ConïŹg Server = ConïŹg Maps and Secrets
â Load Balancing = Service Instance
â Discovery Server = Service Instance
â Discovery Client = DNS For Service Host Name
â http://myservicename
â Port and Host Name Environment Variables
10
REDIS_MASTER_SERVICE_HOST=10.0.0.11
REDIS_MASTER_SERVICE_PORT=6379
REDIS_MASTER_PORT=tcp://10.0.0.11:6379
REDIS_MASTER_PORT_6379_TCP=tcp://10.0.0.11:6379
REDIS_MASTER_PORT_6379_TCP_PROTO=tcp
REDIS_MASTER_PORT_6379_TCP_PORT=6379
REDIS_MASTER_PORT_6379_TCP_ADDR=10.0.0.11
11. Spring Cloud Kubernetes
11
Config Map
POD A
Circuit Breaker
Tracing
Volume
Env Vars
Service A
(Load Balancer)
POD B
Tracing
Service B
(Load Balancer)
Config Watcher
K8S API
Server
RabbitMQ
Discovery Client
12. Spring Cloud In Action
12
POD A
Load Balancing
Circuit Breaker
Tracing
Service A
(Load Balancer)
POD B
Tracing
Service B
(Load Balancer)
Config Watcher
K8S API
Server
RabbitMQ
Spring Cloud
Config Server
Spring Cloud
Kubernetes
Discovery
Server
Config
Map
Git
14. There Is No Right Answer
â A âKubernetes Nativeâ approach is perfectly ïŹne
â Green ïŹeld app or coming from somewhere else
â Are you deploying app to other platforms?
â Transitioning from another app platform to Kubernetes
14