Slide 1

Slide 1 text

CLOUD JUMPING @jrbowes With Kubernetes!

Slide 2

Slide 2 text

FIND ME github.com/jbowes twitter.com/jrbowes James Bowes ABOUT ME ● Technical Lead @ www.manifold.co ● Overuses Makefiles ● Underuses Shell scripts @jrbowes

Slide 3

Slide 3 text

@jrbowes The Agenda ● Our infrastructure story ● Why cloud jump? ● How Kubernetes can help (and hurt) ● Tips along the way ● Some other talks you might enjoy

Slide 4

Slide 4 text

@jrbowes Photo by Daniel Hjalmarsson on Unsplash Growing our Infrastructure

Slide 5

Slide 5 text

@jrbowes Photo by frank mckenna on Unsplash Your Infrastructure

Slide 6

Slide 6 text

@jrbowes Our Infrastructure

Slide 7

Slide 7 text

@jrbowes Our Infrastructure ● ~ 30 primary container images ● ~ 10 secondary container images ● ~ 70 pods ● ~ 10 logical databases ● ~ 10 nodes

Slide 8

Slide 8 text

@jrbowes

Slide 9

Slide 9 text

@jrbowes

Slide 10

Slide 10 text

@jrbowes Photo by whereslugo on Unsplash Why cloud jump?

Slide 11

Slide 11 text

@jrbowes

Slide 12

Slide 12 text

@jrbowes

Slide 13

Slide 13 text

@jrbowes

Slide 14

Slide 14 text

@jrbowes

Slide 15

Slide 15 text

AWS GCP Azure DIY Managed Control Plane Managed Nodes

Slide 16

Slide 16 text

Attend: How Atlassian Built Our Own Kube Clusters and Why You Shouldn’t Do the Same Nick Young https://sched.co/GrS7 @jrbowes

Slide 17

Slide 17 text

Tip: Cloud Jumping is not Multi / Hybrid Cloud You can make different choices for a shorter lifespan @jrbowes

Slide 18

Slide 18 text

This is not a success story. @jrbowes

Slide 19

Slide 19 text

@jrbowes

Slide 20

Slide 20 text

Migrating between cloud providers is hard It will take longer than you expect or want. Kubernetes helps -- a bit. @jrbowes

Slide 21

Slide 21 text

Tip: Get Help Consider professional services if you have the budget @jrbowes

Slide 22

Slide 22 text

@jrbowes Photo by Sergey Zolkin on Unsplash Defining your infrastructure

Slide 23

Slide 23 text

Pre Kubernetes Infrastructure @jrbowes

Slide 24

Slide 24 text

Kubernetes Infrastructure @jrbowes

Slide 25

Slide 25 text

Tip: Separate your application layer Your cluster assumes the cloud exists. Your applications can assume the cluster exists. @jrbowes

Slide 26

Slide 26 text

Tip: Use templates from the start Assume your YAML has to deploy to arbitrary clusters -- if it doesn’t, it will @jrbowes

Slide 27

Slide 27 text

Attend: Kustomize: Deploy Your App with Template Free YAML Ryan Cox https://sched.co/GrSn @jrbowes

Slide 28

Slide 28 text

@jrbowes What you get for free Photo by Bernard Hermant on Unsplash

Slide 29

Slide 29 text

@jrbowes A common API

Slide 30

Slide 30 text

@jrbowes A common API

Slide 31

Slide 31 text

@jrbowes A common API

Slide 32

Slide 32 text

Tip: Use Jobs for schema and data migrations You configure in-cluster connections already @jrbowes

Slide 33

Slide 33 text

Tip: Put your trust in Kubernetes NetworkPolicy works in cluster and is portable. @jrbowes

Slide 34

Slide 34 text

@jrbowes Buy in to the ecosystem Photo by Luca Bravo on Unsplash

Slide 35

Slide 35 text

@jrbowes Buy in to the ecosystem ● Ingress ● cert-manager ● external-dns ● ...and many more!

Slide 36

Slide 36 text

Tip: Override self-service during migration Many tools assume a single cluster. @jrbowes

Slide 37

Slide 37 text

@jrbowes Photo by James Coleman on Unsplash Decoupling your workloads from the cloud

Slide 38

Slide 38 text

@jrbowes Decoupling your workloads ● object storage ● message passing / queues ● AI / ML (not too bad with TensorFlow)

Slide 39

Slide 39 text

@jrbowes Decoupling your workloads Knative eventing, Kubeflow, etc may help, some day

Slide 40

Slide 40 text

Standard API @jrbowes Managed Service

Slide 41

Slide 41 text

@jrbowes What to migrate, when Photo by Gary Bendig on Unsplash

Slide 42

Slide 42 text

@jrbowes High dependencies Low dependencies Business critical Low importance Start here

Slide 43

Slide 43 text

@jrbowes High dependencies Low dependencies Business critical Low importance Start here End here, too

Slide 44

Slide 44 text

Tip: You don’t have to migrate everything Even to Kubernetes. You’ll probably miss something regardless @jrbowes

Slide 45

Slide 45 text

Attend: Connecting Kubernetes Clusters Across Cloud Providers Thomas Graf https://sched.co/GrWc @jrbowes

Slide 46

Slide 46 text

@jrbowes The elephant in the room Photo by Harshil Gudka on Unsplash

Slide 47

Slide 47 text

@jrbowes The elephant in the room Photo by Harshil Gudka on Unsplash

Slide 48

Slide 48 text

@jrbowes State and data ● We use a cloud provider managed PostgreSQL ○ This limits our options for replication ● Find help here ● Maybe you can tolerate some downtime?

Slide 49

Slide 49 text

@jrbowes Photo by Vincent Botta on Unsplash Tiny data

Slide 50

Slide 50 text

Tip: Use shared ephemeral volumes in Pods Your state might not be as permanent as you think @jrbowes

Slide 51

Slide 51 text

Tip: Try mounted ConfigMaps You might not need a full volume. Mounted ConfigMaps automatically update. @jrbowes

Slide 52

Slide 52 text

Attend: Exploring Application Portability Across Public Cloud Providers Using K8s Erin Boyd & Ivan Font https://sched.co/GrWH @jrbowes

Slide 53

Slide 53 text

THE FOLLOWING PREVIEW HAS BEEN APPROVED FOR ALL AUDIENCES www.manifold.co

Slide 54

Slide 54 text

Deploying Rock Solid Applications with Kubernetes Jelmer Snoeck 11:40 am Tomorrow Ballroom 6E

Slide 55

Slide 55 text

TITLE ILLUSTRATION twitter.com/megthesmith FIND ME github.com/jbowes twitter.com/jrbowes Thank you! @jrbowes