K8s for App Developers - kimschles/schlesinger-knowledge GitHub Wiki

Kubernetes for App Developers

Aaron Schlesinger, KubeCon 2018

Github Repo

Using K8s is challenging for developers. There is no UX SIG for Kubernetes

App Developer Persona

  • 100%(ish) business logic
  • Work with, or are PMs
  • 'Undifferentiated' tech is painful (the code that glues parts together)

Kubernetes is Frustrating

  • The feedback loop is too long between applying yaml and seeing the result
  • What is an app in K8s?
  • Conceptual overload and context switching

Concepts Needed to Deploy a Web App

  • Pods
  • Pod networking
  • Deployments (replicasets?)
  • Services
  • Ingress
  • Ingress Controllers
  • Databases
  • RBAC

Case Studies

  • Heroku
    • one command to get your app running on the internet git push heroku master
  • Databases
    • Provision the DB
    • Store the password
    • Inject the password into the app
  • DB Migrations Possibilities:
    • Run migration before starting the app
    • Run migration in an init container
    • Run a migration job, then deploy
  • Athens
    • Global proxy for Go dependency management system
    • Project lead by arschles

Patterns K8s Should Strive To Implement for App Developers

  • Easy to start
  • Add features piecemeal
  • Help with configs
  • Provision + secure secrets
    • Make sure you can rotate passwords
  • Encode things
    • Build tools that enable app developers to implment best practices

Tango

  • A fake tool that implements the patterns above
  • tango install
    • Setup Docker builds
    • Setup Tiller, Jaeger, ingress controller, metrics monitoring
  • tango init
  • tango deploy
    • Runs docker build && docker push
    • sets up monitoring, tracing, canary deploys
    • deploys!
  • tango duplicate
  • tango delete
  • tango service

Tools that Do Some of This