2024-11-18 10:05:08 +01:00
2024-11-15 09:29:57 +01:00
2024-11-15 14:31:48 +01:00
2024-11-18 10:05:08 +01:00
2024-11-10 17:06:58 +01:00
2024-11-09 05:16:52 +01:00
2024-10-27 07:33:41 +01:00
2024-11-03 06:50:21 +01:00
2024-11-15 18:46:16 +01:00

Goma Gateway - simple lightweight API Gateway Management.

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

Goma Gateway is a lightweight API Gateway Management.

Build Test Go Report Card Go Reference Docker Image Size (latest by date)

Goma logo

Architecture:

Goma archi

Documentation is found at https://jkaninda.github.io/goma-gateway

Features

It's designed to be straightforward and efficient, offering features, like:

  • RESTFull API Gateway management
  • Domain/host based request routing
  • Multi domain request routing
  • Reverse Proxy
  • Websocket Proxy
  • Cross-Origin Resource Sharing (CORS)
  • Custom Headers
  • Backend Errors interceptor
  • Logging
  • Metrics
  • Load Balancing, round-robin algorithm
  • Support TLS
  • Block common exploits middleware
    • Patterns to detect SQL injection attempts
    • Pattern to detect simple XSS attempts
  • Authentication middleware
    • JWT client authorization based on the result of a request
    • Basic-Auth
    • OAuth
  • Rate limiting, In-Memory client IP based
  • Limit HTTP methods allowed for a particular route.
  • Distributed rate limiting, client IP based using Redis

Todo:

  • Blocklist IP address middleware

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

  • Goma Gateway health check: /health/live
  • Routes health check: /health/routes

5. Simple deployment in docker compose file

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

Supported Systems

  • Linux
  • MacOS
  • Windows

Please download the binary from the release page.

Init configs:

./goma config init --output config.yml

To run

./goma server --config config.yml

Deployment

  • Docker
  • Kubernetes

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 (c) 2024 Jonas Kaninda

Description
Goma Gateway - simple Lightweight High-Performance Declarative API Gateway Management.
Readme 1.5 MiB
Languages
Go 99.2%
Dockerfile 0.8%