Skip to main content

Setting up Helm chart for K8s cluster

Helm is a powerful and flexible package-management and operations tool for Kubernetes.

There are two parts to Helm: The Helm client (helm) and the Helm server (Tiller).

https://helm.sh/docs/using_helm/#installing-helm

1) ssh to your k8s master node

2) Download the helm client from the url : https://github.com/helm/helm/releases

Linux amd64 (checksum)
# wget https://get.helm.sh/helm-v2.15.1-linux-amd64.tar.gz

# tar -xzvf helm-v2.15.1-linux-amd64.tar.gz
# mv linux-amd64/helm /usr/local/bin
# which helm
# helm version --client --short

3) Now we need to initialize the helm server (Tiller) in the k8s cluster.

For this,

 > first we need to create a serviceaccount called tiller in the kube-system namespace.
 > then create a clusterrolebinding called tiller and attach the clusterrole cluster-admin to the serviceaccount tiller.

 # kubectl -n kube-system create serviceaccount tiller
 # kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller

ubuntu@namenode:~$ kubectl get -n kube-system serviceaccount tiller
NAME     SECRETS   AGE
tiller   1         35m

ubuntu@namenode:~$ kubectl get -n kube-system clusterrole cluster-admin
NAME            AGE
cluster-admin   7d23h

 > Finally initialize the helm with the below command:

 # helm init --service-account tiller


ubuntu@namenode:~$ kubectl -n kube-system get clusterrolebinding,deploy,serviceaccount,pods,replicasets | grep tiller
clusterrolebinding.rbac.authorization.k8s.io/tiller           147m
deployment.apps/tiller-deploy   1/1     1            1           146m
serviceaccount/tiller                               1         51m
pod/tiller-deploy-7b875fbf86-gqn9g                  1/1     Running   0          41m
replicaset.apps/tiller-deploy-7b875fbf86   1         1         1       146m


ubuntu@namenode:~$ helm version --short
Client: v2.15.1+gcf1de4f
Server: v2.15.1+gcf1de4f

#############################################

Now start installing the packages that you want in the k8s cluster.

ubuntu@namenode:~$ helm search  traefik
NAME          CHART VERSION APP VERSION DESCRIPTION                                               
stable/traefik 1.78.4        1.7.14      A Traefik based Kubernetes ingress controller with Let's ...

###########################################

ubuntu@namenode:~$ helm search nginx-ingress
NAME                CHART VERSION APP VERSION DESCRIPTION                                               
stable/nginx-ingress 1.24.4        0.26.1      An nginx Ingress controller that uses ConfigMap to store ...
stable/nginx-lego    0.3.1                    Chart for nginx-ingress-controller and kube-lego

###########################################

ubuntu@namenode:~$ helm search jenkins
NAME          CHART VERSION APP VERSION DESCRIPTION                                               
stable/jenkins 1.7.9        lts        Open source continuous integration server. It supports mu...

###########################################

ubuntu@namenode:~$ helm inspect stable/jenkins | head
apiVersion: v1
appVersion: lts
description: Open source continuous integration server. It supports multiple SCM tools
  including CVS, Subversion and Git. It can execute Apache Ant and Apache Maven-based
  projects as well as arbitrary scripts.
home: https://jenkins.io/
icon: https://wiki.jenkins-ci.org/download/attachments/2916393/logo.png
maintainers:
- email: lachlan.evenson@microsoft.com
  name: lachie83
ubuntu@namenode:~$


That is all cheers ;-)

Comments

Popular posts from this blog

Password reset too simplistic/systematic issue

Some time when we try to reset the password of our user in linux it will show as simple and systematic as below: BAD PASSWORD: it is too simplistic/systematic no matter how hard password you give it will show the same. Solution: ######### Check if your password is Ok with the below command, jino@ndz~$ echo 'D7y8HK#56r89lj&8*&^%&^%#56rlKJ!789l' | cracklib-check D7y8HK#56r89lj&8*&^%&^%#56rlKJ!789l: it is too simplistic/systematic Now Create a password with the below command : jino@ndz~$ echo $(tr -dc '[:graph:]' 7\xi%!W[y*S}g-H7W~gbEB4cv,9:E:K; You can see that this password will be ok with the cracklib-check. jino@ndz~$ echo '7\xi%!W[y*S}g-H7W~gbEB4cv,9:E:K;' | cracklib-check                 7\xi%!W[y*S}g-H7W~gbEB4cv,9:E:K;: OK Thats all, Thanks.

Nginx Ingress controller setup in K8S MultiNode Cluster with HA-Proxy as External LB

https://github.com/nginxinc/kubernetes-ingress/blob/master/docs/installation.md Pre-requisites: ############### >> K8s cluster setup with 1 Master and 2 Worker nodes. >> Deployed an application with Deployment name "client-sb" >> Also you need to create an HA-proxy server by spinning an Ec2 instance. After login the Ha-proxy server. # yum install haproxy # vi /etc/haproxy/haproxy.cfg delete everything after the global and defaults starting from "Main front-end which proxys to the backend" paste the below code in the end of the file: --------------------- frontend http_front   bind *:80   stats uri /haproxy?stats   default_backend http_back backend http_back   balance roundrobin   server kube 10.0.1.14:80   server kube 10.0.1.12:80 --------------------- # systemctl status haproxy # systemctl enable haproxy # systemctl start haproxy 1. Create a Namespace, a SA, the Default Secret, the Customization Confi...

Setting /etc/hosts entries during the initial deployment of an Application using k8s yaml file

Some times we have to enter specific hosts file entries to the container running inside the POD of a kubernetes deployment during the initial deployment stage itself. If these entries are not in place, the application env variables mentioned in the yaml file , as hostnames , will not resolve to the IP address and the application will not start properly. So to make sure the /etc/hosts file entries are already there after the spin up of the POD you can add the below entries in your yaml file. cat > api-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: spec:   template:     metadata:     spec:       volumes:       containers:       - image: registryserver.jinojoseph.com:5000/jinojosephimage:v1.13         lifecycle:           postStart:             exec:               command:...