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