+ All Categories
Home > Documents > Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets...

Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets...

Date post: 31-Jan-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
59
Transcript
Page 1: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots
Page 2: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

Title TextTitle Text

The State of Kubernetes Development ToolingOctober 2019

Page 3: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

Kubernetes the hardKubernetes the hardwayway falsely implies that falsely implies thatthere's an easy way.there's an easy way.

@pczarkowski

@ellenkorbes

Page 4: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@ellenkorbes

Page 5: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Run on Kubernetes.■ Are not Kubernetes itself. E.g. CRDs & operators.

Who is this talk for?@ellenkorbes

Developers working on apps that...

Page 6: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Their pre-commit workflow.■ The part of their day where code gets written.

Who is this talk for?

■ Their CI/CD pipelines.■ Ops stuff not directly related to writing code.

But not necessarily...

Developers looking to improve...

@ellenkorbes

Page 7: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

You put the whole appYou put the whole appin one container?!in one container?!

@7hunderbird 

@ellenkorbes

Page 8: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Provisioning■ Configuration files■ Bootstrap■ Write code■ Build■ Deploy to dev■ Test■ Debug■ Git & CI■ Ship to prod. & CD■ Observability

DevelopmentCycle:

@ellenkorbes

Page 9: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

Pre-CommitStage:

■ Provisioning■ Configuration files■ Bootstrap■ Write code■ Build■ Deploy to dev■ Test■ Debug■ Git & CI■ Ship to prod. & CD■ Observability

@ellenkorbes

Page 10: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Configuration files

■ Bootstrap

■ Write code

■ Build

■ Deploy to dev

■ Test

■ Debug

Setup

Dev

Feedback

@ellenkorbes

Page 11: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Configuration files■ Bootstrap■ Write code■ Build■ Deploy to dev■ Test■ Debug

Wishlist■ Manageable size■ Create them for me?

@ellenkorbes

Page 12: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Setup tasks (like migrations)

@ellenkorbes

■ Configuration files■ Bootstrap■ Write code■ Build■ Deploy to dev■ Test■ Debug

Wishlist

Page 13: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Configuration files■ Bootstrap■ Write code■ Build■ Deploy to dev■ Test■ Debug

■ Automate docker/kubectl cycle■ Short feedback loop■ Unobtrusive■ Hot reload■ Easy to on-board■ Dependency-aware

@ellenkorbes

Wishlist

Page 14: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Do testing■ Highlight failures■ End-to-end tests

@ellenkorbes

■ Configuration files■ Bootstrap■ Write code■ Build■ Deploy to dev■ Test■ Debug

Wishlist

Page 15: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Log streaming■ Highlight issues■ Allow breakpoints■ Not tracing

@ellenkorbes

■ Configuration files■ Bootstrap■ Write code■ Build■ Deploy to dev■ Test■ Debug

Wishlist

Page 16: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

Maybe containers wereMaybe containers werea mistake.a mistake.

@jessfraz

@ellenkorbes

Page 17: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@ellenkorbes

■ Debug■ Connect■ Build & Deploy

Cycle

Categories

Page 18: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Draft■ Garden■ Skaffold■ Tilt■ Jenkins X■ Forge■ Helm

@ellenkorbes

Tools■ ksync■ kubefwd■ Okteto■ Telepresence■ inlets■ Squash■ Stern

■ Debug■ Connect■ Build & Deploy

Cycle

Categories

Page 19: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ kubeval■ yq■ kubectx■ kubens■ ytt■ kpxg■ kbld■ kapp■ kwt■ ...

Others...

@ellenkorbes

Page 20: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@ellenkorbes

Trivia:Which of theseisn't a real tool?

■ kubeval■ yq■ kubectx■ kubens■ ytt■ kpxg■ kbld■ kapp■ kwt■ ...

Others...

Page 21: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

Kubernetes:Kubernetes:complicating simplecomplicating simplethings since 2014.things since 2014.

@texmandie

@ellenkorbes

Page 22: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

Debug■ kubectl■ Squash■ Stern

■ Easily shows you the status of your pods,deployments, services.

■ Learn it.■ kubectl logs --follow -n [namespace] [pod]

Notes@ellenkorbes

Page 23: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@ellenkorbes

Debug■ kubectl■ Squash■ Stern

Page 24: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Steps and breakpoints on deployedcontainers!

■ No more Printf debugging �■ IDE or CLI■ Delve, gdb, Java, Node, Python■ Fun!

@ellenkorbes

Notes:Debug■ kubectl■ Squash■ Stern

