Slide 1

Slide 1 text

Highway to Helm Stairway to Kubernetes By Michelle Noorali @michellenoorali

Slide 2

Slide 2 text

Hello, It’s me.

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

A Platform as a Service Company

Slide 5

Slide 5 text

Platform as a service (PaaS)

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Deis Workflow Kubernetes-native PaaS Kubernetes package manager Steward Kubernetes-native service broker

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

Dearest human, Clear commit messages are the key to life. Sincerely, Michelle from Microsoft

Slide 10

Slide 10 text

We need a tool to manage a group of Kubernetes resources as one unit.

Slide 11

Slide 11 text

Helm, a package manager for Kubernetes

Slide 12

Slide 12 text

Charts ● Are application definitions ● Consist of ○ Metadata ○ Kubernetes resource definitions ○ Configuration ○ Documentation ● Live in chart repositories

Slide 13

Slide 13 text

Helm: 3 Core Concepts ● Chart - expert built recipe for installing an application ● Values - user supplied configuration ● Release - instance of Chart + Values that get deployed in Kubernetes

Slide 14

Slide 14 text

Prerequisites ● Download Helm & put it in your path ● Grab a running Kubernetes cluster

Slide 15

Slide 15 text

$ helm init ● Configures your local environment ● Creates a pod called Tiller in your cluster

Slide 16

Slide 16 text

Tiller, it’s a thriller ● Server-side component ● Lives his life inside k8s cluster as a pod ● Creates & manages releases in your cluster ○ Release = installation of a Chart Kubernetes Tiller Helm Client gRPC

Slide 17

Slide 17 text

Recap ● Helm is the client ● Tiller is the server ● Kubernetes is the target platform & data storage ● Chart + Values = Release

Slide 18

Slide 18 text

Demos: ● Init in Action ● Install a chart ● Upgrade a release ● Delete a release

Slide 19

Slide 19 text

Where can I get a Helm like that? ● Homebrew brew install kubernetes-helm ● Github github.com/kubernetes/helm/releases

Slide 20

Slide 20 text

If you like, then you gotta put a chart on it

Slide 21

Slide 21 text

$ helm create

Slide 22

Slide 22 text

Chart Structure myapp ├── Chart.yaml ├── README.md ├── charts ├── templates └── values.yaml

Slide 23

Slide 23 text

Templates myapp ├── Chart.yaml ├── README.md ├── charts ├── templates │ ├── deployment.yaml │ └── svc.yaml └── values.yaml

Slide 24

Slide 24 text

Configuration myapp ├── Chart.yaml ├── README.md ├── charts ├── templates └── values.yaml └── requirements.yaml values.yaml image: mycompany/myapp:1.0.0 imagePullPolicy: IfNotPresent service: port: 80 apiVersion: extensions/v1beta1 kind: Deployment spec: template: spec: containers: - name: {{ .Chart.Name }} image: "{{ .Values.image }}" imagePullPolicy: {{ .Values.imagePullPolicy }} ports: - containerPort: {{ .Values.service.port }} templates/deployment.yaml

Slide 25

Slide 25 text

Configuration values.yaml image: mycompany/myapp:1.0.0 imagePullPolicy: IfNotPresent service: port: 80 Configure values on command line with the --set flag $ helm install --set service.port=8080 myapp/ Or pass in a new values file on command line with the -f flag $ helm install -f myvalues.yaml myapp

Slide 26

Slide 26 text

Dependencies myapp ├── Chart.yaml ├── README.md ├── charts ├── templates └── values.yaml └── requirements.yaml dependencies: - name: mariadb version: 0.5.2 repository: http://storage.googleapis.com/kubernetes-charts requirements.yaml

Slide 27

Slide 27 text

Documentation myapp ├── Chart.yaml ├── README.md ├── charts ├── templates └── NOTES.txt └── values.yaml

Slide 28

Slide 28 text

Metadata myapp ├── Chart.yaml ├── README.md ├── charts ├── templates └── values.yaml └── requirements.yaml

Slide 29

Slide 29 text

Chart repositories ● Has an index.yaml file ● Any web server accessible via http(s)

Slide 30

Slide 30 text

Official Kubernetes Charts Repository ● Lives at github.com/kubernetes/charts ● Stable & Incubator repositories ● Over 70 stable charts ● ~ 9 incubator charts ● Lots of PRs

Slide 31

Slide 31 text

KubeApps.com ● github.com/helm/monocular

Slide 32

Slide 32 text

Helm is a piece of the puzzle

Slide 33

Slide 33 text

Get Involved

Slide 34

Slide 34 text

Kubernetes Community ● Special Interest Groups ○ Meetings are recorded and on youtube ● github.com/kubernetes/community ● Slack.k8s.io ● Helm is under the SIG-Apps umbrella

Slide 35

Slide 35 text

Helm Community ● 149 contributors ● Kubernetes slack channels: #helm-users, #helm-dev ● Weekly updates and demos at SIG Apps (recorded & available on youtube) ● Documentation coming soon on http://helm.sh

Slide 36

Slide 36 text

Thank you Container Camp!!! Sincerely, Michelle from Microsoft

Slide 37

Slide 37 text

Helpful Links ● ● ● ● ● ●