DEPLOYING-A-APACHE-HTTPD-WEBSERVER-USING-HELM-ON-AWS.

Let’s begin by understanding ,

Prasantmahato
5 min readMar 23, 2021

--

What is Helm and its uses ?

In simple terms, Helm is a package manager for Kubernetes. Helm is the K8s equivalent of yum or apt. Helm deploys charts, which you can think of as a packaged application.

Charts is a collection of all your versioned, pre-configured application resources which can be deployed as one unit.

Templates are Kubernetes manifest files that describe the resources you want to have on the cluster. Helm uses the Go templating engine by default. Most charts include a file called values.

In this practical ,I have used the values file and would be explaining at last.

Now by a short and crisp description, We know helm is like a package manager for Kubernetes , So I need a cluster to perform helm in action .

So here I used a cluster of Kubernetes with 1 master node and 2 slave node which I launched on top of the AWS .

Let’s get started now …

Firstly I installed helm .

In a helm deployed application, list provides the detail of an application current releases .

As I have not deployed any application yet :

Command Used :

helm list

Second, created a directory named my-chart1 in which I stored Chart yaml file , templates directory and also if required values yaml file, So that it could be easier to make changes if required .

Commands Used :

mkdir /my-chart1

Now, I created Chart.yaml file . Always remember Chart “C” should be in captial as helm only reads the directory which has Chart.yaml file .

Chart.yaml file

There are many options We can use in Chart yaml file below are some of them or Click here .

To make it easier to understand. Think about folder I created is like a package folder in which Charts.yaml file is compulsory .

Now in my Templates directory … As it is a Kubernetes manifest files that describe the resources we want to have on the cluster .As my requirement is to launch a pod with httpd webserver and then expose the pod which has been launched .I created two yaml file one for launching httpd server and another for exposing that server.

One more requirement which comes to my mind is ,We can launch a pod with wordpress then expose the pod and one more pod for the sql database to run at backend .So ,We can create three yaml file one for launching wordpress server second for exposing that server and the third one for sql to launch .

Like this we can make out many used cases very easily .

Simple way to create of yaml we want .
Yaml file for Webserver.
Yaml file for exposing the service

We can see by one command the entire environment has been launched like, we click a package manager and the whole thing is launched .

Command Used :

helm install <name of the app> <name of the workspace>

Installing the env in one go

I can confirm that my service is exposed by looking below:

Commands Used :

kubectl get services

kubectl get nodes

service
Nodes

Helm is a very important and beneficial tool which now top industries also use . It reduces time of setup the same environment again and again .

Command Used :

helm list

I can confirm my httpd web Server is exposed .

In the world of automation ,We always need to change the values every now and then .

What can we do to overcome this problem ?

I can create a values.yaml file in which I stored all the values like we do in programming language , create a variable and a value to it . Now this process makes more simpler for the non technical guy to manage rather than do changes on the main yaml file .

Parsing the variable in main yaml file
Parsing the variable in main yaml file

The simplest way to manage things .

Open for any query and Suggestions

Thankyou

--

--