1 of 27

Kubernetes for App Developers

Aaron Schlesinger

Velocity San Jose, June 12, 2019

2 of 27

3 of 27

Let’s Talk About Personas

Before April 2018

Eng Mgr, Azure Containers

Co-Chair, SIG-Service-Catalog

Since Then

Azure Cloud Advocate

Ops Person ➡️ App Developer

4 of 27

Definition

App Developer

  • 100(ish)% “business logic”
  • Work with, or are PMs
  • ⛔ “Undifferentiated” tech ⛔

5 of 27

Kubernetes Is Frustrating

6 of 27

Undifferentiated Tech 101

Reconciler?

What’s an app in Kubernetes?

Conceptual Overload & Context Switching

7 of 27

All This To Deploy Your First App?

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

8 of 27

Sidenote on YAML

9 of 27

Case Studies

10 of 27

11 of 27

Databases

Provision the DB

Store the Password

Inject it into the app

And do it on all on $CLOUD_PROVIDER

12 of 27

Migrations

Run migration before all app starts?

Run migration in an init container?

Run a migration job?

13 of 27

The Athens Project

14 of 27

Extracting Patterns

Easy to start

Add services piecemeal

Help with configs

Provision + secure secrets

Encode things

15 of 27

tango

A thought experiment

16 of 27

tango install

docker.Setup()

helm init

jaeger.Setup()

ingress.Setup()

...

17 of 27

tango init

It looks like you’re trying to use Kubernetes

I can help with that

18 of 27

tango deploy

docker build && docker push

set_up(monitoring, tracing, canary_deploys)

do_deploy(wait=true)

19 of 27

tango duplicate

❇️ Duplicate app but not config

❇️ … to another environment

❇️ Preview deploys, multi-cluster rollouts

20 of 27

tango delete

❇️ Un-deploy an app

❇️ (Optionally) un-init the project

21 of 27

tango service

provision(service=$SERVICE, in=$CLOUD)

Host/Credentials ➡️ $SECURE_PLACE

$SECURE_PLACE ➡️ app

22 of 27

Extraction

Not Invention

23 of 27

Draft

draft create # best practices!

draft up

draft connect

24 of 27

Fission

fission function create

fission route add

curl

25 of 27

… CNCF Ecosystem 💯

FaaS, Canary, Blue/Green, A/B deploys, traffic splitting, cookie-based routing, debugging, container & cluster security, tracing, service meshes, monitoring, alerting, ...

26 of 27

‼️ Personas ‼️

Business logic first

Compose tools

27 of 27

Thanks, Kubernauts!

@arschles

➡️ draft.sh

➡️ keel.sh

🎞️ cda.ms/Xs