By Rafael Benevides and Christian Posta
A lot of functionality necessary for running in a microservices architecture have been built into Kubernetes; why would you re-invent the wheel with lots of complicated client-side libraries? Have you ever asked why you should use containers and what are the benefits for your application? This talk will present a microservices application that have been built using different Java platforms: WildFly Swarm and Vert.x. Then we will deploy this application in a Kubernetes cluster to present the advantages of containers for MSA (Microservices Architectures) and DevOps. The attendees will learn how to create, edit, build, deploy Java Microservices, and also how to perform service discovery, rolling updates, persistent volumes and much more. Finally we will fix a bug and see how a CI/CD Pipeline automates the process and reduces the deployment time.
2. Christian Posta
Principal Middleware Architect at Red Hat
christian@redhat.com
@christianposta
● Author “Microservices for Java Developers”
● Committer Apache Camel, ActiveMQ,
ActiveMQ PMC, Fabric8.io
● Worked with large Microservices, web-scale
companies
● Blogger, speaker about microservices,
DevOps, cloud, distributed systems,
messaging
3. Rafael Benevides
Director of Developer Experience at Red Hat
Apache DeltaSpike P.M.C
benevides@redhat.com
@rafabene
Java Certifications:
SCJA / SCJP / SCWCD / SCBCD / SCEA
JBoss Certifications:
JBCD / JBCAA
Red Hat Certifications:
OpenShift / Containers / Ansible
Other Certifications:
SAP Netweaver / ITIL / IBM Software Quality
6. @rafabene and @christianposta
● Lightweight footprint and minimal overhead,
● Portability across machines,
● Simplify DevOps practices,
● Speeds up Continuous Integration,
● Empower Microservices Architectures.
● Isolation
Container
Advantages
Container Engine
7. @rafabene and @christianposta
A way to run a Linux container:
$ docker run -d <image-name>
A single and isolated Linux process
running in a single machine
8. @rafabene and @christianposta
DevOps challenges for multiple containers
● How to scale?
● How to avoid port conflicts?
● How to manage them in multiple
hosts?
● What happens if a host has a
trouble?
● How to keep them running?
● How to update them?
● Where are my containers?
Node Node
Logger
Node
Node Node Node
9. @rafabene and @christianposta
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
10. @rafabene and @christianposta
Version 1.3
Hosted on GitHub
800+ contributors
34,000+ commits
16,000+ GitHub stars
Red Hat
HP
IBM
Mesosphere
Microsoft
Project Partners
CoreOS
Pivotal
SaltStack
VMWare
http://kubernetes.io/
https://github.com/kubernetes/kubernetes
Open Source community
11. Master
API Server
Service Layer
VirtualPhysical Private Public
Persistent
Storage
Node Node
Logger
Node
Node Node Node
Dev
Ops
SCM
(Git/Svn)
CI/CD
Automation
Routing Layer
Registry
SDN Overlay Network
Controllers
- Scheduler
- Replication
- Services
- Builds
- Routes
- Deployment
Kubernetes
OpenShift
- Deployments
- Builds
- ImageStreams
12. @rafabene developers.redhat.com
Kubernetes Concepts
Pod Replication
Controller
Service Label
One or More 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, act as
one, has stable virtual IP
and DNS name
Key/Value pairs associated
with Kubernetes objects
(e.g. env=production)
13. @rafabene and @christianposta
Concept: Pod
● Group of containers
● Live and die together
● Share:
○ IP
○ Secrets
○ Volumes
○ Labels *
* we will talk about labels later
Labels
Application
Administrative
console
Log collector
IP: 10.x.x.x
Volume
14. SCM
(Git/Svn)
Master
API Server
Service Layer
VirtualPhysical Private Public
Persistent
Storage
Node Node
Logger
Node
Node Node Node
Dev
Ops
CI/CD
Automation
Routing Layer
Registry
SDN Overlay Network
Controllers
- Scheduler
- Replication
- Services
- Builds
- Routes
- Deployment
Kubernetes
OpenShift
- Deployments
- Builds
- ImageStreams
15. SCM
(Git/Svn)
Master
API Server
Service Layer
VirtualPhysical Private Public
Persistent
Storage
Node Node
Logger
Node
Node Node Node
Dev
Ops
CI/CD
Automation
Routing Layer
Registry
SDN Overlay Network
Controllers
- Scheduler
- Replication
- Services
- Builds
- Routes
- Deployment
Kubernetes
OpenShift
- Deployments
- Builds
- ImageStreams
16. SCM
(Git/Svn)
Master
API Server
Service Layer
VirtualPhysical Private Public
Persistent
Storage
Node Node
Logger
Node
Node Node Node
Dev
Ops
CI/CD
Automation
Routing Layer
Registry
SDN Overlay Network
Controllers
- Scheduler
- Replication
- Services
- Builds
- Routes
- Deployment
Kubernetes
OpenShift
- Deployments
- Builds
- ImageStreams
17. @rafabene and @christianposta
Concept: Labels
App: Cool
Env: Dev
Version: 1.0
App: Cool
Env: Prod
Version: 1.0
App: Cool
Env: Dev
Version: 2.0
App: Cool
Env: Prod
Version: 2.0
Everything in Kubernetes can
have a label
Node
Logger
Node
NodeNode
22. @rafabene and @christianposta
Deployment Concept: Rolling Updates
Pod
Replication
Controller
Pod Pod Pod
App: Cool
Version: 1.0
Version: 1.0
Replicas: 4
Backend
Replication
Controller
Version: 2.0
Replicas: 1
PodPod Pod Pod
App: Cool
Version: 2.0
Version: 1.0
Replicas: 3
Version: 2.0
Replicas: 2
Version: 1.0
Replicas: 2
Version: 2.0
Replicas: 3
Version: 1.0
Replicas: 1
Version: 2.0
Replicas: 4
23. @rafabene and @christianposta
If you want to know more about Kubernetes, join
The "Kubernertes for Java Developers" lab
Wednesday, Sep 21, 12:30 p.m. - 2:30 p.m.
Hilton - Franciscan Room C/D
29. @rafabene and @christianposta
Challenges of microservices CI/CD
● Lots of independent teams want their own
○ flexible pipelines
○ Environments (Dev/IST/UAT/Prod)
○ Resources (compute, network, storage)
● Automation because we have lots of microservices
○ Creation of projects, CD pipelines, environments,
releases, etc.
31. @rafabene and @christianposta
Fabric8 all the things!
● Built on top of Kubernetes
● Wizards to create microservices
● Package as immutable containers
● Rolling upgrade across environments
● 1-Click install of fully configured CI/CD
(Jenkins Pipeline, Nexus, Git)
● Feedback loops
● Lots of developer tooling
http://fabric8.io
36. @rafabene and @christianposta
Getting started with Fabric8 on Kubernetes
● Kubernetes
○ Google Container Engine (GKE)
http://cloud.google.com/container-engine
○ Amazon, Azure, Digital Ocean, et.al.
https://stackpoint.io
○ On premise:
http://kubernetes.io
● OpenShift (Enterprise Kubernetes)
○ https://openshift.com
● Then deploy fabric8 with gofabric8 deploy
○ https://github.com/fabric8io/gofabric8
http://fabric8.io
37. @rafabene and @christianposta
Demo Time!! Please reach out with questions!
Rafael Benevides
@rafabene
benevides@redhat.com
Christian Posta
@christianposta
christian@redhat.com