K8s for App Developers - kimschles/schlesinger-knowledge GitHub Wiki
Kubernetes for App Developers
Aaron Schlesinger, KubeCon 2018
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
- one command to get your app running on the internet
- 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!
- Runs
tango duplicate
tango delete
tango service