jkaninda / goma-gateway

Goma Gateway - Lightweight High-Performance Declarative API Gateway Management with middlewares
https://jkaninda.github.io/goma-gateway/
Apache License 2.0
28 stars 5 forks source link
api-gateway api-management go-proxy microservices proxies

Goma Gateway - simple Lightweight High-Performance API Gateway Management.

   _____                       
  / ____|                      
 | |  __  ___  _ __ ___   __ _ 
 | | |_ |/ _ \| '_ ` _ \ / _` |
 | |__| | (_) | | | | | | (_| |
  \_____|\___/|_| |_| |_|\__,_|

Goma Gateway is a lightweight High-Performance API Gateway Management.

Tests GitHub Release Go Report Card Go Reference Docker Image Size (latest by date) Docker Pulls

Goma logo

Architecture:

Goma archi

Links:

Documentation

Features

It's designed to be straightforward and efficient, offering a rich set of features, including:

Core Features

Security and Control

Monitoring and Performance

Configuration and Flexibility

Define your routes and middleware directly in code for seamless configuration.


Usage

1. Initialize configuration

You can generate the configuration file using config init --output /etc/goma/config.yml command.

The default configuration is automatically generated if any configuration file is not provided, and is available at /etc/goma/goma.yml

docker run --rm  --name goma-gateway \
 -v "${PWD}/config:/etc/goma/" \
 jkaninda/goma-gateway config init --output /etc/goma/goma.yml

2. Check configuration

docker run --rm --name goma-gateway \
 -v "${PWD}/config:/etc/goma/" \
 -p 8080:8080 \
 jkaninda/goma-gateway config check --config /etc/goma/config.yml

3. Run server

docker run --rm --name goma-gateway \
 -v "${PWD}/config:/etc/goma/" \
 -p 8080:8080 \
 jkaninda/goma-gateway server

4. Start server with a custom config

docker run --rm --name goma-gateway \
 -v "${PWD}/config:/etc/goma/" \
 -p 8080:8080 \
 -p 8443:8443 \
 jkaninda/goma-gateway server --config /etc/goma/config.yml

4. Healthcheck

5. Simple deployment in docker compose file

services:
  goma-gateway:
    image: jkaninda/goma-gateway
    command: server
    ports:
      - "8080:8080"
    volumes:
      - ./config:/etc/goma/

6. Kubernetes deployment

Supported Systems

Please download the binary from the release page.

Init configs:

./goma config init --output config.yml

To run

./goma server --config config.yml

Deployment

Contributing

The Goma Gateway project welcomes all contributors. We appreciate your help!

Give a Star! ⭐

If you like or are using Goma Gateway, please give it a star. Thanks!

Please share.

License

This project is licensed under the Apache 2.0 License. See the LICENSE file for details.

Copyright

Copyright (c) 2024 Jonas Kaninda