Page 25: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@ellenkorbes

Debug■ kubectl■ Squash■ Stern

Page 26: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Streams logs from multiple pods■ Color-coded■ Easy to filter■ It's the best■ I love it �■ Use it!

@ellenkorbes

Notes:Debug■ kubectl■ Squash■ Stern

Page 27: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@ellenkorbes

Debug■ kubectl■ Squash■ Stern

Page 28: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ "[...] think of it as a very fancy shell scriptthat does a docker build, docker push,kubectl apply [...]" — rdldw

■ Builds and deploys! Doesn't watch.■ Requires YAML, Dockerfile, Forge config.■ Allows profiles e.g. dev/canary/production.■ Development seems stopped �

@ellenkorbes

Notes:Connect■ Forge■ Helm■ inlets■ ksync■ kubefwd■ Okteto■ Telepresence

Page 29: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Package manager for Kubernetesapplication structure.

■ Install and uninstall off-the-shelf apps. Thinkapt-get, brew, npm, pip, gem.

■ App lifecycle management. Deploy a service'snew version, roll back, delete.

■ Omnipresent: Haven't used it? You will.■ Pro & con: Go templating on configs.

@ellenkorbes

Notes:■ Forge■ Helm■ inlets■ ksync■ kubefwd■ Okteto■ Telepresence

Connect

Page 30: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Reverse proxy & websocket tunnel to exposeinternal endpoints to the internet.

■ Similar to ngrok or Argo Tunnel, but free andopen source.

■ Has a Kubernetes operator so you canseamlessly expose a local Kubernetes cluster.

■ Use it to share works in progress, set upwebhooks in development, and so on.

■  ACHTUNG! You're exposing internals to theinternet. Be mindful of security.

@ellenkorbes

Notes:■ Forge■ Helm■ inlets■ ksync■ kubefwd■ Okteto■ Telepresence

Connect

Page 31: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@ellenkorbes

■ inlets

Page 32: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Watches your file system■ Syncs local files with files in your cluster■ Straight forward and easy to use■ Built on top of Syncthing■ You do need a watcher inside the

container to act on the updated files!

@ellenkorbes

Notes:■ Forge■ Helm■ inlets■ ksync■ kubefwd■ Okteto■ Telepresence

Connect

Page 33: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Forward all possible ports—asopposed to kubectl which forwardsindividual ports.

■ Access any service locally like a podin the cluster

■ Easy! Fun! Buy it now! (Just kidding.)

@ellenkorbes

Notes:■ Forge■ Helm■ inlets■ ksync■ kubefwd■ Okteto■ Telepresence

Connect

Page 34: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Forge■ Helm■ inlets■ ksync■ kubefwd■ Okteto■ Telepresence

Connect

Page 35: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Swaps a deployment for adevelopment environment.

■ Syncs & watches files, gives you aremote terminal, does port forwarding.

■ Ideal to build admission controllers,operators, things deeply integratedwith k8s.

■ One service at a time.

@ellenkorbes

Notes:■ Forge■ Helm■ inlets■ ksync■ kubefwd■ Okteto■ Telepresence

Connect

Page 36: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Hot swaps a running pod and creates alocal shell where the network is proxied intothe cluster.

■ Run app locally; it acts as if in the cluster.■ Use local IDE, debugger, etc.■ Vs. Squash: Single instance. Might cause

conflicts like env vars and docker version.■ Vs. Okteto: Local machine pretends tobe a node vs. moving dev into the cluster.

@ellenkorbes

Notes:■ Forge■ Helm■ inlets■ ksync■ kubefwd■ Okteto■ Telepresence

Connect

Page 37: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

Build &Deploy■ Draft■ Garden■ Jenkins X■ Skaffold■ Tilt

@ellenkorbes

■ Generates config files: Great if you're newto containers or Kubernetes! Helm based.

■ Supports bootstrapping tasks.■ Works per-service: You must "draft up"

for every service.■ "The team originally working on Draft

have to put it on the backburner whilefocusing on efforts like Brigade, Helm 3,and CNAB."

■ No hot reload!

Notes:

Page 38: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@ellenkorbes

Build &Deploy■ Draft■ Garden■ Jenkins X■ Skaffold■ Tilt

Page 39: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@ellenkorbes

■ No Kubernetes manifests required.(Unless you want to!)

■ Allows in-cluster builds. LocalKubernetes, Docker, minikube notrequired.

■ Project awareness: It tracks build anddeploy dependencies.

■ Tests are first-class citizens. Locally & CI.■ Pluggable: Custom module types for e.g.

