Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sdslabs/gasper
Your Cloud in a Binary
https://github.com/sdslabs/gasper
application-deployment binary cloud database-deployment dns-server docker gasper go golang master-slave-architecture microservices paas reverse-proxy-server self-managed ssh-bridge ssh-server
Last synced: 3 days ago
JSON representation
Your Cloud in a Binary
- Host: GitHub
- URL: https://github.com/sdslabs/gasper
- Owner: sdslabs
- License: mit
- Created: 2018-08-25T23:09:51.000Z (over 6 years ago)
- Default Branch: develop
- Last Pushed: 2024-02-07T07:58:52.000Z (12 months ago)
- Last Synced: 2024-04-09T22:03:23.404Z (10 months ago)
- Topics: application-deployment, binary, cloud, database-deployment, dns-server, docker, gasper, go, golang, master-slave-architecture, microservices, paas, reverse-proxy-server, self-managed, ssh-bridge, ssh-server
- Language: Go
- Homepage:
- Size: 19.9 MB
- Stars: 414
- Watchers: 22
- Forks: 25
- Open Issues: 41
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-starred - sdslabs/gasper - Your Cloud in a Binary (golang)
README
# Gasper
> Your Cloud in a Binary
[![Build Status](https://travis-ci.org/sdslabs/gasper.svg?branch=develop)](https://travis-ci.org/sdslabs/gasper)
[![Docs](https://img.shields.io/badge/docs-current-brightgreen.svg)](https://gasper-docs.netlify.com/)
[![Go Report Card](https://goreportcard.com/badge/github.com/sdslabs/gasper)](https://goreportcard.com/report/github.com/sdslabs/gasper)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/sdslabs/gasper/blob/develop/LICENSE.md)Gasper is an intelligent Platform as a Service (PaaS) used for deploying and managing applications and databases in any cloud topology.
## Contents
* [Overview](#overview)
* [Features](#features)
* [Supported Languages](#supported-languages)
* [Supported Databases](#supported-databases)
* [Documentation](#documentation)
* [Dependencies](#dependencies)
* [Download](#download)
* [Development](#development)
* [Contributing](#contributing)
* [Meet the A-Team](#meet-the-a-team)
* [Contact](#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](https://kubernetes.io/). 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!
Gasper builds and runs applications in docker containers **directly from source code**. You no longer need to create application specific docker images and build pipelines, let Gasper do the heavylifting for you π.
Gasper 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
* RustIt ain't much but it's honest work π₯³
## Supported Databases
The following databases are supported by Gasper:-
* MySQL
* MongoDB
* PostgreSQL
* RedisIt ain't.... (complete the rest yourself)
## Documentation
You can find the complete documentation of Gasper at [https://gasper-docs.netlify.app/](https://gasper-docs.netlify.app/)
## Dependencies
The only thing you need for running Gasper is [Docker](https://www.docker.com/). Here are the installation guides for:-
* [Linux](https://runnable.com/docker/install-docker-on-linux)
* [MacOS](https://docs.docker.com/docker-for-mac/install/)
* [Windows](https://docs.docker.com/docker-for-windows/install/)If you perhaps need a higher degree of control over your entire cloud then you may setup [MongoDB](https://www.mongodb.com/download-center/community) and [Redis](https://redis.io/download) separately within your infrastructure and make the necessary changes in the `mongo` and `redis` sections of `config.toml`.
## Download
Assuming you have the [dependencies](#dependencies) installed, head over to Gasper's [releases](https://github.com/sdslabs/gasper/releases) page and grab the latest binary according to your operating system and system architecture
Run the downloaded binary with the [sample configuration file](./config.sample.toml)
```bash
$ ./gasper --conf ./config.toml
```## Development
You need to have [Golang 1.13.x](https://golang.org/dl/) or higher installed along with the mentioned [dependencies](#dependencies)
Open your favourite terminal and perform the following tasks:-
1. Cross-check your golang version.
```bash
$ go version
go version go1.13.5 darwin/amd64
```2. Clone this repository.
```bash
$ git clone https://github.com/sdslabs/gasper
```3. Go inside the cloned directory and list available *makefile* commands.
```bash
$ cd gasper && make helpGasper: 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
```4. Setup project configuration and make changes if required. The configuration file is well-documented so you
won't have a hard time looking around.```bash
$ cp config.sample.toml config.toml
```5. Start the development server.
```bash
$ make start
```## Contributing
If you'd like to contribute to this project, refer to the [contributing documentation](./CONTRIBUTING.md).
## Meet the A-Team
* Anish Mukherjee [@alphadose](https://github.com/alphadose)
* Vaibhav [@vrongmeal](https://github.com/vrongmeal)
* Supratik Das [@supra08](https://github.com/supra08)
* Karanpreet Singh [@karan0299](https://github.com/karan0299)
* Mohit Sharma [@Scar26](https://github.com/Scar26)Gasper Logo: Leshna Balara [@leshnabalara](https://github.com/leshnabalara)
You can find the entire list of contributors [here](https://github.com/sdslabs/gasper/graphs/contributors)
Created with π by [SDSLabs](https://github.com/sdslabs)
## Contact
If you have a query regarding the product or just want to say hello then feel free to visit
[chat.sdslabs.co](http://chat.sdslabs.co/) or drop a mail at [[email protected]](mailto:[email protected])