Kubernets Helm - Okay so my cluster's up, how do I manage all the sh*t to run my apps?

Preview:

Citation preview

Okay so my cluster’s up, now how do I manage all the sh*t to run my apps?

HelmMike Splain

Lead DevOps Engineer at Barkly

@mikesplain

github.com/mikesplain

K8s at Barkly● Using since early 2015

● 5 K8s clusters

● 107 Instances across those clusters

● v1.4.9 (I know we’re behind :( )

Problem.● Once you’ve tweaked your cluster to be perfect… whats next?

● Make a manifest

● Make another manifest

● Make 100 more manifests

My App’s up and it works!

201How many manifests does Barkly have?

Problem.● Multiple environments

● Multiple consumers of the manifests

● CI/CD flow of manifests themselves

● Testing?

Helm“Helm is a tool for managing Kubernetes charts.

Charts are packages of pre-configured Kubernetes resources.”

chef cookbook/puppet module/ansible role - apt/yum/dnf + docker = helm chart

Helm● Simple

● Reusable

● Versioned

● Dependency management

● Linux & OSX

Helm Resources● helm.sh

● github.com/kubernetes/helm

● github.com/kubernetes/charts

● github.com/kubernetes/minikube (not required)

Getting started

$ brew install kubernetes-helm

Or grab prebuilt binaries on github

$ helm initCreating /Users/mike/.helmCreating /Users/mike/.helm/repositoryCreating /Users/mike/.helm/repository/cacheCreating /Users/mike/.helm/repository/localCreating /Users/mike/.helm/pluginsCreating /Users/mike/.helm/startersCreating /Users/mike/.helm/repository/repositories.yamlWriting to /Users/mike/.helm/repository/cache/stable-index.yaml$HELM_HOME has been configured at /Users/mike/.helm.Happy Helming!

Tiller:● Listening for incoming requests from the Helm client

● Combining a chart and configuration to build a release

● Installing charts into Kubernetes, and then tracking the subsequent release

● Upgrading and uninstalling charts by interacting with Kubernetes

● Data stored in configmaps

$ helm install --name failed-demo1 stable/jenkins

Local Helm

Kubernetes-charts.Storage.googleapis.com

Tiller in K8s Cluster

Adds custom configs

● mongodb

● mysql

● nginx-ingress

● nginx-lego

● odoo

● opencart

● openvpn

● orangehrm

● osclass

● owncloud

● phabricator

● phpbb

● postgresql

● prestashop

● influxdb

● jasperreports

● jenkins

● joomla

● kapacitor

● kube-lego

● kube2iam

● linkerd

● magento

● mariadb

● mediawiki

● memcached

● minecraft

● minio

● aws-cluster-autoscaler

● chaoskube

● chronograf

● cockroachdb

● concourse

● datadog

● dokuwiki

● drupal

● etcd-operator

● factorio

● gcloud-endpoints

● ghost

● gitlab-ce

● grafana

Current stable charts (57)● prometheus

● rabbitmq

● redis

● redmine

● sapho

● sensu

● spark

● spartakus

● spinnaker

● sumokube

● telegraf

● testlink

● traefik

● uchiwa

● wordpress

Lets try a few!