Awesome
Gasper
<img align="right" width="350px" height="400px" src="./docs/content/assets/logo/gasperlogo.svg">Your Cloud in a Binary
Gasper is an intelligent Platform as a Service (PaaS) used for deploying and managing applications and databases in any cloud topology.
Contents
- Overview
- Features
- Supported Languages
- Supported Databases
- Documentation
- Dependencies
- Download
- Development
- Contributing
- Meet the A-Team
- Contact
Overview
The Dilemma
Imagine you have a couple of Bare Metal Servers and/or Virtual Machines (collectively called nodes) at your disposal. Now you want to deploy a couple of applications/services to these nodes in such a manner so as to not put too much load on a single node.
Naive Approach
Your 1st option is to manually decide which application goes to which node, then use ssh/telnet to manually setup all of your applications in each node one by one.
A Wise Choice
But you are smarter than that, hence you go for the 2nd option which is Kubernetes. You setup Kubernetes in all of your nodes which forms a cluster, and now you can deploy your applications without worrying about load distribution. But Kubernetes requires a lot of configuration for each application(deployments, services, stateful-sets etc) not to mention pipelines for creating the corresponding docker image.
The Ultimatum
Here comes (🥁drumroll please 🥁) Gasper, your 3rd option!<br> Gasper builds and runs applications in docker containers directly from source code instead of docker images. It requires minimal parameters for deploying an application, so minimal that you can count them on fingers in one hand 🤚. Same goes for Gasper provisioned databases. Gone are the days of hard labour (writing configurations).
Features
Fear not because the reduction in complexity doesn't imply the reduction in features. You can rest assured because Gasper has:-
- Worker services for creating/managing databases and applications
- Master service for:-
- Checking the status of worker services
- Intelligently distributing applications/databases among them
- Transferring applications from one worker node to another in case of node failure
- Removing dead worker nodes from the cloud
- REST API interface for the entire ecosystem
- Reverse-proxy service with HTTPS, HTTP/2, Websocket and gRPC support for accessing deployed applications
- DNS service which automatically creates DNS entries for all applications which in turn are resolved inside containers
- SSH service for providing ssh access directly to an application's docker container
- Virtual terminal for interacting with your application's docker container from your browser
- Dynamic addition/removal of nodes and services without configuration changes or restarts
- Compatibility with Linux, Windows, MacOS, FreeBSD and OpenBSD
- All of the above packaged with ❤️ in a single binary
Supported Languages
Gasper currently supports applications of the following types:-
- Static web pages
- PHP
- Python 2
- Python 3
- Node.js
- Golang
- Ruby
It ain't much but it's honest work 🥳
Supported Databases
The following databases are supported by Gasper:-
- MySQL
- MongoDB
It ain't.... (complete the rest yourself)
Documentation
You can find the complete documentation of Gasper at https://gasper-docs.netlify.com/
Dependencies
The following softwares are required for running Gasper:-
Download
Assuming you have the dependencies installed, head over to Gasper's releases page and grab the latest binary according to your operating system and system architecture
Run the downloaded binary with the sample configuration file
$ ./gasper --conf ./config.toml
Development
You need to have Golang 1.13.x or higher installed along with the mentioned dependencies
Open your favourite terminal and perform the following tasks:-
-
Cross-check your golang version.
$ go version go version go1.13.5 darwin/amd64
-
Clone this repository.
$ git clone https://github.com/sdslabs/gasper
-
Go inside the cloned directory and list available makefile commands.
$ cd gasper && make help Gasper: Your cloud in a binary install Install missing dependencies build Build the project binary tools Install development tools release Build release binaries start Start in development mode with hot-reload enabled clean Clean build files fmt Format entire codebase vet Vet entire codebase lint Check codebase for style mistakes test Run tests help Display this help
-
Setup project configuration and make changes if required. The configuration file is well-documented so you won't have a hard time looking around.
$ cp config.sample.toml config.toml
-
Start the development server.
$ make start
Contributing
If you'd like to contribute to this project, refer to the contributing documentation.
Meet the A-Team
- Anish Mukherjee @alphadose
- Vaibhav @vrongmeal
- Supratik Das @supra08
- Karanpreet Singh @karan0299
Contact
If you have a query regarding the product or just want to say hello then feel free to visit chat.sdslabs.co or drop a mail at contact@sdslabs.co.in