Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kubernetes application packaging from first pri...

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Kubernetes application packaging from first principles

Avatar for Tamal Saha

Tamal Saha

April 17, 2018
Tweet

More Decks by Tamal Saha

Other Decks in Programming

Transcript

  1. Kubernetes application packaging from first principles Tamal Saha AppsCode Inc.,

    XGoogler Email: [email protected] Github: @tamalsaha Twitter: @tsaha Kubernetes Slack: @tamal
  2. Rewrite Tiller as a TPR controller (Nov 2016) - https://github.com/appscode/tillerc

    - This project is abandoned because Tiller's authorization requirements can't be implemented using a TPR controller. - https://github.com/kubernetes/helm/issues/1586#issuecomme nt-277666828 @tsaha @tamal
  3. Currently - Swift - Ajax friendly Helm Tiller Proxy -

    Chartify - Generate Helm Charts from Kubernetes objects - Publish charts: https://github.com/appscode/charts - Voyager - KubeDB - Kubed - Searchlight - Stash - Swift - g2 @tsaha @tamal
  4. 2 personas - Package consumer - Package author/publisher (sometimes both

    personas are held by same person) @tsaha @tamal
  5. Chart Consumer - Great UX for trying new apps. -

    Needs lot of ceremony for internal apps. - Requires reinventing the developer workflow? - Multiple sources of truth? - `kube blame`: Can you tell who actually deployed that release? @tsaha @tamal
  6. Chart Consumer - Ordering deployments - Are you backing up

    your release history? - YAML + GO template (thanks for `helm template`) @tsaha @tamal
  7. Chart Publisher - Chart version is not same as your

    app version . - Slow / unpredictable review process for stable charts - Constantly changing style guides (`{{- define "chart.name" -}}` anyone?) @tsaha @tamal
  8. - Simple to get started (kubectl apply -f app.yaml) -

    Simple to learn (not another family of toolchains) - Simple to share (git repos) - Simple to branch/fork - Flexible enough to handle complex deployments - No new system of record, no new system to secure @tsaha @tamal
  9. Kube blame - `pack up` can tag all the objects

    with git commit hash - Collect Kubernetes audit log - Now you know who deployed what change. @tsaha @tamal
  10. Additional Reading - Simple Kubernetes Templating - Declarative application management

    in Kubernetes - https://github.com/kubernetes-sigs/application - https://github.com/kubernetes/kubectl/tree/master/cmd/kustom ize - So you want to write a package manager @tsaha @tamal