1
Advanced Deployment techniques with Kubernetes
@rafabene
Link
rafael.benevides@oracle.com
rafael.benevides@gmail.com
@rafabene
apiVersion: oracle/v1
kind: PrincipalProductManager
metadata:
name: Rafael Benevides
namespace: Oracle Linux team
annotations:
apache/contributor: Apache DeltaSpike PMC
labels:
developer: Java, NodeJS
hobby: 4x4, drones
spec:
replicas: 1
containers:
image: benevides/rafael:latest
Rafael Benevides
“Now, every company is a software company” — Forbes, 2011.
4
@rafabene
Our IT World Morphs
@rafabene
developers.redhat.com
developers.redhat.com
@rafabene
3 Month
Deployment Cycle
3 Months BEFORE you gain Feedback and Learn
Plan
Dev
QA
UAT
Deploy
@rafabene
Feedback
Loop
9
@rafabene
10
@rafabene
Batch Size
3 Months
Vs
1 Week
@rafabene
January
Time
April
Innovation
Learning
Feedback
February
March
@rafabene
14
Maintenance
Window
@rafabene
Zero Downtime
@rafabene
@rafabene
18
Blue
Green
Deployments
@rafabene
19
Blue
@rafabene
20
Blue
Proxy
@rafabene
21
Blue
Proxy
Green
@rafabene
22
Blue
Proxy
Green
@rafabene
23
Blue
Proxy
Green
@rafabene
24
Blue
Proxy
Green
@rafabene
Demo
26
Rolling
Upgrade
@rafabene
27
Proxy
@rafabene
28
Proxy
@rafabene
29
Proxy
@rafabene
30
Proxy
@rafabene
Demo
32
Canary
Deployments
@rafabene
@rafabene
Canary Resuscitator
35
Proxy
@rafabene
36
Proxy
@rafabene
37
Proxy
@rafabene
Canaries with Kubernetes
Pod
Container
JVM
Service A v1
Pod
Container
JVM
Service A v2
Service
Route/
Ingress
50%
50%
Canaries with Istio
Pod
Container
JVM
Service A v1
Pod
Container
JVM
Service A v2
Service
Route/
Ingress
90%
10%
Istio - Sail
@rafabene
Microservices embedding Capabilities
@rafabene
Container
JVM
Service B
Discovery
Load-balancer
Resiliency
Metrics
Tracing
Container
JVM
Service A
Discovery
Load-balancer
Resiliency
Metrics
Tracing
Container
JVM
Service C
Discovery
Load-balancer
Resiliency
Metrics
Tracing
Before Istio
Microservices externalizing Capabilities
@rafabene
Pod
Container
JVM
Service A
Sidecar Container
Pod
Container
JVM
Service C
Sidecar Container
Pod
Container
JVM
Service B
Sidecar Container
After Istio
Microservices externalizing Capabilities
@rafabene
Pod
Container
JVM
Service A
Sidecar Container
Pod
Container
JVM
Service C
Sidecar Container
Pod
Container
JVM
Service B
Sidecar Container
After Istio
The sidecar intercepts all network traffic
Envoy is the current sidecar
@rafabene
Pod
Container
JVM
Service A
Sidecar Container
Pod
Container
JVM
Service C
Sidecar Container
Pod
Container
JVM
Service B
Sidecar Container
Demo
46
A/B Testing
@rafabene
⅓ Positive Value-Add
“Our experience at Microsoft is no different: only about 1/3 of ideas improve the metrics they were designed to improve.”
Ronny Kohavi
Microsoft (formerly Amazon)
http://ai.stanford.edu/~ronnyk/ExPThinkWeek2009Public.pdf
What is your�
Hypothesis?
ACME Laptop 128GB SSD, 8GB RAM
$323.56
Touchscreen
128GB SSD 8GB RAM
Core i3
Windows 10
Add to Cart
In-Store Pickup (15 available)�Raleigh, Central Ave, Store #1123
Recommendations
A
ACME Laptop 128GB SSD, 8GB RAM
$323.56
Touchscreen
128GB SSD 8GB RAM
Core i3
Windows 10
Add to Cart
In-Store Pickup (15 available)�Raleigh, Central Ave, Store #1123
Recommendations
B
@rafabene
ACME Laptop 128GB SSD, 8GB RAM
$323.56
Touchscreen
128GB SSD 8GB RAM
Core i3
Windows 10
Add to Cart
In-Store Pickup (15 available)�Raleigh, Central Ave, Store #1123
Recommendations
A
B
ACME Laptop 128GB SSD, 8GB RAM
$323.56
Touchscreen
128GB SSD 8GB RAM
Core i3
Windows 10
Add to Cart
In-Store Pickup (15 available)�Raleigh, Central Ave, Store #1123
Recommendations
@rafabene
ACME Laptop 128GB SSD, 8GB RAM
$323.56
Touchscreen
128GB SSD 8GB RAM
Core i3
Windows 10
Add to Cart
In-Store Pickup (15 available)�Raleigh, Central Ave, Store #1123
Recommendations
A
B
ACME Laptop 128GB SSD, 8GB RAM
$323.56
Touchscreen
128GB SSD 8GB RAM
Core i3
Windows 10
Add to Cart
In-Store Pickup (15 available)�Raleigh, Central Ave, Store #1123
Recommendations
@rafabene
ACME Laptop 128GB SSD, 8GB RAM
$323.56
Touchscreen
128GB SSD 8GB RAM
Core i3
Windows 10
Add to Cart
In-Store Pickup (15 available)�Raleigh, Central Ave, Store #1123
Recommendations
A
B
ACME Laptop 128GB SSD, 8GB RAM
$323.56
Touchscreen
128GB SSD 8GB RAM
Core i3
Windows 10
Add to Cart
In-Store Pickup (15 available)�Raleigh, Central Ave, Store #1123
iOS Users
In North Carolina
@rafabene
Development
QA
Staging
Production
commit
SCM
Router
Users
A/B Testing
Hypothesis - Experiment - two variants: check-out button placement increase sales conversions for iOS users?
@rafabene
54
Dark
Launch
@rafabene
Dark Launches with Istio
Pod
Container
JVM
Service A v1
Pod
Container
JVM
Service A v2
Service
Route/
Ingress
100%
100%
@rafabene
Mirror requests
Application State during deployments
Created by
@rafabene
VI. Processes
Execute the app as one or more stateless processes
"Sticky sessions are a violation of twelve-factor and should never be used or relied upon. Session state data is a good candidate for a datastore that offers time-expiration, such as Memcached or Redis."
@rafabene
Demo
CI/CD Pipelines
Jez Humble Continuous Delivery
Continuous Delivery is the ability to get changes of all types—including new features, configuration changes, bug fixes and experiments—into production, or into the hands of users, safely and quickly in a sustainable way.
Purpose Of Pipeline
Jez Humble
“Job of deployment pipeline is to prove that the release candidate is unreleasable”
build
Development
buildbuild
Staging
commit
SCM
Router
Users
CI/CD Pipeline
Starts with a “git commit and git push”
build
build
buildbuild
Choose your deployment pattern
@rafabene
Demo
@RAFABENE
@rafabene
Run them on Linux
Virtual
Physical
Private
Public
Oracle Linux
Node
Node
Node
Master
API Server
Dev
Ops
SCM�(Git/Svn)
CI/CD
Automation
Controllers
- Scheduler
- Replication
- Services
- Builds
- Routes
- Deployment
Kubernetes
Ingress Gateway
67
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
@rafabene - bit.ly/quarkus
68
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
@rafabene - bit.ly/quarkus