Rocket Chat on kubernets

Abhi Garg


Want to know how you can build slacks such as online chat with rocket chat for deployment over containers via Kubernetes and Docker? Simply read through and know everything about it.

Before getting started, you should know a bit about the premise. The blog is assuming a situation where rocket chat app is used on the OpenStack for on-premise deployment. Therefore, the existing on-premise cloud framework is migrated to the containers based on Kubernetes and docker.

Docker can be summed as an open platform for sysadmins and developers for building, shipping, and running distributed apps on data center VMs, cloud, or laptops.

Similarly, Kubernetes is deemed to be the container infrastructure layer on the top of the container engine/runtime for deploying and managing containers efficiently.

What Do You Need for Deploying Rocket Chat on Kubernetes?

The deployment process requires:

  • Kubectl
  • Kubernetes
  • Shared Storage like Ceph FS, GlusterFS, AzureDisk AWS EBS, etc.
  • Dockerfile
  • Rocket Chat App
  • Container-Registry

You can use Kubernetes to deploy, scale, and manage the arrangement of the containerized apps. Kubernetes cluster can be used for testing while minikube can also be used.

In case of shared storage, the blog uses GlusterFS, an efficient network data system.

You can call Rocket.Chat a web-focused chat serve, written in the JavaScript with the stack framework of Meteor.

Also, Dockerfile can be summed up as a text file containing every command/information needed for the app configuration within the container.

Registry is deemed to be a digital storage for the container images that also allows the distribution of the images.

Kubectl is one of the best command line tools used for remotely managing Kubernetes cluster.

In vase you utilize MongoDB and Rocket Chat, then steps 1-6 can be skipped.

Easy Steps to Deploy Rocket Chat on the Kubernetes

1. Creating a custom image for the Rocket Chat’s container

First, you need to make a file named Dockerfile as the image for Rocket Chat container.

Our app would be based on the NodeJS, therefore, we are using NodeJS docker’s image from the docker hub as the base image. Afterwards, we use codes for the container and install every dependency of app to the container.

2. Building image for rocket chat docker

3. Creating image for MongoDB Container

Prepare a new folder by the name of MongoDB.

Our image contains Ubuntu as base image for using the official MongoDB’s docker image. Due to compatibility purposes, the dockerfile is created for the 3.0 version of MongoDB.

Now, we mount the volume named /data/db for the container’s persistent storage.

After that, the 27017 port is exposed for the incoming MongoDB server requests.

Now, the server is started in the dforeground mode for seeing the logs within the container stdout.

4. Creating image for MongoDB Docker

5. Add a container registry to the docker daemon

In case the users are not utilizing docker hub for storing images, then you must add a container registry with local Kubernetes nodes and docker daemon.

Numerous ways can be availed for doing so like:

For verifying the container registry’s addition to the local docker, you have to use the given steps:

$ docker info

Now you will get registries like:

Insecure Registries:

<your container registry name>

6. Shifting PostgreSQL image to the container registry

Now you have to upload the image to any container registry such as:

  • Google Container Registry
  • Private Docker Hub
  • Docker Store

In case the authentication is enable, you have to first login and only then download or upload images from the registry.

For logging in, follow the given command:

$ docker login <name of your container registry>

Username : xxxx

Password: xxxxx

If there is AWS EXR, then you’ll receive username, password, and registry url from the respective cloud provider launched at the registry.

Here’s the shell script to add the aws credentials:

Now tag the images and move them to anywhere on the posted registry.

For tagging the images:

For pushing the images:

7. Creating Stroage Volume with GluterFS

First you have to make volume within the GluterFS. Add DNS or IP address in place of node2 and node1 as mentioned in the GluterFS installation guide.

8. Deploying MongoDB over Kubernetes

You need:

Docker Image created in the 4th step where it was moved to docker registry or docker hub.

Persistent Shared Volume created in the 6th step of GluterFS.

Service and Deployment Files will be created now.

9. Deploying Rocket Chat

You need: 

Docker Image for the rocket chat created in the 2nd step.

Now we will male Service and Deployment files.

Make a file for deployment by the name of rocketchat.deployment.yml.

10. Testing the Database of MongoDB

11.Testing the Rocket Chat App

Launch the Cluster IP with the 3000 port on your web browser for checking whether the app’s functioning or not.

12.Fixing Rocket Chat App Container

Overview the logs of MongoDB pods and rocket chat app.

Check service/pods/containers NameSpace of RocketChat and MongoDB.

Try connecting MongoDB from the local client of Mongo with the clustered IP address.

Overview the network connectivity from the rocket chat to the mongodo pods.

Frequently Asked Questions

Here are a few things to remember to choose a reliable mobile app development partner:
  • Choose a partner that cares about its clients.
  • Never compromise on technology experience and domain expertise.
  • Check out your development partners’ portfolios, customer testimonials, and references.
  • Observe how they approach communication and how much they pay attention to your vision.
  • Ask the right questions to help you choose easily.
Here are a few reasons why India is one of the preferred outsourcing destinations:
  • The average outsourcing charges in India are $18 – $40, which is way more affordable than in developed countries like the USA, $38 – $63.
  • India has a large pool of native-English speakers who’re highly proficient in their work.
  • With an Indian outsourcing partner, you can access 24×7 support and specialized IT talent.
Depending on the complexity of a mobile app, it can take several weeks to several months to develop it. An app like Uber takes around 1200 hours to develop. On the other hand, a dating app like Tinder can be developed in 1000 hours.
Pricing-wise, freelancers appear to be more affordable. However, they offer no accountability for your mobile app. You can’t hold them accountable if the app doesn’t turn out to be as expected. On the other hand, an app development agency takes complete responsibility for your mobile app. Hence, an app development agency is better than a freelancer.

Do you have an exciting mobile app idea in mind?

We can help you to build a mobile app on an affordable budget. Contact us!

    Yes, I agree to the terms and conditions.*

    Leave a Reply

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

    This site uses Akismet to reduce spam. Learn how your comment data is processed.