Helm Charts

Charts describe a set of Kubernetes resources – e.g. a full web app stack with HTTP servers, databases, caches, etc.

requirements.yamldefines dependencies using:

  • name
  • version
  • repository

Tags: like Ansible

Condition: enabled / disabled – always override tags.

See https://github.com/helm/helm/blob/master/docs/charts.md

 

Manage charts with helm:

  • create – creates chart
  • package – packages
  • lint – checks formatting

 

Getting started with Helm:

1. check kubectl config – i.e. using local minikube

kubectl config view | grep current

2. start helm

helm init

https://medium.com/@anthonyganga/getting-started-with-helm-tiller-in-kubernetes-part-one-3250aa99c6ac

 

Installing MySQL as a Helm Chart

Running helm install stable/mysql

(which uses: https://github.com/helm/charts/tree/master/stable/mysql )

Let’s test we can connect to MySQL.

From the output, let’s get the MySQL password:

kubectl get secret --namespace default queenly-seahorse-mysql -o jsonpath="{.data.mysql-root-password}" | base64 --decode; echo

Copy.

Note: you could have got the pod name with:

kubectl get pods

Now exec into MySQL with:

kubectl exec -it queenly-seahorse-mysql-6dc964999c-h4w54 bash

Install MySQL client:

apt-get update && apt-get install mysql-client -y --force-yes

and connect with:

mysql -h localhost -p

 

 

More on:

  • kubectl commands here: Kubernetes: kubectl
  • MySQL Notes here: https://github.com/helm/charts/blob/master/stable/mysql/templates/NOTES.txt

Installing WordPress as a Helm Chart

List with

helm list

and delete with

helm delete my-release

https://github.com/helm/charts/tree/master/stable/wordpress

 

Errors

Error: no available release name found

https://github.com/helm/helm/issues/3055

also

https://stackoverflow.com/questions/43499971/helm-error-no-available-release-name-found/43513182

 

Error: Get https://10.96.0.1:443/api/v1/namespaces/kube-system/configmaps?labelSelector=OWNER%!D(MISSING)TILLER: dial tcp 10.96.0.1:443: i/o timeout

When you do a helm list

From https://github.com/helm/helm/issues/3055#issuecomment-385371327

suggests

kubectl delete the tiller service and deployment.)

So: kubectl delete tiller-deploy-6fd8d857bc-fp5s2
error: resource(s) were provided, but no name, label selector, or –all flag specified

kubectl list
Error: unknown command “list” for “kubectl”

This suggests deleting tiller using

helm reset

but this gives:

 

https://stackoverflow.com/questions/47583821/how-to-delete-tiller-from-kubernetes-cluster

and helm ls

Another, not very helpful, issue on why you can’t delete tiller:

https://github.com/helm/helm/issues/3536

Checking tiller:

kubectl get deploy -n kube-system

 

To see pods in kube-system

kubectl get pods –namespace kube-system

e.g.

tiller-deploy-6fd8d857bc-fp5s2 1/1 Running 7 8d

 

Notes:

Tiller namespaces and RBAC

Namespaces are for different environments. E.g. production, staging.

https://medium.com/@amimahloof/how-to-setup-helm-and-tiller-with-rbac-and-namespaces-34bf27f7d3c3

RBAC and Service Accounts: 

https://docs.helm.sh/using_helm/#securing-your-helm-installation

 

Further reading

Use ksonnet to generate Kubernetes configurations from Helm Charts

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *