Have you ever thought how to deploy Cloud Native Java Applications (Spring Boot) on Kubernetes? Kubernetes has now become a de-facto standard for deploying Cloud Native Applications, but still there is myth that they are not ready for Java workloads. The aim of this session is to break that myth to show Kubernetes is well suited for Cloud Native Java applications.
The session explores the cloud native characteristics such as Discovery, Blue/Green Deployments, Elasticity, Canary Deployments, Resiliency, Pipeline(CI/CD), Authentication etc., becomes implicit characteristics to your Spring Boot Java applications that are deployed on Kubernetes
In this session, we will see how to build, debug, deploy and discover Spring Boot applications on Kubernetes, covering in depth details of the tools, libraries and platform that could be used to make your spring boot deployment smooth and easy.
8. @alexsotob
JDBC driver, JMS queue, users
8
Your Stack Matters
Server Hardware
Operating System
your.jar
Java Virtual Machine
Custom Configuration
Linux Kernel Version & Distribution
Java 1.8.0_144
9. @alexsotob9
DevOps Challenges for Multiple Containers
▪ How to scale?
▪ How to avoid port conflicts?
▪ How to manage them on
multiple hosts?
▪ What happens if a host has
trouble?
▪ How to keep them running?
▪ How to update them?
▪ Where are my containers?
Node
Node Node
Node Node
Logger
Node
12. @alexsotob12
▪ Greek for “Helmsman,” also the root of the word
“Governor” (from latin: gubernator)
▪ Container orchestrator
▪ Supports multiple cloud and bare-metal
environments
▪ Inspired by Google’s experience with containers
▪ Open source, written in Go
▪ Manage applications, not machines
Meet Kubernetes
14. @alexsotob14
Kubernetes Cluster
Pod
Replication
Controller/
Deployment
Service Label
✓ 1+ containers
✓ Shared IP
✓ Shared storage volume
✓ Shared resources
✓ Shared lifecycle
✓ Ensures that a
specified
number of pod
replicas are
running at any
one time
✓ Grouping of
pods (acting as
one) has stable
virtual IP and
DNS name
✓ Key/Value pairs
associated with
Kubernetes objects
(env=production)
17. @alexsotob17
Spring Cloud Kubernetes
> Service Discovery
Spring Discovery Client using Kubernetes Service Discovery
> ConfigMap Property Source
Use Kubernetes ConfigMap/Secrets as Spring Property Source
> Zipkin Service Discovery
Using Zipkin with Kubernetes for distributed tracing
36. @alexsotob36
Infinispan.org
IN-MEMORY DATA = All data needed is to kept in memory
GRID = Too big for one node, data is scaled-out in cluster
Analytical
Framework
Custom
Applications
Mobile
Applications
Web Apps &
Websites
Fuse "memory" across machines into a unified data store
Read-through, write-through, write-behind
• NoSQL
• Extreme Performance
• Linear Scalability
• Fault Tolerant
• Event processing
• Configurable ACID Txn
Infinispan/Red Hat JBoss Data Grid
Databases and/or file system
40. @alexsotob40
▪ Greek word for “sail”
▪ Fleet configuration
▪ Routing and Load-Balancing control
▪ Observability
▪ Chaos Testing
▪ Security Options
Istio
41. @alexsotob41
Pod
Container
JVM
Service A
Envoy Side-car
Pod
Container
JVM
Service B
Envoy Side-car
Pod
Container
JVM
Service C
Envoy Side-car
HTTP1.1, HTTP2,
gRPC, TCP w/TLS
HTTP1.1, HTTP2,
gRPC, TCP w/TLS
HTTP1.1, HTTP2,
gRPC, TCP w/TLS
Istio Pilot Istio Mixer Istio Auth
istioctl, API, config Quota, Telemetry
Rate Limiting, ACL
CA, SPIFFE
Istio Data Plane