OpenFaaS, Java, Terraform. (Soon alsoGo!)

Notes:Build &Deploy■ Draft■ Garden■ Jenkins X■ Skaffold■ Tilt

Page 40: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@ellenkorbes

Build &Deploy■ Draft■ Garden■ Jenkins X■ Skaffold■ Tilt

Page 41: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@ellenkorbes

Build &Deploy■ Draft■ Garden■ Jenkins X■ Skaffold■ Tilt

Page 42: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@ellenkorbes

Build &Deploy■ Draft■ Garden■ Jenkins X■ Skaffold■ Tilt

Page 43: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@ellenkorbes

Build &Deploy■ Draft■ Garden■ Jenkins X■ Skaffold■ Tilt

Page 44: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@ellenkorbes

■ Something about provisioning.■ Something about CI.■ Uses Skaffold and ksync in the

background.■ Has build packs that generate config

files similarly to Draft! �

Notes:Build &Deploy■ Draft■ Garden■ Jenkins X■ Skaffold■ Tilt

Page 45: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@ellenkorbes

■ Automatically builds & deploys!■ For those already familiar with k8s, it

doesn't require learning new concepts.■ Requires k8s manifests! Not for

beginners.■ Easy set up if you already have them.■ No support for dependencies, tests, or

bootstrapping.

Notes:Build &Deploy■ Draft■ Garden■ Jenkins X■ Skaffold■ Tilt

Page 46: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

Build &Deploy■ Draft■ Garden■ Jenkins X■ Skaffold■ Tilt

Page 47: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

Build &Deploy■ Draft■ Garden■ Jenkins X■ Skaffold■ Tilt

Page 48: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@ellenkorbes

■ Like Skaffold: Requires k8s manifests;easy set up if you already have them.

■ Gorgeous UI, dashboard, and logging.■ Vs. Skaffold? Skaffold's concepts map

almost directly into Tilt. ■ Starlark configs!

Notes:Build &Deploy■ Draft■ Garden■ Jenkins X■ Skaffold■ Tilt

Page 49: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@ellenkorbes

Build &Deploy■ Draft■ Garden■ Jenkins X■ Skaffold■ Tilt

Page 50: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@ellenkorbes

Build &Deploy■ Draft■ Garden■ Jenkins X■ Skaffold■ Tilt

Page 51: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@ellenkorbes

Build &Deploy■ Draft■ Garden■ Jenkins X■ Skaffold■ Tilt

Page 52: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

Toolchains:

■ Helm■ kubectl

■ Draft ☠■ Garden■ Jenkins X■ Skaffold■ Tilt

■ Forge ☠■ inlets■ ksync■ kubefwd■ Okteto■ Telepresence

■ kubefwd■ Squash■ Stern

Debug:Connect: Build&DeployCycle:

@ellenkorbes

Omnipresent:

Page 53: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

It works on my cluster...It works on my cluster...@maeddes

 

@ellenkorbes

Page 54: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

Still missing:■ Better docs!■ Consistent naming for

things across different tools.■ Better support for tests!■  ■ Beginner friendliness.■ Clarity. A cohesive story. ?

@ellenkorbes

(ls *.go | entr ­r ./mytest.sh)

Page 55: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ Draft → ■ entr → ■ Forge → ■ Garden → ■ Helm → ■ inlets →   & ■ Jenkins X → ■ ksync → ■ kubectl 'Debug Services' → 

■ kubefwd → ■ Okteto → ■ Skaffold → ■ Squash → ■ Stern → ■ Telepresence → ■ Tilt → 

draft.sheradman.com/entrproject/forge.shgarden.io

helm.shgithub.com/inlets/inlets inlets-operator

jenkins-x.iogithub.com/vapor-ware/ksync

kubernetes.io/docs/tasks/debug-application-cluster/debug-service/

kubefwd.comokteto.comskaffold.devgithub.com/solo-io/squash

github.com/wercker/sternwww.telepresence.io

tilt.dev

Links:@ellenkorbes

Page 56: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

@krisnova

You can't have aYou can't have aclusterf!$& without aclusterf!$& without a

cluster.cluster.

@ellenkorbes

Page 57: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

■ developer relations■ [email protected]■ @ellenkorbes■  #[email protected]■ they/them

ellen körbes

Page 58: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

[email protected] | @ellenkorbes

Page 59: Title Text - files.gotocon.com · Their pre-commit workflow. The part of their day where code gets written. Who is this talk for? Their CI/CD pipelines. B uOt pnso stt unfef cneots

Recommended