helm-fest is about deploying a bunch of useful stuff on kubernetes using helm.
This walkthrough was developed by using the kubernetes cluster provided by https://github.com/deepshore/kubernetes-vagrant-for-dummies.
The following is required:
- a kubernetes cluster
- kubectl
- helm
Check if a cluster is available:
kubectl get nodes
Add repo for kube-prometheus-stack:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
Add repos for subcharts:
helm repo add stable https://charts.helm.sh/stable
helm repo add grafana https://grafana.github.io/helm-charts
Update repos:
helm repo update
Create namespace:
kubectl create namespace monitoring
Install chart:
helm install -n monitoring kps prometheus-community/kube-prometheus-stack -f values/values-monitoring.yaml
Check deployment:
kubectl -n monitoring get all
Access Grafana:
export NODE_IP=$(kubectl get nodes -o jsonpath="{.items[0].status.addresses[0].address}")
export NODE_PORT=$(kubectl get --namespace monitoring -o jsonpath="{.spec.ports[0].nodePort}" services kps-grafana)
echo "http://${NODE_IP}:${NODE_PORT}"
Get the code of the chart:
git clone https://github.com/kubernetes/dashboard
Add repos for subcharts:
helm repo add stable https://charts.helm.sh/stable
Create namespace:
kubectl create namespace dashboard
Create a service account with clusterrole cluster-admin:
kubectl -n dashboard create sa dashboard-admin
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=dashboard:dashboard-admin
Build dependencies:
helm dependency build dashboard/aio/deploy/helm-chart/kubernetes-dashboard/
Install chart:
helm -n dashboard install kubernetes-dashboard dashboard/aio/deploy/helm-chart/kubernetes-dashboard/ -f values/values-dashboard.yaml
Access dashboard:
export NODE_PORT=$(kubectl get -n dashboard -o jsonpath="{.spec.ports[0].nodePort}" services kubernetes-dashboard)
export NODE_IP=$(kubectl get nodes -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT/
Get the code of the chart:
git clone https://github.com/bitnami/charts.git
Add repos for subcharts:
helm repo add bitnami https://charts.bitnami.com/bitnami
Create namespace:
kubectl create namespace postgresql
Build dependencies:
helm dependency build charts/bitnami/postgresql
Package chart:
helm package charts/bitnami/postgresql
Install chart:
helm -n postgresql install postgresql postgresql-10.2.0.tgz -f values/values-postgresql.yaml
Check if database is running:
kubectl -n postgresql get all
For this tutorial the following chart versions were used:
- https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack: 12.8.0
- https://github.com/kubernetes/dashboard/tree/master/aio/deploy/helm-chart/kubernetes-dashboard: 3.0.2
- https://github.com/bitnami/charts/tree/master/bitnami/postgresql: 10.2.0
Changes were made to the following values.
kube-prometheus-stack:
- grafana.service.type: NodePort
- grafana.service.nodePort: 30030
- prometheusOperator.tls.enabled: false
- prometheusOperator.admissionWebhooks.enabled: false
kubernetes-dashboard:
- extraEnv[0].name: enable-insecure-login
- extraEnv[0].value: 'true'
- protocolHttp: true
- service.type: NodePort
- service.nodePort: 30443
- rbac.create: false
- serviceAccount.create: false
- serviceAccount.name: dashboard-admin
postgresql:
- service.type: NodePort
- service.nodePort: 30432
- persistence.enabled: false