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 now 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