Kubernetes helm chart notes
Links: k8s/Azure , k8s/Monitoring , k8s/helm/HelmV2ToV3 , https://lzone.de/blog/Helm-Best-Practices , encrypt secrets, k8s/helm/secrets
Helm - create own chart
kubectl create namespace <NS>
helm -n <NS> create <Name> <chart-name>
helm -n <Ns> list
helm -n <NS> uninstall <Name>
Helm 2022
find charts @ https://artifacthub.io/packages/helm/
e.g. jenkins
helm repo add bitnami https://charts.bitnami.com/bitnami helm repo add https://artifacthub.io/packages/helm/jenkinsci/jenkins helm repo update helm search repo jenkins kubectl create namespace jenkins # namespace/jenkins created helm install jenkins jenkins/jenkins -n jenkins NOTES: 1. Get your 'admin' user password by running: kubectl exec --namespace jenkins -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo 2. Get the Jenkins URL to visit by running these commands in the same shell: echo http://127.0.0.1:8080 kubectl --namespace jenkins port-forward svc/jenkins 8080:8080
Helm3 2020-04
- On local chart (main deployment of all components)
- helm repo index .
- This index's charts under ./charts and create a new ./index.yam
helm repo add stable https://kubernetes-charts.storage.googleapis.com/
- helm repo add
- helm search repo rabbitmq
- helm repo index .
Helm setup 2020-01
- Create a dir and add Chart.yaml with version and maintainer.
- Create requirements.yaml file with external charts needed
search for versions with $ helm search -l stable/rabbitmq-ha
Install local charts from google with $ helm dependency update
Verify with $ helm dependency list
Install 2019-03
- Ran official curl, and get_helm, all fine
- When deploying chart got an error, tiller not allowed to create namespaces.
Fixed with command belown and helm init --upgrade
kubectl create serviceaccount --namespace kube-system tiller # serviceaccount "tiller" created kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller # clusterrolebinding "tiller-cluster-rule" created kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}' # deployment "tiller-deploy" patched
201903 add ingress and static ip
Get k8s nodeResourceGroup grom gui or with
az aks show --resource-group <rgK8S> --name <clusterName> --query nodeResourceGroup -o tsv
provision static ip with
az network public-ip create --resource-group <MC_K8S_from_above> --name <cluster-PublicIP> --allocation-method static
assign ip to nginx ingress controller
helm install stable/nginx-ingress -namespace kube-system --set controller.service.loadBalancerIP="52.23.23.32" --set controller.replicaCount=2
Run 2019-02
- helm install --name p1 git/helmchart/ --namespace piet --set "env=DEV" --timeout 600
- Run: helm ls --all p1; to check the status of the release
- run: helm del --purge p1; to delete it
- helm status p1
- helm history p1
- helm rollback p1 3; roll back to version 3
- helm rollback; to last successfully DEPLOYED revision
- helm upgrade --debug --dry-run
- helm upgrade --install
Tricks
- Use checksum of config map to change app annotation and force a new version to be deployed for apps that do not pick up new configs.
hooks
annotation: "helm.sh/hook": " "
HELM install/uninstall
Please look for official current documentation
helmins() { kubectl -n kube-system create serviceaccount tiller kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller helm init --service-account=tiller } helmdel() { kubectl -n kube-system delete deployment tiller-deploy kubectl delete clusterrolebinding tiller kubectl -n kube-system delete serviceaccount tiller }