Slide 1

Slide 1 text

Highway To helm Michelle Noorali @michellenoorali

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

So What is this helm Thing?

Slide 7

Slide 7 text

● 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

Slide 8

Slide 8 text

● 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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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/

Slide 13

Slide 13 text

Helm In Action

Slide 14

Slide 14 text

Demo! $ helm init (—client-only) $ helm install docs/examples/alpine/ $ helm install docs/examples/alpine/ -v overrides.yaml $ kubectl get pods

Slide 15

Slide 15 text

$ helm list $ helm get manifest RELEASE $ helm get RELEASE $ helm delete RELEASE $ helm status RELEASE Demo!

Slide 16

Slide 16 text

Demo! $ helm create mychart $ ls mychart $ helm package mychart

Slide 17

Slide 17 text

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)

Slide 18

Slide 18 text

Demo! $ helm repo list $ helm repo remove kube-charts $ helm repo add kube-charts http://storage.googleapis.com/kubernetes-charts $ helm search alpine

Slide 19

Slide 19 text

Demo! $ helm fetch kubernetes-charts/alpine-0.1.0.tgz $ helm fetch kubernetes-charts/alpine-0.1.0.tgz --untar

Slide 20

Slide 20 text

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)

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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