Deploy And Release at Kubernetes Era

62
Deploy and Release At Kubernetes Era Alex Soto @alexsotob

Transcript of Deploy And Release at Kubernetes Era

Page 1: Deploy And Release at Kubernetes Era

Deploy and ReleaseAt Kubernetes Era

Alex Soto @alexsotob

Page 2: Deploy And Release at Kubernetes Era

@alexsotob2

Alex Soto

Red Hat Engineer

www.lordofthejars.com

@alexsotob

Who Am I?

Page 3: Deploy And Release at Kubernetes Era

@alexsotob3

https://www.manning.com/books/testing-java-microservices

https://goo.gl/jsZkXM

Page 4: Deploy And Release at Kubernetes Era

@alexsotob4

Search Engines

Page 5: Deploy And Release at Kubernetes Era

@alexsotob5

Sad Panda

Page 6: Deploy And Release at Kubernetes Era

@alexsotob6

Deliver Often Deliver Fast

Page 7: Deploy And Release at Kubernetes Era

@alexsotob7

Our IT World Morphs

Page 8: Deploy And Release at Kubernetes Era

@alexsotob8

Page 9: Deploy And Release at Kubernetes Era

@alexsotob9

“In the future, you and I are going to be good friends.

You just don’t know it yet.”

—WOLVERINE

Page 10: Deploy And Release at Kubernetes Era

@alexsotob10

Shipping Software

> Build Creates a deliverable artefact of your code

> Test Check implementing the right thing and things right

> Deploy Installing the new artefact on production

> Release Move production traffic to the new version

Page 11: Deploy And Release at Kubernetes Era

@alexsotob11

Build, Test and Deploy

Page 12: Deploy And Release at Kubernetes Era

@alexsotob12

Microservice’ilities

MyService

Monitoring

Tracing

Discovery

API

Invocation

Resilience

Pipeline

Authentication

Logging Elasticity

Page 13: Deploy And Release at Kubernetes Era

@alexsotob13

Your Stack Matters

Server Hardware

Operating System

Application Server

your.war

Java Virtual Machine

Custom Configuration

Linux Kernel Version & Distribution

Java 1.7.0_67

Tomcat, Wildfly, Jetty

JDBC driver, JMS queue, users

Page 14: Deploy And Release at Kubernetes Era

@alexsotob14

Page 15: Deploy And Release at Kubernetes Era

@alexsotob15

Microservice’ilities

MyService

Monitoring

Tracing

Discovery

API

Invocation

Resilience

Pipeline

Authentication

Logging Elasticity

Page 16: Deploy And Release at Kubernetes Era

@alexsotob

Deploy Something To Kubernetes

16

Page 17: Deploy And Release at Kubernetes Era

@alexsotob17

Page 18: Deploy And Release at Kubernetes Era

@alexsotob18

Microservice’ilities

MyService

Monitoring

Tracing

Discovery

API

Invocation

Resilience

Pipeline

Authentication

Logging Elasticity

Page 19: Deploy And Release at Kubernetes Era

@alexsotob

Deploy using Source-To-Image (S2I)

19

Page 20: Deploy And Release at Kubernetes Era

@alexsotob

Source-To-Image (S2I)

20

Page 21: Deploy And Release at Kubernetes Era

@alexsotob

Source-To-Image (S2I) + Jenkins

21

Page 22: Deploy And Release at Kubernetes Era

@alexsotob

Source-To-Image (S2I) + Jenkins

22

Page 23: Deploy And Release at Kubernetes Era

@alexsotob23

Fabric 8

Page 24: Deploy And Release at Kubernetes Era

@alexsotob24

Page 25: Deploy And Release at Kubernetes Era

@alexsotob25

DEMO

Demo1: https://www.youtube.com/watch?v=jTX-Lg73nXA

Page 26: Deploy And Release at Kubernetes Era

@alexsotob26

Release

Page 27: Deploy And Release at Kubernetes Era

@alexsotob27

Lead Time

Page 28: Deploy And Release at Kubernetes Era

