SlideShare a Scribd company logo
Helm and the zen of managing complex
Kubernetes apps
Devopsdays Edinburgh 2017
Abhishek Chanda
@rony358
whoami
● Openstacker (formerly), Kubernaut, Pythonista and Rustacean
● Devops/backend/software engineer at DataSine
● Manages a few Kubernetes clusters on AWS
… and that’s how I bumped into Helm
Problem: deploying a Kubernetes app
… is hardly straightforward
● Multiple interacting components: Deployment, ConfigMap, Service etc.
● Dependencies
● No easy way to parameterize the manifests
○ CI/CD integration
Similar to installing applications on a Linux box
sudo apt install nginx
Solution: a cloud native package manager
Let’s call it Helm
● Single command application install on Kubernetes
● Template based configuration of manifests
○ Supports go text templating and Sprig extensions
● Reproducible installations
● Ecosystem of searchable and shareable packages
● Supports signing and verifying package integrity
Helm terms
● Chart: a set of things that define a complete application
○ Manifest templates, dependencies, post installation instructions
○ Stored in repositories (local or remote)
○ Packaged as a tgz archive
● Config: a set of configuration parameters for a given chart
○ Predefined or user-defined
○ Final config = predefined + user-defined + defaults
● Release: a configured and installed instance of a chart
○ Defined by manifests generated from templates using config
Helm architecture
● Client side CLI: helm
○ Search, configure, install and uninstall a chart
○ Local development: skeleton chart, debugging
○ Interacting with chart repositories
● Server: tiller
○ Runs as a Kubernetes service in the kube-system namespace
○ Manages release lifecycle
helm init --upgrade
Anatomy of a helm chart
● Chart.yaml has release metadata
● values.yaml has default values for config parameters
● requirements.yaml can be used to declare dependencies
○ Dependencies are vendored in the charts/ directory
● templates/ directory has templates for generating manifests
○ NOTES.txt has post-install usage notes
○ _helpers.tpl has template helper functions
● pre/post install, delete, upgrade, rollback hooks
Using helm
$ helm init gorest-chart
$ helm install gorest-chart/
$ helm install kubernetes-charts/nginx-ingress
$ helm --dry-run --debug gorest-chart/
$ helm list
$ helm delete <release_name> --purge
Writing charts
● Templating
● Debug and deploy
● Rinse and repeat
Chart repositories
● Stores charts
○ Charts as tgz archives
○ An index.yaml file has metadata about charts (generated by helm)
○ Fronted by a HTTP server
○ Useful for private chart hosting
$ helm repo list
$ helm repo add my-charts 
http://mystorage.mycompany.io
$ cat gorest-chart/requirements.yaml
dependencies:
- name: postgresql
version: "9.6"
repository: "@my-charts"
Standard repositories
● https://github.com/kubernetes/charts
○ Stable: charts that meet a set of requirements and are widely used
○ Incubator: staging for stable
● https://kubeapps.com/
○ Built on the monocular web UI for helm chart repositories
Also many others from different organizations
Helm plugins
● Extend functionality without modifying the core
○ Plugins exposed as a subcommand for helm
● Can be in any language as long as it produces an executable
● Must follow a set of guidelines to integrate with the core
Useful for debugging charts: https://github.com/technosophos/helm-template
Anatomy of a plugin
● Located in $(helm home)/plugins
● Plugin.yaml has metadata
○ name is the helm subcommand
○ command is the command to execute
on invoking the plugin
● Helm also passes some
env vars to the plugin
Demo!
● We have an existing cluster running an app
https://github.com/achanda/gorest
● Chart is located in the same directory
https://github.com/achanda/gorest/tree/master/gorest-chart
● We will build a new image locally and push it up to GCR
● We will use Helm to update the image tag of our release
○ Easily automatable in a CI system
helm upgrade <name> --set image.tag=0.2 gorest-chart/
Questions?

More Related Content

PDF
Cephfs - Red Hat Openstack and Ceph meetup, Pune 28th november 2015
PDF
OpenNebulaConf2017EU: IPP Cloud by Jimmy Goffaux, IPPON
PDF
Creating an open source load balancer for S3
PPTX
Ceph, storage cluster to go exabyte and beyond
PPTX
Apache Cassandra Lunch #52: Airflow and Cassandra for Cluster Management
PDF
Search engine based on Elasticsearch
PDF
Dynamic infrastructure for development
PDF
OpenNebula Conf 2014: Expanding OpenNebula´s support for Cloud Bursting - Emm...
Cephfs - Red Hat Openstack and Ceph meetup, Pune 28th november 2015
OpenNebulaConf2017EU: IPP Cloud by Jimmy Goffaux, IPPON
Creating an open source load balancer for S3
Ceph, storage cluster to go exabyte and beyond
Apache Cassandra Lunch #52: Airflow and Cassandra for Cluster Management
Search engine based on Elasticsearch
Dynamic infrastructure for development
OpenNebula Conf 2014: Expanding OpenNebula´s support for Cloud Bursting - Emm...

What's hot (20)

