Balkan follow me at @ahmetb Thanks to Mark Chmarny, Ryan Gregg, DeWitt Clinton, Bret McGowen and Ville Aikas for some of the slides used in this presentation.
control over their infrastructure (VMs, machines, OS images, networking, security, ...) • Not everyone is on cloud yet, or they want to avoid vendor lock-in. • Kubernetes lets you effectively manage a large set of {machines, deployments}.
... want to use their favorite languages and dependencies. ... don't want to manage the infrastructure. Operators want Kubernetes Kubernetes is great orchestrating microservices They love using GKE and not having to do operations for Kubernetes. Kubernetes is not the right abstraction for their developers.
doesn't use cloud (or wants vendor lock-in) 2. Need control over the infrastructure, machines, host OS, ... 3. Kubernetes offers good abstractions to build upon.
of building blocks to construct your own FaaS/PaaS ◦ abstracts common tasks through custom Kubernetes API objects • An abstraction on top of Kubernetes. ◦ It's still Kubernetes: Runs containers at the end of the day.
directly to deploy stuff (not easy, but works fine) • [Operators] Put a level of abstraction between your devs and Kubernetes. • [Platform Architects] Use it to build your own serverless platform. ◦ e.g. DIY Heroku or GCF/Lambda.
your workload (activation) on request. • Something to scale up, and back to zero. • Something to turn your app/function into a container • Something to collect metrics and export telemetry from the app. • Handling of revisions of the code+config (+ability to rollback) • A way to offer traffic splitting (gradual rollout) • An eventing system with configurable sources/flows/subscribers
Built-in traffic splitting between revisions • Integrates networking and service mesh automatically • Easy to reason about object model Pluggable • Connect to your own logging and monitoring platform, or use the built-in system • Auto-scaler can be tuned or swapped out for custom code
state of an application Code & configuration separated (a la 12-factor) Revision Point in time snapshots for your code and configuration Route Maps traffic to a revisions Supports fractional, named routing
images. • Build pipelines can consist of multiple steps • Each build step is a container image. • Builds run inside the containers on the cluster. Makes it possible to do GitOps and go from "git push" to a running URL.
is turned into artifact (container image). • Builds happen on the cluster. ◦ No need for Docker locally ◦ Cached Docker builds ◦ Faster image pushes ◦ No cross-compiling toil
Feel native on Kubernetes • Meet the developer • Loose coupling at the top • Pluggable at the bottom • Codify the commonalities • Build a stable platform