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

Highway to Helm

Highway to Helm

This is an overview of the history of the helm project, helm concepts, and a demo of some helm commands. The first version of helm is now called helm-classic and can be found at github.com/helm/helm-classic. The current helm project can be found at github.com/kubernetes/helm.

The recording of this presentation can be found here (after the awesome overview of kubernetes 1.3): https://www.youtube.com/watch?v=SI4e_ePGSHU&feature=youtu.be

Michelle Noorali

July 21, 2016
Tweet

More Decks by Michelle Noorali

Other Decks in Technology

Transcript

  1. Highway To helm Michelle Noorali @michellenoorali

  2. Who am i • Core contributor on the kubernetes/helm project

    • Co-lead of Kubernetes Special Interest Group for Applications (SIG-Apps) • Primarily a Go developer but lots of Ruby previously • Live in Boulder, CO ◦ Lived in San Francisco before that • I like coffee, anything that contains goat cheese, pretending to be outdoorsy • I hate typing in $GOPATH/src/github.com/…. So I have a lot of bash aliases
  3. What is deis • Deis/Dais = “raised surface”, “Platform” (Pronounced

    “DAY-iss”) • We build tools to help manage and deploy apps easily on Kubernetes • Deis Workflow is an open source PaaS on Kubernetes ◦ Consists of multiple components ▪ Can be installed together or individually ◦ Heroku inspired workflow ◦ Developer self-service • Helm = a way to manage and install applications on Kubernetes ◦ Use it to install Deis Workflow
  4. The Problem: • Needed a way to repeatedly install deis

    workflow onto kubernetes • Wanted an easier way to manage kubernetes manifests • Wanted to be able to tweak the resource definition slightly for different dev environments
  5. None
  6. So What is this helm Thing?

  7. • Package = “Chart” ◦ Chart is a bundle of

    information necessary to create an instance of a Kubernetes application ◦ Charts stored in a chart repository • Installer for Deis Workflow • Added support for Go templates Helm = Kubernetes package manager
  8. • Large uptake in the community • Lots of community

    support and involvement • Grew into… ◦ A way to share information about running common applications and services inside of Kubernetes ◦ A great and simple way to onboard newcomers onto Kubernetes • Limitations: ◦ No in-cluster component ◦ Every helm client was its own island Helm History October 2015 Started the project November 2015 Debut @ KubeCon January 2016 Deis + Google July 2016 Alpha-2 release
  9. Kubernetes/Helm • Make it easy to install & configure apps

    • Minimize chart development overhead • Make collaboration easy • Require little/less from operations • So you can have more time to... Check it out at github.com/kubernetes/helm
  10. Helm + Tiller = Kubernetes/Helm • Helm is the client

    • Tiller is the server ◦ Lives his life inside Kubernetes as a pod • Kubernetes is the target platform & data storage
  11. 3 main concepts • The chart is the expert-built recipe

    for installing an application • The values are the user-supplied configuration that is merged into the chart • The release is the instance that runs inside the cluster, a combination of the chart and values deployed into Kubernetes
  12. Charts - all grown up • Chart.yaml contains metadata •

    Values.yaml consists of overrides for templates • Templates/ dir instead of Manifests/ • Chart dependencies are vendored into a chart by the chart developer (under the charts/ dir) ◦ Can be configured furthered using the values file ▪ I.e. dependencies can be turned on or off ◦ Deterministic build ◦ Charts are immutable on the server See examples in github.com/kubernetes/helm/docs/examples/
  13. Helm In Action

  14. Demo! $ helm init (—client-only) $ helm install docs/examples/alpine/ $

    helm install docs/examples/alpine/ -v overrides.yaml $ kubectl get pods
  15. $ helm list $ helm get manifest RELEASE $ helm

    get RELEASE $ helm delete RELEASE $ helm status RELEASE Demo!
  16. Demo! $ helm create mychart $ ls mychart $ helm

    package mychart
  17. Diagram of Chart repo in relation to helm &tiller Chart

    Repository Stores charts packaged charts Contains an index of all the charts Helm Client Add repositories to the helm client 1. Manages charts 2. Communicates with server Tiller Kubernetes Kube API gRPC 1. Render Charts 2. Deploy 3. Interface for state tracking Land of magical wizardry HTTP(s)
  18. Demo! $ helm repo list $ helm repo remove kube-charts

    $ helm repo add kube-charts http://storage.googleapis.com/kubernetes-charts $ helm search alpine
  19. Demo! $ helm fetch kubernetes-charts/alpine-0.1.0.tgz $ helm fetch kubernetes-charts/alpine-0.1.0.tgz --untar

  20. Helm is (recap) • A way to create and manage

    kubernetes-native applications • Install & manage “Charts” ◦ “Charts” == groups of kubernetes resource + metadata • Helm client is a command line tool • It has a in-cluster component called “Tiller” ◦ Tiller manages “releases” ▪ A “release” == instance of an installed Chart • Find helm @ github.com/kubernetes/helm • Part of Cloud Native Computing Foundation (CNCF)
  21. Roadmap • Just added hooks ◦ pre/post install, upgrade, delete

    • Ability to upgrade releases with a new version of a chart • Store releases in ConfigMaps • Getting the Kubernetes/Charts repo into shape and loaded with charts
  22. We don’t bite. HI! Join our channel On slack: Kubernetes/#Helm

    Join our public dev meetings on Thursdays 9:30 - 10am pDT on zoom Feel free to ask questions and submit feedback
  23. Thank you! Twitter: @michellenoorali, @HelmPack, @OpenDeis Kubernetes slack: #helm Helm

    public developer meetings 9:30am - 10am PDT on Thursdays SIG-Apps public meetings 9am - 9:30am PDT on Wednesdays