PDF
AWS ElasticBeanstalk and Docker
PDF
Disaster Recovery and Ceph Block Storage: Introducing Multi-Site Mirroring
ODP
GlusterFS Containers
PDF
OpenNebula Conf 2014 | Using Ceph to provide scalable storage for OpenNebula ...
ODP
Persistent Storage in Openshift using GlusterFS
PDF
Ceph Block Devices: A Deep Dive
PDF
helm, the real world
PDF
Thierry carrez openly developing open infrastructure
PDF
Peanut Butter and jelly: Mapping the deep Integration between Ceph and OpenStack
PDF
OpenNebula Conf 2014 | OpenNebula as Open Replacement of vCloud by Javier Fontan
PPTX
Univa and SUSE at SC17: Scaling Machine Learning for SUSE Linux Containers, S...
PDF
OpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan Horacek
PPTX
Data Engineer's Lunch #46: Node.js and API calls
PDF
OpenNebula Conf 2014 | Cloud Automation for OpenNebula by Kishorekumar Neelam...
PDF
OpenNebula Conf: 2014 | Lightning talk: Managing Docker Containers with OpenN...
PDF
Multiple Sites and Disaster Recovery with Ceph: Andrew Hatfield, Red Hat
PDF
OpenNebula Conf 2014 | Bootstrapping a virtual infrastructure using OpenNebul...
PDF
When disaster strikes the cloud: Who, what, when, where and how to recover
PDF
OpenNebula Conf 2014 | Understanding the OpenNebula Model for Cloud Provision...
PDF
OpenNebula Conf 2014 | Building Hybrid Cloud Federated Environments with Open...
AWS ElasticBeanstalk and Docker
Disaster Recovery and Ceph Block Storage: Introducing Multi-Site Mirroring
GlusterFS Containers
OpenNebula Conf 2014 | Using Ceph to provide scalable storage for OpenNebula ...
Persistent Storage in Openshift using GlusterFS
Ceph Block Devices: A Deep Dive
helm, the real world
Thierry carrez openly developing open infrastructure
Peanut Butter and jelly: Mapping the deep Integration between Ceph and OpenStack
OpenNebula Conf 2014 | OpenNebula as Open Replacement of vCloud by Javier Fontan
Univa and SUSE at SC17: Scaling Machine Learning for SUSE Linux Containers, S...
OpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan Horacek
Data Engineer's Lunch #46: Node.js and API calls
OpenNebula Conf 2014 | Cloud Automation for OpenNebula by Kishorekumar Neelam...
OpenNebula Conf: 2014 | Lightning talk: Managing Docker Containers with OpenN...
Multiple Sites and Disaster Recovery with Ceph: Andrew Hatfield, Red Hat
OpenNebula Conf 2014 | Bootstrapping a virtual infrastructure using OpenNebul...
When disaster strikes the cloud: Who, what, when, where and how to recover
OpenNebula Conf 2014 | Understanding the OpenNebula Model for Cloud Provision...
OpenNebula Conf 2014 | Building Hybrid Cloud Federated Environments with Open...
Ad

Similar to Helm and the zen of managing complex Kubernetes apps (20)

PDF
helm101.pdf
PPTX
Helm.pptx
PDF
Helm - Package Manager for Kubernetes
PDF
Helm - Application deployment management for Kubernetes
PPTX
Leveraging Helm to manage Deployments on Kubernetes
PDF
How Helm, The Package Manager For Kubernetes, Works
PDF
Kubernetes Application Deployment with Helm - A beginner Guide!
PDF
Helm chart-introduction
PPTX
Manage Kubernetes application complexity with Helm
PDF
learn Helm 3 for kuberenetes
PPTX
DevOps: Kubernetes + Helm with Azure
PDF
Helm – The package manager for Kubernetes
PDF
Helm - the Better Way to Deploy on Kubernetes - Reinhard Nägele - Codemotion...
PDF
Helm Charts Security 101
PPTX
Kubernetes Helm: Why It Matters
PDF
PPTX
Introduction to Helm
PDF
Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)
PDF
Microservices are ‘easy’ dependencies are hard
PPTX
Best Practices with Azure & Kubernetes
helm101.pdf
Helm.pptx
Helm - Package Manager for Kubernetes
Helm - Application deployment management for Kubernetes
Leveraging Helm to manage Deployments on Kubernetes
How Helm, The Package Manager For Kubernetes, Works
Kubernetes Application Deployment with Helm - A beginner Guide!
Helm chart-introduction
Manage Kubernetes application complexity with Helm
learn Helm 3 for kuberenetes
DevOps: Kubernetes + Helm with Azure
Helm – The package manager for Kubernetes
Helm - the Better Way to Deploy on Kubernetes - Reinhard Nägele - Codemotion...
Helm Charts Security 101
Kubernetes Helm: Why It Matters
Introduction to Helm
Kubernetes Helm (Boulder Kubernetes Meetup, June 2016)
Microservices are ‘easy’ dependencies are hard
Best Practices with Azure & Kubernetes
Ad

Recently uploaded (20)

PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PPTX
A Presentation on Artificial Intelligence
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Approach and Philosophy of On baking technology
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Electronic commerce courselecture one. Pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Review of recent advances in non-invasive hemoglobin estimation
Building Integrated photovoltaic BIPV_UPV.pdf
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
A Presentation on Artificial Intelligence
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Spectral efficient network and resource selection model in 5G networks
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Chapter 3 Spatial Domain Image Processing.pdf
Unlocking AI with Model Context Protocol (MCP)
NewMind AI Monthly Chronicles - July 2025
Diabetes mellitus diagnosis method based random forest with bat algorithm
Approach and Philosophy of On baking technology
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Network Security Unit 5.pdf for BCA BBA.
Electronic commerce courselecture one. Pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
Encapsulation_ Review paper, used for researhc scholars
The Rise and Fall of 3GPP – Time for a Sabbatical?
Review of recent advances in non-invasive hemoglobin estimation

Helm and the zen of managing complex Kubernetes apps

  • 1. Helm and the zen of managing complex Kubernetes apps Devopsdays Edinburgh 2017 Abhishek Chanda @rony358
  • 2. whoami ● Openstacker (formerly), Kubernaut, Pythonista and Rustacean ● Devops/backend/software engineer at DataSine ● Manages a few Kubernetes clusters on AWS … and that’s how I bumped into Helm
  • 3. Problem: deploying a Kubernetes app … is hardly straightforward ● Multiple interacting components: Deployment, ConfigMap, Service etc. ● Dependencies ● No easy way to parameterize the manifests ○ CI/CD integration Similar to installing applications on a Linux box sudo apt install nginx
  • 4. Solution: a cloud native package manager Let’s call it Helm ● Single command application install on Kubernetes ● Template based configuration of manifests ○ Supports go text templating and Sprig extensions ● Reproducible installations ● Ecosystem of searchable and shareable packages ● Supports signing and verifying package integrity
  • 5. Helm terms ● Chart: a set of things that define a complete application ○ Manifest templates, dependencies, post installation instructions ○ Stored in repositories (local or remote) ○ Packaged as a tgz archive ● Config: a set of configuration parameters for a given chart ○ Predefined or user-defined ○ Final config = predefined + user-defined + defaults ● Release: a configured and installed instance of a chart ○ Defined by manifests generated from templates using config
  • 6. Helm architecture ● Client side CLI: helm ○ Search, configure, install and uninstall a chart ○ Local development: skeleton chart, debugging ○ Interacting with chart repositories ● Server: tiller ○ Runs as a Kubernetes service in the kube-system namespace ○ Manages release lifecycle helm init --upgrade
  • 7. Anatomy of a helm chart ● Chart.yaml has release metadata ● values.yaml has default values for config parameters ● requirements.yaml can be used to declare dependencies ○ Dependencies are vendored in the charts/ directory ● templates/ directory has templates for generating manifests ○ NOTES.txt has post-install usage notes ○ _helpers.tpl has template helper functions ● pre/post install, delete, upgrade, rollback hooks
  • 8. Using helm $ helm init gorest-chart $ helm install gorest-chart/ $ helm install kubernetes-charts/nginx-ingress $ helm --dry-run --debug gorest-chart/ $ helm list $ helm delete <release_name> --purge
  • 9. Writing charts ● Templating ● Debug and deploy ● Rinse and repeat
  • 10. Chart repositories ● Stores charts ○ Charts as tgz archives ○ An index.yaml file has metadata about charts (generated by helm) ○ Fronted by a HTTP server ○ Useful for private chart hosting $ helm repo list $ helm repo add my-charts http://mystorage.mycompany.io $ cat gorest-chart/requirements.yaml dependencies: - name: postgresql version: "9.6" repository: "@my-charts"
  • 11. Standard repositories ● https://github.com/kubernetes/charts ○ Stable: charts that meet a set of requirements and are widely used ○ Incubator: staging for stable ● https://kubeapps.com/ ○ Built on the monocular web UI for helm chart repositories Also many others from different organizations
  • 12. Helm plugins ● Extend functionality without modifying the core ○ Plugins exposed as a subcommand for helm ● Can be in any language as long as it produces an executable ● Must follow a set of guidelines to integrate with the core Useful for debugging charts: https://github.com/technosophos/helm-template
  • 13. Anatomy of a plugin ● Located in $(helm home)/plugins ● Plugin.yaml has metadata ○ name is the helm subcommand ○ command is the command to execute on invoking the plugin ● Helm also passes some env vars to the plugin
  • 14. Demo! ● We have an existing cluster running an app https://github.com/achanda/gorest ● Chart is located in the same directory https://github.com/achanda/gorest/tree/master/gorest-chart ● We will build a new image locally and push it up to GCR ● We will use Helm to update the image tag of our release ○ Easily automatable in a CI system helm upgrade <name> --set image.tag=0.2 gorest-chart/

Editor's Notes

  • #4: Ask how many people use Kubernetes? In production? Helm?
  • #15: Show multple versions of image in GCR Upgrade release helm upgrade <name> --set image.tag=0.2 gorest-chart/ Show version update in kubectl describe po <name> Rollback helm rollback <name> <revision> Show version update