@alexsotob28

Blue-Green Deployments

Page 29: Deploy And Release at Kubernetes Era

Starts with a “git commit and git push”

Blue/Green Deployment

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

BUILDSCM

Page 30: Deploy And Release at Kubernetes Era

Blue/Green Deployment

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

BUILDSCM

Page 31: Deploy And Release at Kubernetes Era

Blue/Green Deployment

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

BUILDSCM

Page 32: Deploy And Release at Kubernetes Era

Blue/Green Deployment

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

BUILDSCM

Page 33: Deploy And Release at Kubernetes Era

Blue/Green Deployment

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

BUILDSCM

Page 34: Deploy And Release at Kubernetes Era

Blue/Green Deployment

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Page 35: Deploy And Release at Kubernetes Era

Blue/Green Deployment

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Page 36: Deploy And Release at Kubernetes Era

@alexsotob36

Canary Release

Page 37: Deploy And Release at Kubernetes Era

Canary Deployment

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Page 38: Deploy And Release at Kubernetes Era

Canary Deployment

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Page 39: Deploy And Release at Kubernetes Era

Canary Deployment

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Page 40: Deploy And Release at Kubernetes Era

Canary Deployment

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Page 41: Deploy And Release at Kubernetes Era

Canary Deployment

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Page 42: Deploy And Release at Kubernetes Era

Canary Deployment

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Page 43: Deploy And Release at Kubernetes Era

Canary Deployment

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Page 44: Deploy And Release at Kubernetes Era

Canary Deployment

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Page 45: Deploy And Release at Kubernetes Era

Canary Deployment

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Page 46: Deploy And Release at Kubernetes Era

Canary Deployment

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Page 47: Deploy And Release at Kubernetes Era

@alexsotob47

Dark Launches

Page 48: Deploy And Release at Kubernetes Era

Dark Launches

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

INTERNAL USERS

Page 49: Deploy And Release at Kubernetes Era

Dark Launches

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Page 50: Deploy And Release at Kubernetes Era

@alexsotob50

As we move to services architectures, we push the complexity to the space between our services

CHRISTIAN POSTA

Page 51: Deploy And Release at Kubernetes Era

@alexsotob51

NETFLIX Ribbon

Config Server

Java Microservices Platform circa 2016

Page 52: Deploy And Release at Kubernetes Era

@alexsotob52

Istio

Java Microservices Platform circa 2018

Page 53: Deploy And Release at Kubernetes Era

@alexsotob53

Page 54: Deploy And Release at Kubernetes Era

@alexsotob54

Microservice’ilities

MyService

Monitoring

Tracing

Discovery

API

Invocation

Resilience

Pipeline

Authentication

Logging Elasticity

Page 55: Deploy And Release at Kubernetes Era

@alexsotob55

Kubernetes, Istio, Envoy

PodContainer

JVM

Service A

Envoy Side-car

PodContainer

JVM

Service A

Envoy Side-car

PodContainer

JVM

Service A

Envoy Side-car

Page 56: Deploy And Release at Kubernetes Era

@alexsotob56

Istio Control Plane

PodContainer

JVM

Service A

Envoy Side-car

PodContainer

JVM

Service B

Envoy Side-car

PodContainer

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, TelemetryRate Limiting, ACL

CA, SPIFFE

Istio Data Plane

Page 57: Deploy And Release at Kubernetes Era

@alexsotob

Canary Release

57

Page 58: Deploy And Release at Kubernetes Era

@alexsotob

Blocking

58

Page 59: Deploy And Release at Kubernetes Era

@alexsotob

Mirroring

59

Page 60: Deploy And Release at Kubernetes Era

@alexsotob60

DEMO

Demo1: https://www.youtube.com/watch?v=CSd91BoG-sc

Page 61: Deploy And Release at Kubernetes Era

“Change is the essential process of all of existence.”

—SPOCK

Page 62: Deploy And Release at Kubernetes Era

https://developers.redhat.com/

@alexsotob

[email protected]