feat: add enable, disable route health check access link

This commit is contained in:
2024-11-04 06:52:41 +01:00
parent 4601377c4b
commit e81de80654
6 changed files with 26 additions and 20 deletions

View File

@@ -131,6 +131,8 @@ gateway:
rateLimiter: 0
accessLog: "/dev/Stdout"
errorLog: "/dev/stderr"
## Enable and disable routes healthc check
disableHealthCheckStatus: false
## Returns backend route healthcheck errors
disableRouteHealthCheckError: false
# Disable display routes on start

View File

@@ -66,6 +66,8 @@ gateway:
rateLimiter: 0
accessLog: "/dev/Stdout"
errorLog: "/dev/stderr"
## Enable and disable routes healthc check
disableHealthCheckStatus: false
## Returns backend route healthcheck errors
disableRouteHealthCheckError: false
# Disable display routes on start
@@ -97,7 +99,7 @@ gateway:
path: /public
## Rewrite a request path
# e.g rewrite: /store to /
rewrite: /healthz
rewrite: /
destination: https://example.com
#DisableHeaderXForward Disable X-forwarded header.
# [X-Forwarded-Host, X-Forwarded-For, Host, Scheme ]
@@ -121,26 +123,18 @@ gateway:
##### Define route middlewares from middlewares names
## The name must be unique
## List of middleware name
middlewares:
- api-forbidden-paths
- basic-auth
# Example of a route | 2
- name: Authentication service
path: /auth
rewrite: /
destination: 'http://security-service:8080'
healthCheck: /internal/health/ready
cors: {}
middlewares:
- api-forbidden-paths
# Example of a route | 3
- name: Basic auth
path: /protected
rewrite: /
destination: 'http://notification-service:8080'
destination: https://example.com
healthCheck:
cors: {}
middlewares: []
middlewares:
- api-forbidden-paths
- basic-auth
#Defines proxy middlewares
# middleware name must be unique
@@ -181,17 +175,17 @@ middlewares:
#
# Add header to the next request from AuthRequest header, depending on your requirements
# Key is AuthRequest's response header Key, and value is Request's header Key
# In case you want to get headers from the Authentication service and inject them into the next request's headers
# In case you want to get headers from the authentication service and inject them into the next request headers.
headers:
userId: X-Auth-UserId
userCountryId: X-Auth-UserCountryId
# In case you want to get headers from the Authentication service and inject them to the next request's params
# In case you want to get headers from the Authentication service and inject them to the next request params.
params:
userCountryId: countryId
# The server will return 404
# The server will return 403
- name: api-forbidden-paths
type: access
## Forbidden paths
## prevents access paths
paths:
- /swagger-ui/*
- /v2/swagger-ui/*

View File

@@ -14,6 +14,8 @@ gateway:
rateLimiter: 0
accessLog: "/dev/Stdout"
errorLog: "/dev/stderr"
## Enable and disable routes healthc check
disableHealthCheckStatus: false
## Returns backend route healthcheck errors
disableRouteHealthCheckError: false
# Disable display routes on start

View File

@@ -152,6 +152,8 @@ type Gateway struct {
RateLimiter int `yaml:"rateLimiter" env:"GOMA_RATE_LIMITER, overwrite"`
AccessLog string `yaml:"accessLog" env:"GOMA_ACCESS_LOG, overwrite"`
ErrorLog string `yaml:"errorLog" env:"GOMA_ERROR_LOG=, overwrite"`
// DisableHealthCheckStatus enable and disable routes health check
DisableHealthCheckStatus bool `yaml:"disableHealthCheckStatus"`
// DisableRouteHealthCheckError allows enabling and disabling backend healthcheck errors
DisableRouteHealthCheckError bool `yaml:"disableRouteHealthCheckError"`
//Disable allows enabling and disabling displaying routes on start
@@ -288,6 +290,7 @@ func initConfig(configFile string) {
},
{
Name: "Hostname example",
Host: "http://example.localhost",
Path: "/",
Destination: "https://example.com",
Rewrite: "/",

View File

@@ -40,7 +40,7 @@ func TestMiddleware(t *testing.T) {
},
},
{
Name: "forbidden path acces",
Name: "forbidden path access",
Type: "access",
Paths: []string{"/", "/admin"},
Rule: BasicRuleMiddleware{

View File

@@ -23,6 +23,7 @@ import (
"time"
)
// Initialize the routes
func (gatewayServer GatewayServer) Initialize() *mux.Router {
gateway := gatewayServer.gateway
middlewares := gatewayServer.middlewares
@@ -31,9 +32,13 @@ func (gatewayServer GatewayServer) Initialize() *mux.Router {
DisableRouteHealthCheckError: gateway.DisableRouteHealthCheckError,
Routes: gateway.Routes,
}
// Define the health check route
r.HandleFunc("/healthz", heath.HealthCheckHandler).Methods("GET")
// Routes health check
if !gateway.DisableHealthCheckStatus {
r.HandleFunc("/healthz", heath.HealthCheckHandler).Methods("GET")
}
// Readiness
r.HandleFunc("/readyz", heath.HealthReadyHandler).Methods("GET")
if gateway.RateLimiter != 0 {
//rateLimiter := middleware.NewRateLimiter(gateway.RateLimiter, time.Minute)
limiter := middleware.NewRateLimiterWindow(gateway.RateLimiter, time.Minute) // requests per minute