Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cloud Jumping With Kubernetes

James Bowes
December 11, 2018

Cloud Jumping With Kubernetes

Kubernetes promises a degree of freedom from cloud vendor lock-in, providing an API and runtime for containers that most cloud providers support. Beyond the core of container orchestration, there are abstractions for load balancers, persistent storage and autoscaling, to name a few. With this in mind, when Manifold set out to switch cloud providers, we decided to do so by first using as many abstractions in the Kubernetes ecosystem as possible.

In this talk, we will explore how Manifold used Kubernetes to migrate between cloud providers. We will look at how to identify cloud specific services and APIs in use in your application, and how Manifold evaluated whether to uplift to a Kubernetes abstraction, translate to the other cloud provider’s service, or keep as is. Finally, we will discuss the challenges and successes of the actual migration between cloud providers.

James Bowes

December 11, 2018
Tweet

More Decks by James Bowes

Other Decks in Technology

Transcript

  1. FIND ME github.com/jbowes twitter.com/jrbowes James Bowes ABOUT ME • Technical

    Lead @ www.manifold.co • Overuses Makefiles • Underuses Shell scripts @jrbowes
  2. @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
  3. @jrbowes Our Infrastructure • ~ 30 primary container images •

    ~ 10 secondary container images • ~ 70 pods • ~ 10 logical databases • ~ 10 nodes
  4. Attend: How Atlassian Built Our Own Kube Clusters and Why

    You Shouldn’t Do the Same Nick Young https://sched.co/GrS7 @jrbowes
  5. Tip: Cloud Jumping is not Multi / Hybrid Cloud You

    can make different choices for a shorter lifespan @jrbowes
  6. Migrating between cloud providers is hard It will take longer

    than you expect or want. Kubernetes helps -- a bit. @jrbowes
  7. Tip: Separate your application layer Your cluster assumes the cloud

    exists. Your applications can assume the cluster exists. @jrbowes
  8. Tip: Use templates from the start Assume your YAML has

    to deploy to arbitrary clusters -- if it doesn’t, it will @jrbowes
  9. Tip: Use Jobs for schema and data migrations You configure

    in-cluster connections already @jrbowes
  10. @jrbowes Buy in to the ecosystem • Ingress • cert-manager

    • external-dns • ...and many more!
  11. @jrbowes Decoupling your workloads • object storage • message passing

    / queues • AI / ML (not too bad with TensorFlow)
  12. Tip: You don’t have to migrate everything Even to Kubernetes.

    You’ll probably miss something regardless @jrbowes
  13. @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?
  14. Tip: Use shared ephemeral volumes in Pods Your state might

    not be as permanent as you think @jrbowes
  15. Tip: Try mounted ConfigMaps You might not need a full

    volume. Mounted ConfigMaps automatically update. @jrbowes
  16. Attend: Exploring Application Portability Across Public Cloud Providers Using K8s

    Erin Boyd & Ivan Font https://sched.co/GrWH @jrbowes