2ee6d89fb45ebff495a0e8d08ea90e55d642b3f3
Goma Gateway - simple lightweight API Gateway Management.
_____
/ ____|
| | __ ___ _ __ ___ __ _
| | |_ |/ _ \| '_ ` _ \ / _` |
| |__| | (_) | | | | | | (_| |
\_____|\___/|_| |_| |_|\__,_|
Goma Gateway is a lightweight API Gateway Management.
Architecture:
Links:
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
- JWT
- Rate limiting, In-Memory client IP based
- Limit HTTP methods allowed for a particular route.
Todo:
- Blocklist IP address middleware
- Distributed Rate Limiting for In-Memory client IP based across multiple instances using Redis
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
Copyright (c) 2024 Jonas Kaninda
Description
Goma Gateway - simple Lightweight High-Performance Declarative API Gateway Management.
Languages
Go
99.2%
Dockerfile
0.8%