![Page 1: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/1.jpg)
Kubernetes HelmThe Package Manager for Kubernetes
![Page 2: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/2.jpg)
![Page 3: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/3.jpg)
Life Without Helm (My Life Last June)
● Write Kubernetes manifests by hand● Do this every time you need to release anything● Figure out your own sharing● Tweak resources by hand● Use kubectl to manage these
![Page 4: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/4.jpg)
Kubernetes Helm
● Collaboration with Google, Bitnami, Deis, others
● The successor of Deis’ “Helm Classic”● Two parts:
○ Helm client○ Tiller server
![Page 5: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/5.jpg)
Helm’s Core Values
1. Installing resources in Kubernetes should be easy (like Apt/Yum/Homebrew)
2. Teams should be able to collaborate3. Releases should be reproducible4. Packages should be shareable
![Page 6: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/6.jpg)
Helm Client Tiller Server
1. Manage charts2. Communicate with
server
gRPC
1. Render charts2. Deploy3. Interface for
state tracking
Basic Architecture
K8S API ServerREST
![Page 7: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/7.jpg)
Charts, Repositories, ReleasesChart: Think operating system package. A bundle of Kubernetes resource data.
Repository: A collection of released charts. Think npm, Ubuntu repository, etc.
Release: A chart instance is loaded into Kubernetes, it then becomes a release. (Same chart can be installed several times into the same cluster. Each will have its own release.)
![Page 8: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/8.jpg)
Using Helm
![Page 9: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/9.jpg)
Main Helm Commands
● Init: Set up Helm for the first time (helm init)● Install: Install a chart (helm install alpine)● Get, Status, List: Find out about charts (helm list)● Repo Add, List, Remove, Index: Manage your helm repositories● Search: Search repos for charts● Create, Package: Create and package new charts
![Page 10: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/10.jpg)
Installing a Chart (Demo)
![Page 11: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/11.jpg)
Helm Charts
![Page 12: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/12.jpg)
The Chart
![Page 13: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/13.jpg)
Chart.yaml
![Page 14: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/14.jpg)
Chart.yaml● Simple YAML● About the chart● Used for…
○ Searching○ Official name○ Version information○ Finding the source
![Page 15: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/15.jpg)
Dependencies
![Page 16: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/16.jpg)
Helm Dependencies● Immutability● Nested● Versioned● “Vendored” MyApp
Say I start with an app….
...and it has some dependencies.
![Page 17: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/17.jpg)
Helm Dependencies
MyApp
MySQL
Redis
Reverse Proxy
![Page 18: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/18.jpg)
MyApp Dependencies
![Page 19: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/19.jpg)
Templates
![Page 20: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/20.jpg)
Helm Templates● The Go Template language ({{.foo | bar}})● Simple control structures (looping, conditionals, nesting)● 50+ add-on functions● Compile phase, execution phase
![Page 21: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/21.jpg)
Templates
![Page 22: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/22.jpg)
So how do we get values into templates?
![Page 23: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/23.jpg)
Values
![Page 24: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/24.jpg)
Values.yaml
● Specify values that should be injected into templates● Simple YAML with “namespaces”● Each (nested) chart can have its own values.yaml file● You can specify overrides externally:
helm install -f myvalues.yaml yourchart
![Page 25: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/25.jpg)
values.yaml
Global
Redis scope
![Page 26: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/26.jpg)
values.yamlvalues.yaml
templates/rc.yaml
![Page 27: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/27.jpg)
About Helm● http://github.com/kubernetes/helm● Part of CNCF● Contributions from around a dozen companies (plus individuals)● Roadmap in a nutshell:
○ Current: Helm 2.0.0-Alpha.1○ Coming Soon: Alpha.2○ “Light production use” by Beta.1○ Production ready by 2.0.0
![Page 28: Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)](https://reader034.vdocuments.pub/reader034/viewer/2022051101/58f9b365760da3da068bd5b2/html5/thumbnails/28.jpg)
Questions?